KR20200056898A - 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법 - Google Patents

프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법 Download PDF

Info

Publication number
KR20200056898A
KR20200056898A KR1020190020053A KR20190020053A KR20200056898A KR 20200056898 A KR20200056898 A KR 20200056898A KR 1020190020053 A KR1020190020053 A KR 1020190020053A KR 20190020053 A KR20190020053 A KR 20190020053A KR 20200056898 A KR20200056898 A KR 20200056898A
Authority
KR
South Korea
Prior art keywords
bit
operands
input
addition
sub
Prior art date
Application number
KR1020190020053A
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 삼성전자주식회사
Priority to US16/683,626 priority Critical patent/US20200159495A1/en
Publication of KR20200056898A publication Critical patent/KR20200056898A/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/50Adding; Subtracting
    • 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/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit

Landscapes

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

Abstract

프로세싱 장치에서 덧셈 연산을 처리하는 방법은, n 비트 정밀도를 갖는 입력 오퍼랜드들로부터 서브 오퍼랜드들을 획득하고, 덧셈기들을 이용하여 서브 오퍼랜드들 간의 덧셈 연산들을 병렬적으로 수행함으로써 중간 덧셈 결과들을 획득하고, 획득된 중간 덧셈 결과들이 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하고, 비트-쉬프팅된 중간 덧셈 결과들에 기초하여 입력 오퍼랜드들의 덧셈 연산의 최종 덧셈 결과를 출력한다.

Description

프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법 {Processing apparatus and method for processing add operation thereof}
프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법에 관하고, 구체적으로 뉴럴 네트워크를 처리하는 뉴럴 프로세서에서 뉴럴 네트워크의 파라미터들의 덧셈 연산을 처리하는 방법에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대하여 덧셈 연산과 곱셈 연산 등을 수행함으로써 많은 양의 산술 연산을 처리한다. 따라서, 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 처리하고 분석하여, 원하는 정보를 추출하기 위해서는 뉴럴 네트워크에 관한 덧셈 연산 또는 곱셈 연산과 같은 산술 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법을 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 프로세싱 장치에서 덧셈 연산을 처리하는 방법은, 상기 프로세싱 장치에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하는 단계, 상기 n은 자연수임; 상기 프로세싱 장치에 구비된 복수의 덧셈기들을 이용하여 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 간의 덧셈 연산들을 병렬적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하는 단계; 상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하는 단계; 및 상기 비트-쉬프팅된 중간 덧셈 결과들에 대한 덧셈 연산을 수행함으로써, 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력하는 단계를 포함한다.
다른 측면에 따르면, 프로세싱 장치에서 덧셈 연산을 처리하는 방법은, 상기 프로세싱 장치에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하는 단계, 상기 n은 자연수임; 상기 프로세싱 장치에 구비된 덧셈기를 이용하여 상기 비트 섹션들의 순서에 따라 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 및 이전 사이클에서 수행된 덧셈 연산에 의해 출력된 캐리의 덧셈 연산을 복수의 사이클들 동안 반복적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하는 단계; 상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하는 단계; 및 상기 비트-쉬프팅된 중간 덧셈 결과들에 기초하여 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력하는 단계를 포함한다.
또 다른 측면에 따르면, 프로세싱 장치는, 메모리; 및 덧셈 연산을 처리하는 프로세싱 유닛을 포함하고, 상기 프로세싱 유닛은, 상기 프로세싱 유닛에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하고, 상기 n은 자연수이고, 상기 프로세싱 유닛에 구비된 복수의 덧셈기들을 이용하여 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 간의 덧셈 연산들을 병렬적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하고, 상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하고, 상기 비트-쉬프팅된 중간 덧셈 결과들에 대한 덧셈 연산을 수행함으로써, 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력한다.
또 다른 측면에 따르면, 프로세싱 장치는, 메모리; 및 덧셈 연산을 처리하는 프로세싱 유닛을 포함하고, 상기 프로세싱 유닛은, 상기 프로세싱 유닛에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하고, 상기 n은 자연수이고, 상기 프로세싱 유닛에 구비된 덧셈기를 이용하여 상기 비트 섹션들의 순서에 따라 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 및 이전 사이클에서 수행된 덧셈 연산에 의해 출력된 캐리의 덧셈 연산을 복수의 사이클들 동안 반복적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하고, 상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하고, 상기 비트-쉬프팅된 중간 덧셈 결과들에 기초하여 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2a 및 도 2b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 프로세싱 장치의 하드웨어 구성을 도시한 블록도이다.
도 4a는 일 실시예에 따른 덧셈기를 설명하기 위한 도면이다.
도 4b는 일 실시예에 따른 덧셈기의 입력 정밀도와 출력 정밀도를 설명하기 위한 도면이다.
도 5는 일 실시예에 따라 덧셈 연산을 위한 입력 오퍼랜드들로부터 서브 오퍼랜드들을 획득하는 것을 설명하기 위한 도면이다.
도 6은 일 실시예에 따라 병렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 것을 설명하기 위한 도면이다.
도 7은 일 실시예에 따라 도 6의 병렬 덧셈 방식에 의해 획득된 중간 덧셈 결과들을 이용하여 입력 오퍼랜드들 간의 최종 덧셈 연산 결과를 획득하는 것을 설명하기 위한 도면이다.
도 8은 일 실시예에 따라 직렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 것을 설명하기 위한 도면이다.
도 9는 일 실시예에 따라 병렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 방법의 흐름도이다.
도 10은 일 실시예에 따라 직렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 방법의 흐름도이다.
도 11은 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 12는 일 실시예에 따른 프로세싱 장치에서 덧셈 연산을 처리하는 방법의 흐름도이다.
도 13은 일 실시예에 따른 프로세싱 장치에서 덧셈 연산을 처리하는 방법의 흐름도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 실시예들에서 사용되는 “구성된다” 또는 “포함한다” 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
아래에서는 첨부한 도면을 참고하여 실시예에 대하여 상세히 설명한다. 그러나 실시예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 1을 참고하면, 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1에서는 뉴럴 네트워크(1)의 예시에 해당하는 컨볼루션 뉴럴 네트워크에서 일부의 컨볼루션 레이어가 도시되었지만, 컨볼루션 뉴럴 네트워크는 도시된 컨볼루션 레이어 외에도, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등을 더 포함할 수 있다.
뉴럴 네트워크(1)는 입력 이미지, 피처맵들(feature maps) 및 출력을 포함하는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(1)에서 입력 이미지는 커널(kernel)이라 불리는 필터와의 컨볼루션 연산이 수행되고, 그 결과 피처맵들이 출력된다. 이때 생성된 출력 피처맵들은 입력 피처맵들로서 다시 커널과의 컨볼루션 연산이 수행되고, 새로운 피처맵들이 출력된다. 이와 같은 컨볼루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(1)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 1의 뉴럴 네트워크(1)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널과의 컨볼루션 연산을 통해 20x20 픽셀 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 20x20 피처맵들은 커널과의 반복적인 컨볼루션 연산을 통해 크기가 줄어들면서, 최종적으로는 1x1 픽셀 크기의 특징들이 출력될 수 있다. 뉴럴 네트워크(1)는 여러 레이어들에서 컨볼루션 연산 및 서브-샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 2a 및 도 2b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면이다.
도 2a의 예시에서, 입력 피처맵(210)은 6x6 픽셀 크기이고, 커널(220)은 3x3 픽셀 크기이고, 출력 피처맵(230)은 4x4 픽셀 크기인 것으로 가정하나, 이에 제한되지 않고 뉴럴 네트워크는 다양한 크기의 피처맵들 및 커널들로 구현될 수 있다. 또한, 입력 피처맵(210), 커널(220) 및 출력 피처맵(230)에 정의된 값들은 모두 예시적인 값들일 뿐이고, 본 실시예들은 이에 제한되지 않는다.
커널(220)은 입력 피처맵(210)에서 3x3 픽셀 크기의 윈도우(또는 타일) 단위로 슬라이딩하면서 컨볼루션 연산을 수행한다. 컨볼루션 연산은 입력 피처맵(210)의 어느 윈도우의 각 픽셀 값 및 커널(220)에서 대응 위치의 각 엘리먼트의 웨이트 간의 곱셈을 하여 획득된 값들을 모두 합산하여, 출력 피처맵(230)의 각 픽셀 값을 구하는 연산을 의미한다. 구체적으로, 커널(220)은 먼저 입력 피처맵(210)의 제1윈도우(211)와 컨볼루션 연산을 수행한다. 즉, 제1윈도우(211)의 각 픽셀 값 1, 2, 3, 4, 5, 6, 7, 8, 9는 각각 커널(220)의 각 엘리먼트의 웨이트 -1, -3, +4, +7, -2, -1, -5, +3, +1과 각각 곱해지고, 그 결과로서 -1, -6, 12, 28, -10, -6, -35, 24, 9가 획득된다. 다음으로, 획득된 값들 -1, -6, 12, 28, -10, -6, -35, 24, 9를 모두 더한 결과인 15가 계산되고, 출력 피처맵(230)의 1행1열의 픽셀 값(231)은 15로 결정된다. 여기서, 출력 피처맵(230)의 1행1열의 픽셀 값(231)은 제1윈도우(211)에 대응된다. 마찬가지 방식으로, 입력 피처맵(210)의 제2윈도우(212)와 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 1행2열의 픽셀 값(232)인 4가 결정된다. 최종적으로, 입력 피처맵(210)의 마지막 윈도우인 제16윈도우(213)와 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 4행4열의 픽셀 값(233)인 11이 결정된다.
즉, 하나의 입력 피처맵(210)과 하나의 커널(220) 간의 컨볼루션 연산은 입력 피처맵(210) 및 원본 커널(220)에서 서로 대응하는 각 엘리먼트의 값들에 대한 곱셈 연산 및 곱셈 결과들의 덧셈 연산을 반복적으로 수행함으로써 처리될 수 있고, 컨볼루션 연산의 결과로서 출력 피처맵(230)이 생성된다. 따라서, 컨볼루션 연산이 수행되기 위해서는 곱셈 연산을 수행하기 위한 곱셈기 회로 및 덧셈 연산을 수행하기 위한 덧셈기(adder) 회로가 구비될 필요가 있다.
한편, 도 2a에서는 2차원 컨볼루션 연산에 대하여 설명되었으나, 컨볼루션 연산은 복수의 채널들의 입력 피처맵들, 커널들, 출력 피처맵들이 존재하는 3차원 컨볼루션 연산에 해당될 수 있다. 이에 대해서는 도 2b를 참고하여 설명하도록 한다.
도 2b를 참고하면, 입력 피처맵들(201)은 X개의 채널들이 존재하고, 각 채널의 입력 피처맵은 H행 W열의 크기를 가질 수 있다 (X, W, H는 자연수). 커널들(202) 각각은 R행 S열의 크기를 갖고, 커널들(202)은 입력 피처맵들(201)의 채널 수(X) 및 출력 피처맵들(203)의 채널 수(Y)에 대응하는 개수의 채널들을 가질 수 있다 (R, S, Y는 자연수). 출력 피처맵들(203)은 입력 피처맵들(201)과 커널들(202) 간의 3차원 컨볼루션 연산을 통해 생성되고, 컨볼루션 연산에 따라 Y개의 채널들이 존재할 수 있다.
하나의 입력 피처맵과 하나의 커널 간의 컨볼루션 연산을 통해 출력 피처맵이 생성되는 과정은 앞서 도 2a에서 설명된 바와 같으며, 도 2a에서 설명된 2차원 컨볼루션 연산이 전체 채널들의 입력 피처맵들(201)과 전체 채널들의 커널들(202) 간에 반복적으로 수행됨으로써, 전체 채널들의 출력 피처맵들(203)이 생성될 수 있다. 따라서, 실제로 뉴럴 네트워크의 컨볼루션 연산을 수행하기 위해서는 많은 곱셈 연산들 및 덧셈 연산들이 처리되어야 한다.
도 3은 일 실시예에 따른 프로세싱 장치의 하드웨어 구성을 도시한 블록도이다.
도 3을 참고하면, 프로세싱 장치(10)는 프로세싱 유닛(112) 및 온-칩 메모리(114)를 포함한다. 도 3에 도시된 프로세싱 장치(10)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 프로세싱 장치(10)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
프로세싱 장치(10)는 PC(personal computer), 서버 디바이스, 모바일 디바이스(스마트폰, 태블릿 디바이스 등), 임베디드 디바이스, 자율주행 자동차, 웨어러블 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스 등의 다양한 종류의 컴퓨팅 디바이스들에 구비된 프로세서에 해당할 수 있다. 예를 들어, 프로세싱 장치(10)는 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등과 같은 프로세서에 해당하거나, 뉴럴 네트워크 데이터를 처리하는 뉴럴 프로세서에 해당할 수 있으나, 이에 제한되지 않는다.
프로세싱 장치(10)의 프로세싱 유닛(112)은 프로세싱 장치(10)가 구비된 컴퓨팅 장치를 제어하기 위한 전반적인 기능을 수행하는 역할을 한다. 예를 들어, 프로세싱 유닛(112)은 온-칩 메모리(114) 및 오프-칩 메모리(미도시)에 저장된 프로그램들을 실행함으로써, 프로세싱 장치(10) 및 프로세싱 장치(10)가 구비된 컴퓨팅 장치를 전반적으로 제어한다.
온-칩 메모리(114)는 오프-칩 메모리와 함께, 프로세싱 장치(10) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 온-칩 메모리(114)는 프로세싱 장치(10)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 온-칩 메모리(114) 및 오프-칩 메모리는 프로세싱 장치(10)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다.
온-칩 메모리(114) 및 오프-칩 메모리는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등을 포함한다. 실시예에 있어서, 온-칩 메모리(114) 및 오프-칩 메모리는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나로 구현될 수 있다.
프로세싱 유닛(112)은 다양한 연산들을 처리하는 하드웨어 유닛으로서, 예를 들어 덧셈 연산, 곱셈 연산 또는 초등함수 연산 등의 다양한 산술 연산들을 처리할 수 있다. 따라서, 프로세싱 유닛(112)은 다양한 산술 연산들을 수행하기 위한 회로 로직들로서 다수의 논리 게이트 어레이들의 조합들로 구현될 수 있고, 이와 같은 회로 로직들은 덧셈기 회로, 곱셈기 회로 등을 포함할 수 있다.
프로세싱 장치(10)가 뉴럴 네트워크를 처리하는 뉴럴 프로세서에 해당하는 경우, 프로세싱 유닛(112)은 앞서 도 2a 및 도 2b에서 설명된 뉴럴 네트워크의 컨볼루션 연산(즉, MAC(Multiply-Accumulation) 연산)을 처리하기 위하여, 다수의 덧셈기 회로들, 곱셈기 회로들 등을 포함하도록 구현될 수 있다. 하지만, 프로세싱 장치(10)는 뉴럴 프로세서가 아닌, CPU, GPU, AP 등에 해당되는 경우에도, 다양한 명령들을 처리하기 위한 산술 연산 로직들이 필요하므로, 프로세싱 유닛(112)에는 다수의 덧셈기 회로들, 곱셈기 회로들 등으로 구현될 수 있다.
본 실시예에 따르면, 덧셈 연산을 위한 n 비트(n은 자연수) 정밀도(precision)를 갖는 m 개의(m은 자연수) 입력 오퍼랜드들(operands)에 대하여, LSB(Least Significant Bit)부터 MSB(Most Significant Bit)까지 각 비트 자리의 덧셈 연산을 한번에 수행하지 않고, 입력 오퍼랜드들을 n 비트 보다 작은 소정 비트 사이즈의 비트 섹션들로 분할하고 각 비트 섹션의 서브 오퍼랜드들을 별개로 처리함으로써, 덧셈기(adder)의 연산 처리량(throughput)을 높이면서 덧셈기의 활용도를 증가시키고자 하였다.
이하에서는 본 실시예에 따른, 프로세싱 장치(10)에 구비된 덧셈기를 이용한 덧셈 연산에 대해 보다 자세히 설명하도록 한다.
도 4a는 일 실시예에 따른 덧셈기를 설명하기 위한 도면이다.
도 4a를 참고하면, 프로세싱 장치(10)(즉, 프로세싱 유닛(112))에 구비된 덧셈기(400)는 m 개의 오퍼랜드들(a0, a1, a2, ..., am - 1)에 대한 덧셈 연산을 수행하는 멀티-입력 덧셈기로서, 각 오퍼랜드는 k 비트(k는 자연수) 정밀도를 갖는다. 따라서, 덧셈기(400)는 k 비트 정밀도를 갖는 덧셈기로서, 덧셈 연산의 출력은 (k+log2m)의 정밀도를 갖는다. 도 3의 프로세싱 유닛(112)은 덧셈 연산의 처리를 위하여, 도 4a의 덧셈기(400)를 하나 이상 포함하도록 구현될 수 있다. 다만, 프로세싱 유닛(112)에 구비된 덧셈기는 도 4a의 덧셈기(400)와 다른 개수의 멀티-입력을 가질 수 있으며, 그 정밀도 또한 도 4a의 덧셈기(400)와 다를 수 있다.
도 4b는 일 실시예에 따른 덧셈기의 입력 정밀도와 출력 정밀도를 설명하기 위한 도면이다.
도 4b를 참고하면, 덧셈기(400)에 k 비트 정밀도의 멀티-오퍼랜드들이 입력된 경우, 멀티-오퍼랜드들의 개수에 따라 덧셈 연산의 결과의 정밀도가 결정될 수 있다. 즉, 멀티-오퍼랜드들의 개수가 m 개인 경우, 앞서 설명된 바와 같이, 덧셈 연산의 결과의 정밀도는 (k+log2m) 비트에 해당한다. 여기서, (log2m) 비트는 덧셈 연산의 캐리(carry) 비트에 해당한다.
도 5는 일 실시예에 따라 덧셈 연산을 위한 입력 오퍼랜드들로부터 서브 오퍼랜드들을 획득하는 것을 설명하기 위한 도면이다.
도 5를 참고하면, 프로세싱 장치(도 3의 10)(즉, 프로세싱 유닛(도 3의 112))는 덧셈 연산을 위하여 프로세싱 장치(10)에 입력된 n 비트 정밀도를 갖는 m 개의 입력 오퍼랜드들(500)을 k 비트 사이즈의 비트 섹션들로 분할함으로써, 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들(511, 512, 513)을 획득한다.
구체적으로, 입력 오퍼랜드 a0(501)는 제 1 비트 섹션의 서브 오퍼랜드(511), 제 2 비트 섹션의 서브 오퍼랜드(512), ..., 제 (n/k) 비트 섹션의 서브 오퍼랜드(513)로 분할된다. 즉, n 비트 입력 오퍼랜드는 입력 오퍼랜드의 LSB로부터 k 비트 사이즈로 분할되는 경우 (n/k)개의 비트 섹션들로 분할될 수 있고, 이에 따라 (n/k)개의 서브 오퍼랜드들(511, 512, 513)이 획득될 수 있다. 입력 오퍼랜드 a1(502), 입력 오퍼랜드 a2(503), ..., 입력 오퍼랜드 am-1(504)에 대해서도 입력 오퍼랜드 a0(501)과 마찬가지의 방식으로 각 비트 섹션에 대응하는 서브 오퍼랜드들이 획득될 수 있다.
입력 오퍼랜드 a0(501), 입력 오퍼랜드 a1(502), 입력 오퍼랜드 a2(503), ..., 입력 오퍼랜드 am-1(504) 각각의 제 1 비트 섹션은, 덧셈 연산이 수행될 경우 서로의 비트 값들이 더해지는 서브 오퍼랜드들(511)의 서로 대응하는 비트 자리에 해당한다. 마찬가지로, 제 2 비트 섹션, 제 3 비트 섹션, ..., 제 (n/k) 비트 섹션 또한 덧셈 연산이 수행될 경우 서로의 비트 값들이 더해지는 서브 오퍼랜드들의 서로 대응하는 비트 자리들에 해당한다.
프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 m 개의 입력 오퍼랜드들(500) 각각으로부터 획득된 각 비트 섹션(k 비트 정밀도)의 서브 오퍼랜드들(k 비트 정밀도)에 대해 독립적으로 덧셈 연산들을 수행함으로써 덧셈기의 연산 처리량을 높이면서 덧셈기의 활용도를 증가시킨다. 이때, 프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 병렬 덧셈(parallel addition) 방식을 이용하여 덧셈 연산을 처리하거나, 또는 직렬 덧셈(serial addition) 방식을 이용하여 덧셈 연산을 처리할 수 있다.
도 6은 일 실시예에 따라 병렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 것을 설명하기 위한 도면이다.
도 6을 참고하면, 앞서 도 5에서 설명된 바와 같이, 프로세싱 장치(도 3의 10)(즉, 프로세싱 유닛(도 3의 112))는 덧셈 연산을 위하여 프로세싱 장치(10)에 입력된 n 비트 정밀도를 갖는 m 개의 입력 오퍼랜드들(501, 502, 503, 504)을 k 비트 사이즈의 제 1 내지 제 (n/k) 비트 섹션들로 분할함으로써, 제 1 내지 제 (n/k) 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들(511, 512, 513)을 획득한다.
프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 둘 이상의 덧셈기들(601, 602, 603)이 그룹핑된 병렬 덧셈기를 이용하여 병렬 덧셈 방식의 덧셈 연산을 처리할 수 있다.
프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 복수의 덧셈기들(601, 602, 603)을 이용하여 m 개의 입력 오퍼랜드들(501, 502, 503, 504)에서 서로 대응하는 비트 섹션으로부터 획득된 서브 오퍼랜드들(511, 512, 513) 간의 덧셈 연산들을 병렬적으로 수행함으로써, 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득한다.
구체적으로, m 개의 입력 오퍼랜드들(501, 502, 503, 504) 각각에서 제 1 비트 섹션의 서브 오퍼랜드들(511)은 제 1 덧셈기(601)의 멀티-입력으로서, 입력될 수 있다. 마찬가지로, 제 2 비트 섹션의 서브 오퍼랜드들(512)은 제 2 덧셈기(602)의 멀티-입력으로서 입력될 수 있고, ..., 제 (n/k) 비트 섹션의 서브 오퍼랜드들(513)은 제 (n/k) 덧셈기(603)의 멀티-입력으로서 입력될 수 있다.
덧셈기들(601, 602, 603)은 각각 입력된 서브 오퍼랜드들(511, 512, 513)에 대한 덧셈 연산들을 독립적으로 처리한다. 그리고 나서, 덧셈기들(601, 602, 603)은 서브 오퍼랜드들(511, 512, 513)의 덧셈 연산 결과들에 해당하는 (k+log2m) 비트 정밀도의 중간 덧셈 결과들을 출력한다. 즉, 제 1 덧셈기(601)는 서브 오퍼랜드들(511)의 덧셈 연산을 수행한 후, 제 1 비트 섹션에 대응하는 (k+log2m) 비트 정밀도의 중간 덧셈 결과를 출력한다. 마찬가지로, 덧셈기들(602, 603) 각각 또한, 각 비트 섹션에 대응하는 (k+log2m) 비트 정밀도의 중간 덧셈 결과를 출력한다.
그러므로, 중간 덧셈 결과들은, 덧셈기들(601, 602, 603) 각각에 의해 병렬적으로 수행된, 입력 오퍼랜드들(501, 502, 503, 504) 각각에서 제 1 비트 섹션의 서브 오퍼랜드들(511) 간의 중간 덧셈 결과부터 입력 오퍼랜드들(501, 502, 503, 504) 각각에서 제 (n/k) 번째 비트 자리의 서브 오퍼랜드들(513) 간의 중간 덧셈 결과까지를 포함한다. 중간 덧셈 결과들은 최종 덧셈 결과의 획득을 위해 온-칩 메모리(114)에 저장되어 있을 수 있다.
도 7은 일 실시예에 따라 도 6의 병렬 덧셈 방식에 의해 획득된 중간 덧셈 결과들을 이용하여 입력 오퍼랜드들 간의 최종 덧셈 연산 결과를 획득하는 것을 설명하기 위한 도면이다.
도 7을 참고하면, 덧셈기들(601, 602, 603)로부터 (k+log2m) 비트 정밀도의 중간 덧셈 결과들(701, 702, 703)이 획득될 수 있다. 중간 덧셈 결과(701)는 제 1 비트 섹션에 대응하는 비트 자리에서의 덧셈 결과로서, 입력 오퍼랜드들(501 내지 504)의 LSB를 포함하는 비트 섹션이다. 하지만, 중간 덧셈 결과들(702, 703)은 모두 입력 오퍼랜드들(501 내지 504)의 LSB로부터 k 비트의 정수 배만큼 떨어진 비트 자리에서의 덧셈 결과들이다.
따라서, 프로세싱 장치(도 3의 10)(즉, 프로세싱 유닛(도 3의 112))는 획득된 중간 덧셈 결과들(701, 702, 703)이 입력 오퍼랜드들(501 내지 504)에서의 원래 비트 자리들에 대응하도록, 획득된 중간 덧셈 결과들(701, 702, 703) 각각을 비트-쉬프팅한다. 예를 들어, 중간 덧셈 결과(702)는 k 비트 만큼 비트-쉬프팅될 수 있다.
프로세싱 장치(10)(즉, 프로세싱 유닛(112))는, 중간 덧셈 결과들(701, 702, 703) 모두가 원래 비트 자리들에 대응하도록 비트-쉬프팅된 경우, 비트-쉬프팅된 중간 덧셈 결과들(701, 702, 703)에 대한 덧셈 연산을 수행함으로써, 입력 오퍼랜드들(501 내지 504)의 덧셈 연산의 최종 결과를 출력한다.
한편, 프로세싱 장치(10)(즉, 프로세싱 유닛(112))는, 제 1 비트 섹션부터 제 (n/k) 번째 비트 섹션까지 중에서 서브 오퍼랜드들이 모두 제로 값들을 갖는 제로 비트 섹션이 있는지 여부를 판단할 수 있다. 만약, 제로 비트 섹션이 있는 것으로 판단된 경우, 프로세싱 장치(10)(즉, 프로세싱 유닛(112))는, 덧셈기들(601 내지 603) 중 제로 비트 섹션에 할당된 덧셈기는 덧셈 연산을 스킵하도록 제어할 수 있다. 이때, 제로 비트 섹션에 할당된 덧셈기는 입력 오퍼랜드들(501 내지 504)이 아닌, 다른 입력 오퍼랜드들의 덧셈 연산을 수행하도록 제어될 수 있다. 즉, 제로 비트 섹션에 할당된 덧셈기는 유휴(idle) 상태에 머무르지 않고, 다른 입력을 처리하도록 제어될 수 있으므로, 보다 효율적인 연산 처리가 가능하게 될 수 있다.
도 8은 일 실시예에 따라 직렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 것을 설명하기 위한 도면이다.
도 8을 참고하면, 직렬 덧셈 방식은 병렬 덧셈 방식과 달리, 하나의 덧셈기(810)만을 이용하여 덧셈 연산을 처리할 수 있다.
먼저, 앞서 도 5에서 설명된 바와 같이, 프로세싱 장치(도 3의 10)(즉, 프로세싱 유닛(도 3의 112))는 덧셈 연산을 위하여 프로세싱 장치(10)에 입력된 n 비트 정밀도를 갖는 m 개의 입력 오퍼랜드들(501, 502, 503, 504)을 k 비트 사이즈의 제 1 내지 제 (n/k) 비트 섹션들로 분할함으로써, 제 1 내지 제 (n/k) 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들(511, 512, 513)을 획득한다.
프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 덧셈기(810)를 이용하여 비트 섹션들의 순서(제 1 비트 섹션부터 제 (n/k) 비트 섹션)에 따라 입력 오퍼랜드들(501, 502, 503, 504)에서 서로 대응하는 비트 섹션으로부터 획득된 서브 오퍼랜드들(511, 512, 513) 및 이전 사이클에서 수행된 덧셈 연산에 의해 출력된 캐리(805)의 덧셈 연산을 복수의 사이클들 동안 반복적으로 수행함으로써, 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득한다. 즉, 한 사이클마다 입력 오퍼랜드들(501, 502, 503, 504)의 LSB로부터 k 비트 사이즈의 비트 섹션에 대응하는 서브 오퍼랜드들이 순차적으로 덧셈기(810)에 입력되어 덧셈 연산이 반복적으로 수행된다.
구체적으로, 첫 번째 사이클에서 덧셈기(810)는 제 1 비트 섹션의 서브 오퍼랜드들(511)의 덧셈 연산을 수행하고, (k+log2m) 비트 정밀도의 중간 덧셈 결과(801)를 출력한다. 여기서, 중간 덧셈 결과(801)의 MSB로부터 (log2m) 개의 비트 값은 캐리(805)에 해당하므로, 캐리(805)는 두 번째 사이클에서의 덧셈 연산을 위해 덧셈기(810)의 입력으로 피드백된다. 두 번째 사이클에서 덧셈기(810)는 제 2 비트 섹션의 서브 오퍼랜드들(512) 및 캐리(805)의 덧셈 연산을 수행하고, (k+log2m) 비트 정밀도의 중간 덧셈 결과(801)를 출력한다. 이와 같은 방식으로, 덧셈기(810)는 (n/k) 사이클들 동안 덧셈 연산들을 반복적으로 수행하고, 각 사이클에 대응하는 중간 덧셈 결과(801)를 출력한다. 다만, 마지막 사이클에서 획득된 중간 덧셈 결과(801)에서 MSB의 (log2m) 비트는 덧셈기(810)의 입력으로 피드백되지 않아도 되므로, 이때의 (log2m) 비트는 2-to-1 멀티플렉서(820)를 이용하여 0으로 설정될 수 있다.
덧셈기(810)의 직렬 덧셈 방식을 이용하여 획득된 중간 가산 결과들(801)은 최종 덧셈 결과의 획득을 위해 온-칩 메모리(114)에 저장된다.
입력 오퍼랜드들(501, 502, 503, 504)에 대한 중간 가산 결과들(801)의 획득이 완료된 경우, 도 7에서 설명된 바와 유사하게, 프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 획득된 중간 덧셈 결과들(801)이 입력 오퍼랜드들(501 내지 504)에서의 원래 비트 자리들에 대응하도록, 획득된 중간 덧셈 결과들(801) 각각을 비트-쉬프팅한다. 프로세싱 장치(10)(즉, 프로세싱 유닛(112))는, 중간 덧셈 결과들(801) 모두가 원래 비트 자리들에 대응하도록 비트-쉬프팅된 경우, 비트-쉬프팅된 중간 덧셈 결과들(801)에 대한 덧셈 연산을 수행함으로써, 입력 오퍼랜드들(501 내지 504)의 덧셈 연산의 최종 결과를 출력한다.
예를 들어, 16 비트(n=16) 정밀도의 입력 오퍼랜드를 4개의(k=4) 서브 오퍼랜드들로 그룹핑한다면, 덧셈기(810)는 총 4 사이클에 덧셈 연산을 완료할 수 있다. 나아가서, 8비트 정밀도의 입력 오퍼랜드인 경우 덧셈기(810)는 총 2 사이클에 덧셈 연산을 완료할 수 있고, 4비트 정밀도의 입력 오퍼랜드인 경우 덧셈기(810)는 총 1 사이클에 덧셈 연산을 완료할 수 있다.
앞서 도면들에서 설명된 바와 같이, 프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 n 비트 정밀도를 갖는 m 개의 입력 오퍼랜드들을 k 비트 정밀도를 갖는 서브 오퍼랜드들로 그룹핑하여 독립적으로 덧셈 연산들을 수행한다. 만약, 앞서 설명된 바와 같이, 비트 섹션들 중에서 제로 비트 섹션이 존재하는 경우, 프로세싱 장치(10)(즉, 프로세싱 유닛(112))는 현재의 입력 오퍼랜드들과는 다른 입력 오퍼랜드들에 대한 덧셈 연산을 덧셈기에 스케쥴링할 수 있으므로, 보다 효율적인 연산 처리가 가능하다. 또한, 프로세싱 장치(10)(즉, 프로세싱 유닛(112)) 내 제한적인 리소스의 덧셈기들이 구현되어 있을지라도, 입력 오퍼랜드의 정밀도(n 비트)와 서브 오퍼랜드의 정밀도(k 비트)를 조절하여, 제한적인 개수의 덧셈기들로 최적화된 스케쥴에 따라 덧셈 연산이 처리될 수 있다. 즉, 프로세싱 장치(10) 내 구비된 덧셈기를 재구성 가능한 덧셈기 디자인(reconfigurable adder design)으로 구현할 수 있다. 한편, 프로세싱 장치(10)가 뉴럴 프로세서에 해당하는 경우, 프로세싱 장치(10)는 최적화된 스케쥴로 뉴럴 네트워크의 입력 피처맵, 커널 등의 컨볼루션 연산(MAC 연산)을 수행할 수 있으므로, 뉴럴 네트워크의 처리 속도를 향상시킬 수 있다.
도 9는 일 실시예에 따라 병렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 방법의 흐름도이다. 도 9를 참고하면, 병렬 덧셈 방식의 덧셈 연산 처리 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 9의 방법에도 적용될 수 있다.
910 단계에서, 프로세싱 유닛(112)은 n 비트 정밀도를 갖는 입력 오퍼랜드들 각각을 k 비트 사이즈의 비트 섹션들로 분할함으로써 k 비트 정밀도를 갖는 서브 오퍼랜드들을 획득한다.
920 단계에서, 프로세싱 유닛(112)은 서로 대응하는 비트 섹션으로부터 획득된 서브 오퍼랜드들을 (n/k) 개의 덧셈기들 각각의 멀티-입력으로서 입력한다.
930 단계에서, 프로세싱 유닛(112)은 덧셈기들 각각에서, 서로 대응하는 비트 섹션의 서브 오퍼랜드들 간의 덧셈 연산을 병렬적으로 수행함으로써, 비트 섹션들 각각에 대한 k+log2m 비트의 중간 덧셈 결과들을 획득한다.
940 단계에서, 프로세싱 유닛(112)은 중간 덧셈 결과들 각각을 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 비트-쉬프팅한다.
950 단계에서, 프로세싱 유닛(112)은 비트-쉬프팅된 중간 덧셈 결과들에 기초하여 입력 오퍼랜드들의 덧셈 연산의 최종 덧셈 결과를 출력한다.
도 10은 일 실시예에 따라 직렬 덧셈 방식을 이용하여 덧셈 연산을 처리하는 방법의 흐름도이다. 도 10을 참고하면, 직렬 덧셈 방식의 덧셈 연산 처리 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 10의 방법에도 적용될 수 있다.
1010 단계에서, 프로세싱 유닛(112)은 n 비트 정밀도를 갖는 입력 오퍼랜드들 각각을 k 비트 사이즈의 비트 섹션들로 분할함으로써 k 비트 정밀도를 갖는 서브 오퍼랜드들을 획득한다.
1020 단계에서, 프로세싱 유닛(112)은 서로 대응하는 현재 비트 섹션으로부터 획득된 서브 오퍼랜드들을 덧셈기의 멀티-입력으로서 입력한다.
1030 단계에서, 프로세싱 유닛(112)은 서브 오퍼랜드들 및 이전 사이클의 캐리의 덧셈 연산을 수행함으로써, 현재 비트 섹션에 대한 k+log2m 비트의 중간 덧셈 결과를 획득한다.
1040 단계에서, 프로세싱 유닛(112)은 현재 비트 섹션의 서브 오퍼랜드들에 대한 덧셈 연산이 마지막 사이클의 덧셈 연산인지 여부를 판단한다. 만약, 마지막 사이클이 아닌 경우, 1050 단계로 진행된다. 그러나, 마지막 사이클인 경우, 1060 단계로 진행된다.
1050 단계에서, 프로세싱 유닛(112)은 1030 단계에서 획득된 중간 덧셈 결과에서 MSB로부터 log2m 비트를 다음 사이클에서 수행될 다음 비트 섹션에 대한 덧셈 연산의 캐리로 설정한다. 그리고 나서, 1020 단계 내지 1040 단계가 다시 수행된다.
1060 단계에서, 프로세싱 유닛(112)은1030 단계에서 획득된 중간 덧셈 결과에서 MSB로부터 log2m 비트(캐리)를 0으로 설정한다.
1070 단계에서, 프로세싱 유닛(112)은 마지막 비트 섹션의 서브 오퍼랜드들 및 0 캐리의 덧셈 연산을 수행함으로써, 마지막 비트 섹션에 대한 중간 덧셈 결과를 획득한다.
1080 단계에서, 프로세싱 유닛(112)은 중간 덧셈 결과들 각각을 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 비트-쉬프팅한다.
1090 단계에서, 프로세싱 유닛(112)은 비트-쉬프팅된 중간 덧셈 결과들에 기초하여 입력 오퍼랜드들의 덧셈 연산의 최종 덧셈 결과를 출력한다.
도 11은 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 11을 참고하면, 전자 시스템(1100)은 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1100)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1100)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1100)은 프로세싱 장치(1110), RAM(1120), 메모리(1130)(오프-칩 메모리), 센서 모듈(1140) 및 통신 모듈(1150)을 포함할 수 있다. 전자 시스템(1100)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1100)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다. 프로세싱 장치(1110)는 앞서 설명된 덧셈 연산을 처리하는 프로세싱 장치(10)를 포함할 수 있다.
프로세싱 장치(1110)는 전자 시스템(1100)의 전반적인 동작을 제어한다. 프로세싱 장치(1110)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세싱 장치(1110)는 메모리(1130)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, 프로세싱 장치(1110)는 메모리(1130)에 저장된 프로그램들을 실행함으로써, 다양한 기능들을 제어할 수 있다. 프로세싱 장치(1110)는 CPU, GPU, AP 또는 뉴럴 프로세서 등으로 구현될 수 있다.
RAM(1120)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1130)에 저장된 프로그램들 및/또는 데이터는 프로세싱 장치(1110)의 제어 또는 부팅 코드에 따라 RAM(1120)에 일시적으로 저장될 수 있다. RAM(1120)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
예를 들어, 프로세싱 장치(1110)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 프로세싱 장치(1110)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1100)이 탑재된 전자 장치의 종류 또는 기능에 따라 프로세싱 장치(1110)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1130)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1130)는 프로세싱 장치(1110)의 연산 수행 과정에서 생성되는 중간 결과들, 예컨대 출력 피처 맵을 출력 피처 리스트 또는 출력 피처 매트릭스 형태로 저장할 수 있다. 실시예에 있어서, 메모리(1130)에는 압축된 출력 피처 맵이 저장될 수 있다. 또한, 메모리(1130)는 프로세싱 장치(1110)에서 이용되는 양자화된 뉴럴 네트워크 데이터, 예컨대, 파라미터들, 웨이트 맵 또는 웨이트 리스트를 저장할 수 있다.
메모리(1130)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1130)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1130)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1140)은 전자 시스템(1100)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1140)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1140)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1140)은 변환된 데이터를 프로세싱 장치(1110)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1140)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 프로세싱 장치(1110)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1140)은 다양한 종류의 데이터를 프로세싱 장치(1110)에 제공할 수 있다.
통신 모듈(1150)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1150)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
실시 예에 있어서, 통신 모듈(1150)은 외부로부터 뉴럴 네트워크에 관한 데이터를 수신할 수 있다.
도 12는 일 실시예에 따른 프로세싱 장치에서 덧셈 연산을 처리하는 방법의 흐름도이다. 도 12를 참고하면 덧셈 연산 처리 방법(병렬 덧셈 방식)은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 12의 방법에도 적용될 수 있다.
1210 단계에서, 프로세싱 유닛(112)은 프로세싱 장치(10)에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득한다.
1220 단계에서, 프로세싱 유닛(112)은 프로세싱 장치(10)에 구비된 복수의 덧셈기들을 이용하여 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 서브 오퍼랜드들 간의 덧셈 연산들을 병렬적으로 수행함으로써, 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득한다.
1230 단계에서, 프로세싱 유닛(112)은 획득된 중간 덧셈 결과들이 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅한다.
1240 단계에서, 프로세싱 유닛(112)은 비트-쉬프팅된 중간 덧셈 결과들에 대한 덧셈 연산을 수행함으로써, 입력 오퍼랜드들의 덧셈 연산의 결과를 출력한다.
도 13은 일 실시예에 따른 프로세싱 장치에서 덧셈 연산을 처리하는 방법의 흐름도이다. 도 13을 참고하면 덧셈 연산 처리 방법(직렬 덧셈 방식)은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 13의 방법에도 적용될 수 있다.
1310 단계에서, 프로세싱 유닛(112)은 프로세싱 장치(10)에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득한다.
1320 단계에서, 프로세싱 유닛(112)은 프로세싱 장치(10)에 구비된 덧셈기를 이용하여 비트 섹션들의 순서에 따라 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 서브 오퍼랜드들 및 이전 사이클에서 수행된 덧셈 연산에 의해 출력된 캐리의 덧셈 연산을 복수의 사이클들 동안 반복적으로 수행함으로써, 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득한다.
1330 단계에서, 프로세싱 유닛(112)은 획득된 중간 덧셈 결과들이 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅한다.
1340 단계에서, 프로세싱 유닛(112)은 비트-쉬프팅된 중간 덧셈 결과들에 기초하여, 입력 오퍼랜드들의 덧셈 연산의 결과를 출력한다.
한편, 상술한 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예들에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 실시예가 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 실시예에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 프로세싱 장치에서 덧셈 연산을 처리하는 방법에 있어서,
    상기 프로세싱 장치에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하는 단계, 상기 n은 자연수임;
    상기 프로세싱 장치에 구비된 복수의 덧셈기들을 이용하여 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 간의 덧셈 연산들을 병렬적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하는 단계;
    상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하는 단계; 및
    상기 비트-쉬프팅된 중간 덧셈 결과들에 대한 덧셈 연산을 수행함으로써, 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 소정 비트 사이즈 단위는 k 비트이고,
    상기 중간 덧셈 결과들을 획득하는 단계는, k 비트 정밀도를 갖는 상기 서브 오퍼랜드들의 덧셈 연산을 수행하는 k 비트 정밀도를 갖는 멀티 입력 덧셈기들을 이용하여 상기 중간 덧셈 결과들을 획득하고,
    상기 k는 상기 n보다 작은 자연수인, 방법.
  3. 제 2 항에 있어서,
    상기 복수의 입력 오퍼랜드들은 m 개이고,
    상기 획득된 중간 덧셈 결과들 각각은, 상기 m 개의 상기 입력 오퍼랜드들 각각에서 서로 대응하는 비트 섹션으로부터 획득된 상기 k 비트 정밀도를 갖는 m 개의 상기 서브 오퍼랜드들 간의 덧셈 연산의 수행 결과를 포함하고,
    상기 획득된 중간 덧셈 결과들 각각은 (k + log2m) 비트 정밀도를 갖고,
    상기 m은 자연수인, 방법.
  4. 제 3 항에 있어서,
    상기 입력 오퍼랜드들 각각은 (n/k) 개의 상기 비트 섹션들로 분할되고,
    상기 획득된 중간 덧셈 결과들은
    상기 덧셈기들 각각에 의해 병렬적으로 수행된, 상기 입력 오퍼랜드들 각각에서 제 1 비트 섹션의 서브 오퍼랜드들 간의 중간 덧셈 결과부터 상기 입력 오퍼랜드들 각각에서 (n/k) 번째 비트 자리의 서브 오퍼랜드들 간의 중간 덧셈 결과까지를 포함하는, 방법.
  5. 제 4 항에 있어서,
    상기 제 1 비트 섹션부터 상기 (n/k) 번째 비트 섹션까지 중에서 서브 오퍼랜드들이 모두 제로 값들을 갖는 제로 비트 섹션이 있는지 여부를 판단하는 단계를 더 포함하고,
    상기 프로세싱 장치는
    상기 제로 비트 섹션이 있는 것으로 판단된 경우, 상기 덧셈기들 중 상기 제로 비트 섹션에 할당된 덧셈기는 덧셈 연산을 스킵하도록 제어하는, 방법.
  6. 제 2 항에 있어서,
    상기 비트-쉬프팅하는 단계는
    상기 입력 오퍼랜드들에서의 원래 비트 자리에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 k 비트의 정수 배 만큼씩 비트-쉬프팅하는, 방법.
  7. 프로세싱 장치에서 덧셈 연산을 처리하는 방법에 있어서,
    상기 프로세싱 장치에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하는 단계, 상기 n은 자연수임;
    상기 프로세싱 장치에 구비된 덧셈기를 이용하여 상기 비트 섹션들의 순서에 따라 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 및 이전 사이클에서 수행된 덧셈 연산에 의해 출력된 캐리의 덧셈 연산을 복수의 사이클들 동안 반복적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하는 단계;
    상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하는 단계; 및
    상기 비트-쉬프팅된 중간 덧셈 결과들에 기초하여 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력하는 단계를 포함하는, 방법.
  8. 제7 항에 있어서,
    상기 소정 비트 사이즈 단위는 k 비트이고,
    상기 중간 덧셈 결과들을 획득하는 단계는, 각 사이클에서 k 비트 정밀도를 갖는 상기 서브 오퍼랜드들 및 상기 캐리의 덧셈 연산을 수행하는 k 비트 정밀도를 갖는 멀티 입력 덧셈기를 이용하여 상기 중간 덧셈 결과들을 획득하고,
    상기 k는 상기 n보다 작은 자연수인, 방법.
  9. 제 8 항에 있어서,
    상기 복수의 입력 오퍼랜드들은 m 개이고,
    상기 획득된 중간 덧셈 결과들 각각은 (k + log2m) 비트 정밀도를 갖고,
    상기 캐리는 상기 이전 사이클에서 획득된 (k + log2m) 비트의 중간 덧셈 결과 중에서 MSB(most significant bit)로부터 (log2m) 개의 비트 값에 해당하고,
    상기 m은 자연수인, 방법.
  10. 제 9 항에 있어서,
    상기 m과 상기 k는 k ≥ log2m 의 수학식을 만족하는 값들이고,
    상기 사이클들은 최대 (n/k) 회인, 방법.
  11. 제 9 항에 있어서,
    상기 사이클들 중 마지막 사이클에서 획득된 중간 덧셈 결과 중에서 MSB로부터 (log2m) 개의 비트 값은 0으로 설정되는, 방법.
  12. 메모리; 및
    덧셈 연산을 처리하는 프로세싱 유닛을 포함하고,
    상기 프로세싱 유닛은,
    상기 프로세싱 유닛에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하고, 상기 n은 자연수이고,
    상기 프로세싱 유닛에 구비된 복수의 덧셈기들을 이용하여 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 간의 덧셈 연산들을 병렬적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하고,
    상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리들에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하고,
    상기 비트-쉬프팅된 중간 덧셈 결과들에 대한 덧셈 연산을 수행함으로써, 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력하는, 프로세싱 장치.
  13. 제 12 항에 있어서,
    상기 소정 비트 사이즈 단위는 k 비트이고,
    상기 프로세싱 유닛은, k 비트 정밀도를 갖는 상기 서브 오퍼랜드들의 덧셈 연산을 수행하는 k 비트 정밀도를 갖는 멀티 입력 덧셈기들을 이용하여 상기 중간 덧셈 결과들을 획득하고,
    상기 k는 상기 n보다 작은 자연수인, 프로세싱 장치.
  14. 제 13 항에 있어서,
    상기 복수의 입력 오퍼랜드들은 m 개이고,
    상기 획득된 중간 덧셈 결과들 각각은, 상기 m 개의 상기 입력 오퍼랜드들 각각에서 서로 대응하는 비트 섹션으로부터 획득된 상기 k 비트 정밀도를 갖는 m 개의 상기 서브 오퍼랜드들 간의 덧셈 연산의 수행 결과를 포함하고,
    상기 획득된 중간 덧셈 결과들 각각은 (k + log2m) 비트 정밀도를 갖고,
    상기 m은 자연수인, 프로세싱 장치.
  15. 제 14 항에 있어서,
    상기 입력 오퍼랜드들 각각은 (n/k) 개의 상기 서브 오퍼랜드들로 분할되고,
    상기 획득된 중간 덧셈 결과들은
    상기 덧셈기들 각각에 의해 병렬적으로 수행된, 상기 입력 오퍼랜드들 각각에서 제 1 비트 섹션의 서브 오퍼랜드들 간의 중간 덧셈 결과부터 상기 입력 오퍼랜드들 각각에서 (n/k) 번째 비트 자리의 서브 오퍼랜드들 간의 중간 덧셈 결과까지를 포함하는, 프로세싱 장치.
  16. 제 15 항에 있어서,
    상기 프로세싱 유닛은
    상기 제 1 비트 섹션부터 상기 (n/k) 번째 비트 섹션까지 중에서 서브 오퍼랜드들이 모두 제로 값들을 갖는 제로 비트 섹션이 있는지 여부를 판단하고,
    상기 제로 비트 섹션이 있는 것으로 판단된 경우, 상기 덧셈기들 중 상기 제로 비트 섹션에 할당된 덧셈기는 덧셈 연산을 스킵하도록 제어하는, 프로세싱 장치.
  17. 메모리; 및
    덧셈 연산을 처리하는 프로세싱 유닛을 포함하고,
    상기 프로세싱 유닛은,
    상기 프로세싱 유닛에 입력된 n 비트 정밀도를 갖는 복수의 입력 오퍼랜드들을 소정 비트 사이즈의 비트 섹션들로 분할함으로써, 상기 비트 섹션들 각각의 비트 값들에 대응하는 서브 오퍼랜드들을 획득하고, 상기 n은 자연수이고,
    상기 프로세싱 유닛에 구비된 덧셈기를 이용하여 상기 비트 섹션들의 순서에 따라 상기 입력 오퍼랜드들에서 서로 대응하는 비트 섹션으로부터 획득된 상기 서브 오퍼랜드들 및 이전 사이클에서 수행된 덧셈 연산에 의해 출력된 캐리의 덧셈 연산을 복수의 사이클들 동안 반복적으로 수행함으로써, 상기 비트 섹션들 각각에 대한 중간 덧셈 결과들을 획득하고,
    상기 획득된 중간 덧셈 결과들이 상기 입력 오퍼랜드들에서의 원래 비트 자리에 대응하도록, 상기 획득된 중간 덧셈 결과들 각각을 비트-쉬프팅하고,
    상기 비트-쉬프팅된 중간 덧셈 결과들에 기초하여 상기 입력 오퍼랜드들의 덧셈 연산의 결과를 출력하는, 프로세싱 장치.
  18. 제 17 항에 있어서,
    상기 소정 비트 사이즈 단위는 k 비트이고,
    상기 복수의 입력 오퍼랜드들은 m 개이고,
    상기 프로세싱 유닛은, 각 사이클에서 k 비트 정밀도를 갖는 상기 서브 오퍼랜드들 및 상기 캐리의 덧셈 연산을 수행하는 k 비트 정밀도를 갖는 멀티 입력 덧셈기를 이용하여 상기 중간 덧셈 결과들을 획득하고,
    상기 획득된 중간 덧셈 결과들 각각은 (k + log2m) 비트 정밀도를 갖고,
    상기 캐리는 상기 이전 사이클에서 획득된 (k + log2m) 비트의 중간 덧셈 결과 중에서 MSB(most significant bit)로부터 (log2m) 개의 비트 값에 해당하고,
    상기 m과 상기 k는 k ≥ log2m 의 수학식을 만족하는 값들이고,
    상기 m은 자연수이고, 상기 k는 상기 n보다 작은 자연수인, 프로세싱 장치.
  19. 제 18 항에 있어서,
    상기 사이클들은 최대 (n/k) 회이고,
    상기 사이클들 중 마지막 사이클에서 획득된 중간 덧셈 결과 중에서 MSB로부터 (log2m) 개의 비트 값은 0으로 설정되는, 프로세싱 장치.
  20. 제 1 항, 제 7 항, 제 12 항 및 제 17 항 중 어느 한 항에 있어서,
    상기 프로세싱 장치는 뉴럴 네트워크를 처리하는 뉴럴 프로세서를 포함하고,
    상기 입력 오퍼랜드들의 상기 덧셈 연산은 상기 뉴럴 네트워크의 파라미터들의 덧셈 연산을 포함하는, 방법.
KR1020190020053A 2018-11-15 2019-02-20 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법 KR20200056898A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/683,626 US20200159495A1 (en) 2018-11-15 2019-11-14 Processing apparatus and method of processing add operation therein

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862767692P 2018-11-15 2018-11-15
US62/767,692 2018-11-15

Publications (1)

Publication Number Publication Date
KR20200056898A true KR20200056898A (ko) 2020-05-25

Family

ID=70914696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190020053A KR20200056898A (ko) 2018-11-15 2019-02-20 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법

Country Status (1)

Country Link
KR (1) KR20200056898A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022197091A1 (ko) * 2021-03-17 2022-09-22 주식회사 모르미 병렬 처리 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022197091A1 (ko) * 2021-03-17 2022-09-22 주식회사 모르미 병렬 처리 장치

Similar Documents

Publication Publication Date Title
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
KR102499396B1 (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US20200234124A1 (en) Winograd transform convolution operations for neural networks
KR20190052893A (ko) 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
TWI834729B (zh) 神經網路處理器及其卷積操作方法
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20200086581A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
KR102390379B1 (ko) 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치
US11562046B2 (en) Neural network processor using dyadic weight matrix and operation method thereof
JP7414930B2 (ja) 情報処理装置、情報処理方法
US11868874B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
US20210174177A1 (en) Method and device with neural network implementation
US20200159495A1 (en) Processing apparatus and method of processing add operation therein
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
KR20210045225A (ko) 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치
JP2021197176A (ja) 浮動小数点演算を行うニューラルネットワーク装置及びその動作方法
KR20220010362A (ko) 뉴럴 네트워크 장치 및 그의 동작 방법
KR20210039197A (ko) 데이터를 처리하는 방법 및 장치
KR20200056898A (ko) 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
KR20200062014A (ko) 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법
KR20210097448A (ko) 영상 데이터 처리 방법 및 영상 데이터 처리 방법을 수행하는 센서 장치
KR20200094534A (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치에서 멀티-비트 연산을 처리하는 방법
CN114626515A (zh) 基于通道数量执行卷积运算的npu装置及其操作方法
KR20230013989A (ko) 이미지 처리 장치, 이의 동작 방법 및, 이를 포함하는 이미지 처리 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal