KR20200122707A - 프로세싱 엘리먼트 및 프로세싱 시스템 - Google Patents

프로세싱 엘리먼트 및 프로세싱 시스템 Download PDF

Info

Publication number
KR20200122707A
KR20200122707A KR1020190045745A KR20190045745A KR20200122707A KR 20200122707 A KR20200122707 A KR 20200122707A KR 1020190045745 A KR1020190045745 A KR 1020190045745A KR 20190045745 A KR20190045745 A KR 20190045745A KR 20200122707 A KR20200122707 A KR 20200122707A
Authority
KR
South Korea
Prior art keywords
filtered
circuit
weight
feature
features
Prior art date
Application number
KR1020190045745A
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 KR1020190045745A priority Critical patent/KR20200122707A/ko
Priority to CN201911159154.4A priority patent/CN111832715A/zh
Priority to US16/702,099 priority patent/US11294628B2/en
Priority to JP2019232622A priority patent/JP7449086B2/ja
Publication of KR20200122707A publication Critical patent/KR20200122707A/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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/492Computations with decimal numbers radix 12 or 20. using a binary weighted representation within each denomination
    • G06F7/4925Adding; 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/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • 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
    • G06N3/045Combinations of networks
    • 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
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

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

Abstract

프로세싱 엘리먼트는, 피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및 상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고, 상기 전-처리 회로는 상기 웨이트가 -1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및 상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함할 수 있다.

Description

프로세싱 엘리먼트 및 프로세싱 시스템 {PROCESSING ELEMENT AND PROCESSING SYSTEM}
본 특허문헌은 프로세싱 시스템에 관한 것이다.
CNN (Convolution Neural Network)은 이미지 인식 및 분석을 위해 주로 사용되는 프로세싱 시스템(processing system)이다. 이 프로세싱 시스템은 특정 필터로 이미지에서 피쳐(feature)를 추출해내는 컨볼루션 연산을 수행하게 된다.
최근에는 BNN (Binarized Neural Network)이 대두되고 있는데, 이는 바이너리(binary) (1 또는 -1만 웨이트로 사용) 또는 터너리(ternary) (1, 0, -1만 웨이트로 사용)와 같은 2가지 또는 3가지의 웨이트를 사용해 프로세싱 시스템의 구조를 단순화하고 전력 소모를 줄이고자 하는데 목적이 있다.
본 발명의 실시예들은 프로세싱 시스템의 구조를 단순화하고 전류 소모를 줄이는 기술을 제공할 수 있다.
본 발명의 일실시예에 따른 프로세싱 엘리먼트는, 피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및 상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고, 상기 전-처리 회로는 상기 웨이트가 -1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및 상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함할 수 있다.
본 발명의 다른 실시예에 따른 프로세싱 엘리먼트는, 피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및 상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고, 상기 전-처리 회로는 상기 웨이트가 1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및 상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함할 수 있다.
본 발명의 일실시예에 따른 프로세싱 시스템은, 피쳐와 웨이트를 저장하는 캐시 메모리; 및 상기 캐시 메모리로부터 전달된 피쳐와 웨이트의 연산을 위한 프로세싱 엘리먼트를 포함하고, 상기 프로세싱 엘리먼트는 피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및 상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고, 상기 전-처리 회로는 상기 웨이트가 -1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및 상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함할 수 있다.
본 발명의 다른 실시예에 따른 프로세싱 시스템은, 피쳐와 웨이트를 저장하는 캐시 메모리; 및 상기 캐시 메모리로부터 전달된 피쳐와 웨이트의 연산을 위한 프로세싱 엘리먼트를 포함하고, 상기 프로세싱 엘리먼트는 피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및 상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고, 상기 전-처리 회로는 상기 웨이트가 1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및 상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함할 수 있다.
본 발명의 실시예들에 따르면 프로세싱 시스템의 구조를 단순화하고 전류 소모를 줄일 수 있다.
도 1은 프로세싱 시스템이 수행하는 컨볼루션(convolution) 연산을 설명하기 위한 도면.
도 2는 본 발명의 일실시예에 따른 프로세싱 시스템(200)의 구성도.
도 3은 프로세싱 엘리먼트(260)의 일실시예 구성도.
도 4는 전-처리 회로(310)의 동작의 일 예를 나타낸 도면.
도 5는 전-처리 회로(310)의 동작의 다른 예를 나타낸 도면.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 프로세싱 시스템이 수행하는 컨볼루션(convolution) 연산을 설명하기 위한 도면이다.
도 1의 110은 프로세싱 시스템에 입력되는 이미지(image) 데이터를 나타낼 수 있다. 이미지 데이터 값들을 피쳐(feature)라 하는데, 여기서는 이미지(110)가 4개의 피쳐를 포함하는 것으로 예시했다. 물론, 이미지(110)는 이보다 훨씬 많의 개수의 피쳐를 포함할 수도 있다.
120은 필터(filter)를 나타낼 수 있다. 필터(120)에 포함되는 값들을 웨이트(weight)라 할 수 있다. 웨이트는 피쳐들 각각에 대응할 수 있다. 여기서는 웨이트가 1, 0, -1의 3가지 값 중 하나인 것을 예시했는데, 이를 터너리(ternary) 웨이트라 한다.
컨볼루션 연산은 피쳐와 웨이트를 곱하고 곱한 값들을 더하는 방식으로 수행될 수 있다. 예를 들어, 도 1의 이미지와 필터에 대한 컨볼루션 연산은 0.3*1 + 1.2*0 + -0.2*-1 + 0*-1 = 0.5와 같이 수행될 수 있다. 즉, 컨볼루션 연산에는 곱셈 연산과 덧셈 연산이 동반되는 것이 일반적이다.
도 2는 본 발명의 일실시예에 따른 프로세싱 시스템(200)의 구성도이다.
도 2를 참조하면, 프로세싱 시스템(200)은 메인 메모리(210), 메모리 인터페이스(220), 버스 인터페이스(230), 호스트 인터페이스(240), 캐시 메모리(250), 프로세싱 엘리먼트(260) 및 후-처리기(270) 포함할 수 있다.
메인 메모리(210)는 이미지(image)(즉 이미지에 포함되는 피처)와 필터(filter)(즉 필터에 포함되는 웨이트) 등을 저장하는 대용량 메모리일 수 있다. 메인 메모리(210)로는 DRAM이 사용될 수 있으며, 다른 종류의 메모리가 사용될 수도 있다.
메모리 인터페이스(220)는 메인 메모리(210)를 억세스하기 위해 사용될 수 있다. 메모리 인터페이스(220)는 메모리 인터페이스를 포함할 수 있다.
호스트 인터페이스(240)는 호스트(HOST)와의 통신을 위한 인터페이스일 수 있다. 호스트 인터페이스(240)를 통해 호스트(HOST), 예를 들어 중앙 처리 장치(CPU: Central Processing Unit), 로부터 프로세싱 시스템(200)이 처리할 각종 명령 및 데이터가 전달될 수 있다. 또한, 호스트 인터페이스(240)를 통해 프로세싱 시스템(200)의 처리 결과가 호스트로 전달될 수도 있다.
캐시 메모리(250)는 프로세싱 엘리먼트(260)가 연산할 피쳐와 웨이트를 저장하는 캐시 메모리일 수 있다. 캐시 메모리(250)는 SRAM 등으로 구성될 수 있으며, 메인 메모리(210)와 프로세싱 엘리먼트(260) 간의 억세스 레이턴시(access latency)를 최소화하기 위해 사용되는 캐시 메모리일 수 있다.
버스 인터페이스(230)는 호스트 인터페이스(240), 메모리 인터페이스(220) 및 캐시 메모리(250) 간의 인터페이스를 위한 프로세싱 시스템(200) 내부의 버스 인터페이스일 수 있다. 버스 인터페이스(230)는 호스트 인터페이스(240)를 통해 전달되는 이미지와 필터를 메모리 인터페이스(220)를 통해 메인 메모리(210)에 저장하고, 메모리 인터페이스(220)를 통해 메인 메모리로(210)부터 프로세싱 엘리먼트(260)가 컨볼루션 연산할 피쳐와 웨이트를 리드해 캐시 메모리(250)에 로드할 수 있다. 또한, 버스 인터페이스(230)는 프로세싱 시스템(200)의 처리 결과를 호스트 인터페이스(240)를 통해 호스트(HOST)로 전달할 수 있다.
프로세싱 엘리먼트(260)는 캐시 메모리(250)로부터 전달된 피쳐(FEATURE)와 웨이트(WEIGHT)의 컨볼루션 연산을 수행할 수 있다. 프로세싱 엘리먼트(260)의 구성 및 동작에 대해서는 도 3 내지 도 5와 함께 자세히 알아보기로 한다. 도 2에서는 프로세싱 엘리먼트(260)를 1개만 도시했지만, 다수의 컨볼루션 연산을 병렬로 처리하기 위해 다수개의 프로세싱 엘리먼트가 프로세싱 시스템에 포함될 수도 있음은 당연하다.
후-처리기(270)는 프로세싱 엘리먼트(260)의 컨볼루션 연산 결과를 후-처리(post-processing)할 수 있다. 후-처리기(270)는 픽셀(pixel) 별로 평균(average) 또는 최대(max) 값을 찾는 풀링(pooling), 문턱값(threshold) 기반으로 데이터를 필터링하는 ReLU (Rectified Linear Unit) 또는 시그모이드(sigmoid)와 같은 활성함수(activation function), 결과치에서 벗어나는 값을 필터링하는 노멀라이즈(normalize) 등의 기능들(function)을 수행할 수 있다. 후-처리기(270)의 처리 결과는 버스 인터페이스(230)로 전달되고 호스트 인터페이스(240)를 통해 호스트로 전달될 수 있다.
도 2의 프로세싱 시스템(200)은 하나 또는 다수개의 집적회로 칩으로 구현될 수 있다. 예를 들어, 프로세싱 시스템(200) 전체가 하나의 집적회로 칩에 시스템 온 칩(system on chip)의 형태로 포함될 수도 있으며, 메인 메모리(210)는 하나의 집적회로 칩에 나머지 구성들(220~270)은 또 다른 집적회로 칩에 포함되는 등 프로세싱 시스템이 다수개의 집적회로 칩들로 구현될 수도 있다.
도 3은 프로세싱 엘리먼트(260)의 일실시예 구성도이다.
도 3을 참조하면, 프로세싱 엘리먼트(260)는 전-처리 회로(310)와 누적 회로(320)를 포함할 수 있다.
전-처리 회로(310)는 피쳐(FEATURE)와 웨이트(WEIGHT)를 입력받아 필터링해 필터링된 피쳐(FEATURE_FILTERED)와 필터링된 웨이트(WEIGHT_FILTERED)를 출력할 수 있다. 전-처리 회로(310)의 동작에 의해 필터링된 웨이트(WEIGHT_FILTERED)는 3가지의 값 중 하나가 아닌 2가지의 값 중 하나가 될 수 있다. 즉, 필터링된 웨이트(WEIGHT_FILTERED)는 터너리(ternary)에서 바이너리(binary)로 변경되며, 이는 곧 필터링된 웨이트(WEIGHT_FILTERED)의 비트수가 2비트에서 1비트로 변경된다는 것을 의미할 수 있다. 전-처리 회로(310)는 사인 컨버전 회로(311) 및 제로 필터링 회로(312)를 포함할 수 있다.
사인 컨버전 회로(311)는 웨이트(WEIGHT)가 -1인 경우에 피쳐(FEATURE)와 웨이트(WEIGHT)에 -1을 곱하는 동작을 수행할 수 있다. 그 결과 사인 컨버전 회로(311)에 의해 처리된 웨이트(WEIGHT_SIGN)에서 -1이 제거되며 웨이트가 0과 1의 두가지 값 중 하나의 값을 가질 수 있다. 사인 컨버전 회로(311)가 피쳐(FEATURE)와 웨이트(WEIGHT)에 -1을 곱하는 동작은 실제의 곱셈 연산이 필요한 것은 아니고 +를 -로 변경하거나 -를 +로 변경하는 것과 같이 단지 부호를 변경해주면 된다. 도 4에서 FEATURE와 WEIGHT는 사인 컨버전 회로(311)로 입력되는 피쳐(FEATURE)와 웨이트(WEIGHT)를 나타내고, 도 4의 FEATURE_SIGN과 WEIGHT_SIGN은 사인 컨버전 회로로부터 출력되는 피쳐와 웨이트를 나타내는데, 도 4를 확인하면 웨이트가 -1인 경우에 피쳐와 웨이트에 -1이 곱해져 사인 컨버전 회로로부터 출력되는 웨이트는 0과 1의 두가지 값 중 하나의 값을 가지는 것을 확인할 수 있다.
제로 필터링 회로(312)는 피쳐(FEATURE_SIGN)가 0인 경우에 웨이트(WEIGHT_SIGN)를 0으로 변경하는 동작을 수행할 수 있다. 또한, 웨이트(WEIGHT_SIGN)가 0인 경우에 피쳐(FEATURE_SIGN)를 0으로 변경하는 동작을 더 수행할 수도 있다. 피쳐(FEATURE_SIGN)가 0인 경우에 웨이트(WEIGHT_SIGN)를 0으로 변경하는 동작을 수행하는 것은 필수적이지만, 웨이트(WEIGHT_SIGN)가 0인 경우에 피쳐(FEATURE_SIGN)를 0으로 변경하는 동작은 수행되지 않을 수도 있다. 이는 누적 회로320)가 필터링된 웨이트(WEIGHT_FILTERED)의 값이 0인 경우에 필터링된 피쳐(FEATURE_FILTERED)의 값을 누적하지 않기 때문이다. 도 4의 필터링된 피쳐(FEATURE_FILTERED)와 필터링된 웨이트(WEIGHT_FILTERED)를 확인하면, 제로 필터링 회로(312)로 입력된 피쳐(FEATURE_SIGN)와 웨이트(WEIGHT_SIGN) 중 하나가 0인 경우에 두값 모두 0으로 변경된 것을 확인할 수 있다.
도 3에서는 전-처리 회로(310)에서 사인 컨버전 회로(311)가 제로 필터링 회로(312)의 전단에 위치하는 것을 예시했지만, 제로 필터링 회로(312)가 사인 컨버전 회로(311)의 전단에 위치할 수도 있다. 즉, 피쳐(FEATURE)와 웨이트(WEIGHT)에 대한 제로 필터링 회로(312)의 처리 동작이 먼저 수행되고, 사인 컨버전 회로(311)의 처리 동작이 이후에 수행될 수도 있다.
누적 회로(320)는 필터링된 피쳐(FEATURE_FILTERED)의 값을 누적할 수 있다. 전-처리 회로(310)에 의해 이미 필터링된 웨이트(WEIGHT_FILTERED)의 값이 0과 1로 줄어들었고, 필터링된 웨이트의 값이 0인 경우에 필터링된 피쳐의 값도 0으로 변경되었으므로, 누적 회로(320)는 단지 필터링된 피쳐(FEATURE_FILTERED)만을 입력받아 누적할 수도 있다. 다만, 여기서는 누적 회로(320)가 필터링된 웨이트(WEIGHT_FILTERED)를 입력받아 레지스터(322)의 활성화 신호로 사용하는 것을 예시했다. 누적 회로(320)는 덧셈기(321)와 레지스터(322)를 포함할 수 있다.
덧셈기(321)는 필터링된 피쳐(FEATURE_FILTERED)와 레지스터(322)에 저장된 누적 값을 더하는 덧셈 연산을 수행할 수 있다. 레지스터(322)는 덧셈기(321)의 연산 결과를 누적 값으로 저장할 수 있다. 레지스터(322)는 필터링된 웨이트(WEIGHT_FILTERED)를 활성화 신호로 사용할 수 있다. 즉, 레지스터(322)는 필터링된 웨이트(WEIGHT_FILTERED)가 1인 경우에 덧셈기(321)의 연산 결과를 입력받아 저장하고, 필터링된 웨이트(WEIGHT_FILTERED)가 0인 경우에는 새로운 입력 값을 입력받지 않고 누적 값을 그대로 유지할 수 있다.
결국, 누적 회로(320)는 필터링된 피쳐(FEATURE_FILTERED) 중 필터링된 웨이트(WEIGHT_FILTERED)가 1인 값들을 누적하게 된다. 즉, 누적 회로(320)의 누적 값은 0.3 + 0.2 = 0.5가 될 수 있다. 이는 도 1의 이미지(110)와 필터(120)에 대한 컨볼루션 연산의 결과와 동일하다는 것을 확인할 수 있다.
도 3의 프로세싱 엘리먼트(260)에서는 전-처리 회로(310)에 의해 웨이트(WEIGHT)가 터너리에서 바이너리로 변경된다. 즉, 웨이트(WEIGHT)가 2비트에서 1비트로 변경될 수 있다. 또한, 피쳐(FEATURE)와 웨이트(WEIGHT) 중 하나 이상이 0인 경우에 피쳐와 웨이트가 모두 0으로 변경되므로, 누적 회로(320)는 필터링된 피쳐(FEATURE_FILTERED)의 값만을 덧셈 연산하는 것에 의해 컨볼루션 연산이 수행될 수 있다. 즉, 프로세싱 엘리먼트(260)에서 곱셈기를 제거하는 것이 가능해 프로세싱 엘리먼트(260)의 복잡도 및 전류 소모를 줄일 수 있다.
도 3과 도 4에서는 사인 컨버전 회로(311)가 1, 0, -1이던 웨이트를 1과 0으로 변경하는 것을 예시했다. 하지만, 이와 다르게 사인 컨버전 회로(311)가 1, 0, -1의 웨이트(WEIGHT)를 -1과 0으로 변경할 수도 있다, 이는 사인 컨버전 회로(311)가 웨이트(WEIGHT)가 1인 경우에 피쳐(FEATURE)와 웨이트(WEIGHT)에 -1을 곱하는 연산을 수행하면 된다. 도 5에 이 과정들을 도시했다. 이 경우 누적 회로(320)는 필터링된 피쳐(FEATURE_FILTERED) 중 필터링된 웨이트(WEIGHT_FILTERED)가 -1인 값들을 누적할 수 있다. 프로세싱 엘리먼트(260)가 도 5와 같이 동작할 경우에 프로세싱 엘리먼트(260)가 도 4와 같이 동작할 경우 대비 연산 결과의 부호가 반대로 될 수 있는데, 이는 단지 연산 결과의 부호를 반대로 하는 것에 의해 해결될 수 있다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
260: 프로세싱 엘리먼트
310: 전-처리 회로
320: 누적 회로

Claims (23)

  1. 피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및
    상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고,
    상기 전-처리 회로는
    상기 웨이트가 -1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및
    상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함하는
    프로세싱 엘리먼트.
  2. 제 1항에 있어서,
    상기 누적 회로는 상기 필터링된 피쳐의 값이 1인 경우에 상기 필터링된 피쳐의 값을 누적하는
    프로세싱 엘리먼트.
  3. 제 1항에 있어서,
    상기 전-처리 회로로 입력된 피쳐와 웨이트는 상기 사인 컨버전 회로에 의해 처리되고, 상기 사인 컨버전 회로에 의해 처리된 피쳐와 웨이트가 상기 제로 필터링 회로에 의해 처리되어 상기 필터링된 피쳐와 상기 필터링된 웨이트가 생성되는
    프로세싱 엘리먼트.
  4. 제 1항에 있어서,
    상기 전-처리 회로로 입력된 피쳐와 웨이트는 상기 제로 필터링 회로에 의해 처리되고, 상기 제로 필터링 회로에 의해 처리된 피쳐와 웨이트가 상기 사인 컨버전 회로에 의해 처리되어 상기 필터링된 피쳐와 상기 필터링된 웨이트가 생성되는
    프로세싱 엘리먼트.
  5. 제 1항에 있어서,
    상기 제로 필터링 회로는 상기 웨이트가 0인 경우에 상기 피쳐를 0으로 변경하는
    프로세싱 엘리먼트.
  6. 제 1항에 있어서,
    상기 누적 회로는
    누적값과 상기 필터링된 피쳐의 값을 더하는 덧셈기; 및
    상기 필터링된 웨이트가 1인 경우에 상기 덧셈기의 덧셈 결과를 상기 누적값으로 저장하는 레지스터를 포함하는
    프로세싱 엘리먼트.
  7. 제 1항에 있어서,
    상기 전-처리 회로로 입력되는 상기 웨이트는 1, 0, -1 중 하나의 값을 가지는
    프로세싱 엘리먼트.
  8. 피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및
    상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고,
    상기 전-처리 회로는
    상기 웨이트가 1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및
    상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함하는
    프로세싱 엘리먼트.
  9. 제 8항에 있어서,
    상기 누적 회로는 상기 필터링된 웨이트가 -1인 경우에 상기 필터링된 피쳐의 값을 누적하는
    프로세싱 엘리먼트.
  10. 제 8항에 있어서,
    상기 제로 필터링 회로는 상기 웨이트가 0인 경우에 상기 피쳐를 0으로 변경하는
    프로세싱 엘리먼트.
  11. 피쳐와 웨이트를 저장하는 캐시 메모리; 및
    상기 캐시 메모리로부터 전달된 피쳐와 웨이트의 연산을 위한 프로세싱 엘리먼트를 포함하고,
    상기 프로세싱 엘리먼트는
    피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및 상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고,
    상기 전-처리 회로는
    상기 웨이트가 -1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및 상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함하는
    프로세싱 시스템.
  12. 제 11항에 있어서,
    상기 누적 회로는 상기 필터링된 피쳐의 값이 1인 경우에 상기 필터링된 피쳐의 값을 누적하는
    프로세싱 시스템.
  13. 제 11항에 있어서,
    호스트와의 통신을 위한 호스트 인터페이스;
    데이터를 저장하는 메모리;
    상기 메모리의 데이터를 억세스하기 위한 메모리 인터페이스;
    상기 호스트 인터페이스, 상기 메모리 인터페이스 및 상기 캐시 메모리 간의 인터페이싱을 위한 버스 인터페이스; 및
    상기 프로세싱 엘리먼트의 연산 결과를 후-처리(post-processing) 하는 후처리기
    를 더 포함하는 프로세싱 시스템.
  14. 제 11항에 있어서,
    상기 전-처리 회로로 입력된 피쳐와 웨이트는 상기 사인 컨버전 회로에 의해 처리되고, 상기 사인 컨버전 회로에 의해 처리된 피쳐와 웨이트가 상기 제로 필터링 회로에 의해 처리되어 상기 필터링된 피쳐와 상기 필터링된 웨이트가 생성되는
    프로세싱 시스템.
  15. 제 11항에 있어서,
    상기 전-처리 회로로 입력된 피쳐와 웨이트는 상기 제로 필터링 회로에 의해 처리되고, 상기 제로 필터링 회로에 의해 처리된 피쳐와 웨이트가 상기 사인 컨버전 회로에 의해 처리되어 상기 필터링된 피쳐와 상기 필터링된 웨이트가 생성되는
    프로세싱 시스템.
  16. 제 11항에 있어서,
    상기 제로 필터링 회로는 상기 웨이트가 0인 경우에 상기 피쳐를 0으로 변경하는
    프로세싱 시스템.
  17. 제 11항에 있어서,
    상기 누적 회로는
    누적값과 상기 필터링된 피쳐의 값을 더하는 덧셈기; 및
    상기 필터링된 웨이트가 1인 경우에 상기 덧셈기의 덧셈 결과를 상기 누적값으로 저장하는 레지스터를 포함하는
    프로세싱 시스템.
  18. 제 11항에 있어서,
    상기 전-처리 회로로 입력되는 상기 웨이트는 1, 0, -1 중 하나의 값을 가지는
    프로세싱 시스템.
  19. 피쳐와 웨이트를 저장하는 캐시 메모리; 및
    상기 캐시 메모리로부터 전달된 피쳐와 웨이트의 연산을 위한 프로세싱 엘리먼트를 포함하고,
    상기 프로세싱 엘리먼트는
    피쳐와 웨이트를 입력받아 필터링해 필터링된 피쳐와 필터링된 웨이트를 출력하는 전-처리 회로; 및 상기 필터링된 피쳐의 값을 누적하기 위한 누적 회로를 포함하고,
    상기 전-처리 회로는
    상기 웨이트가 1인 경우에 상기 피쳐와 웨이트의 부호를 변경하는 사인 컨버전 회로; 및 상기 피쳐가 0인 경우에 상기 웨이트를 0으로 변경하는 제로 필터링 회로를 포함하는
    프로세싱 시스템.
  20. 제 19항에 있어서,
    상기 누적 회로는 상기 필터링된 웨이트의 값이 -1인 경우에 상기 필터링된 피쳐의 값을 누적하는
    프로세싱 시스템.
  21. 제 19항에 있어서,
    호스트와의 통신을 위한 호스트 인터페이스;
    데이터를 저장하는 메모리;
    상기 메모리의 데이터를 억세스하기 위한 메모리 인터페이스;
    상기 호스트 인터페이스, 상기 메모리 인터페이스 및 상기 캐시 메모리 간의 인터페이싱을 위한 버스 인터페이스; 및
    상기 프로세싱 엘리먼트의 연산 결과를 후-처리(post-processing) 하는 후처리기
    를 더 포함하는 프로세싱 시스템.
  22. 제 19항에 있어서,
    상기 제로 필터링 회로는 상기 웨이트가 0인 경우에 상기 피쳐를 0으로 변경하는
    프로세싱 시스템.
  23. 제 19항에 있어서,
    상기 누적 회로는
    누적값과 상기 필터링된 피쳐의 값을 더하는 덧셈기; 및
    상기 필터링된 웨이트가 -1인 경우에 상기 덧셈기의 덧셈 결과를 상기 누적값으로 저장하는 레지스터를 포함하는
    프로세싱 시스템.
KR1020190045745A 2019-04-18 2019-04-18 프로세싱 엘리먼트 및 프로세싱 시스템 KR20200122707A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190045745A KR20200122707A (ko) 2019-04-18 2019-04-18 프로세싱 엘리먼트 및 프로세싱 시스템
CN201911159154.4A CN111832715A (zh) 2019-04-18 2019-11-22 处理元件和处理系统
US16/702,099 US11294628B2 (en) 2019-04-18 2019-12-03 Processing element and processing system
JP2019232622A JP7449086B2 (ja) 2019-04-18 2019-12-24 プロセッシングエレメント及びプロセッシングシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190045745A KR20200122707A (ko) 2019-04-18 2019-04-18 프로세싱 엘리먼트 및 프로세싱 시스템

Publications (1)

Publication Number Publication Date
KR20200122707A true KR20200122707A (ko) 2020-10-28

Family

ID=72829406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190045745A KR20200122707A (ko) 2019-04-18 2019-04-18 프로세싱 엘리먼트 및 프로세싱 시스템

Country Status (4)

Country Link
US (1) US11294628B2 (ko)
JP (1) JP7449086B2 (ko)
KR (1) KR20200122707A (ko)
CN (1) CN111832715A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449758B2 (en) * 2020-03-11 2022-09-20 Qualcomm Incorproated Quantization and inferencing for low-bitwidth neural networks
WO2022040643A1 (en) * 2020-08-21 2022-02-24 Fu Zhi Sing Processing unit architectures and techniques for reusable instructions and data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2137010C (en) * 1989-08-14 1999-05-18 David Norton Critchlow Subscriber unit for wireless digital subscriber communication system
JP4515546B2 (ja) * 1998-12-11 2010-08-04 富士フイルム株式会社 画像信号処理装置およびこの装置を備えた電子スチルカメラ
JP4516280B2 (ja) * 2003-03-10 2010-08-04 ルネサスエレクトロニクス株式会社 表示装置の駆動回路
JP5770699B2 (ja) * 2012-09-26 2015-08-26 日本電信電話株式会社 端末装置、基地局装置、無線通信方法、及び無線通信システム
CN103761690B (zh) * 2014-02-14 2017-10-24 国家电网公司 基于电网系统中电压无功控制系统的评估方法
JP6480286B2 (ja) * 2015-08-07 2019-03-06 日本電信電話株式会社 無線通信システム及び無線通信方法
US10698657B2 (en) 2016-08-12 2020-06-30 Xilinx, Inc. Hardware accelerator for compressed RNN on FPGA
JP6869676B2 (ja) 2016-09-27 2021-05-12 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
JP6183980B1 (ja) 2016-12-02 2017-08-23 国立大学法人東京工業大学 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
JP6489295B1 (ja) * 2017-11-02 2019-03-27 Tdk株式会社 ニューロモルフィック素子を含むアレイ装置およびニューラルネットワークシステム
JP7240657B2 (ja) 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム

Also Published As

Publication number Publication date
CN111832715A (zh) 2020-10-27
JP7449086B2 (ja) 2024-03-13
US20200334013A1 (en) 2020-10-22
JP2020177643A (ja) 2020-10-29
US11294628B2 (en) 2022-04-05

Similar Documents

Publication Publication Date Title
US10445638B1 (en) Restructuring a multi-dimensional array
CN107256424B (zh) 三值权重卷积网络处理系统及方法
US9020276B2 (en) Hardware coprocessor for stripe-based interest point detection
JP2018142049A (ja) 情報処理装置、画像認識装置、および、畳込みニューラルネットワークのパラメータ設定方法
JP7449086B2 (ja) プロセッシングエレメント及びプロセッシングシステム
CN111240746B (zh) 一种浮点数据反量化及量化的方法和设备
EP3678062A1 (en) A reconfigurable 3d convolution engine
US20200218777A1 (en) Signal Processing Method and Apparatus
WO2019216376A1 (ja) 演算処理装置
CN111210004B (zh) 卷积计算方法、卷积计算装置及终端设备
CN112734020A (zh) 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法
US20210044303A1 (en) Neural network acceleration device and method
US20200242467A1 (en) Calculation method and calculation device for sparse neural network, electronic device, computer readable storage medium, and computer program product
CN114092708A (zh) 特征图像的处理方法、装置和存储介质
CN111178513B (zh) 神经网络的卷积实现方法、卷积实现装置及终端设备
CN203617974U (zh) 一种基于fpga的可配置系数的滤波器及电子设备
CN110796229A (zh) 一种实现卷积运算的装置及方法
US11467973B1 (en) Fine-grained access memory controller
US11868873B2 (en) Convolution operator system to perform concurrent convolution operations
US20200219239A1 (en) System and method for performing a convolution operation
US9679222B2 (en) Apparatus and method for detecting a feature in an image
US11501134B2 (en) Convolution operator system to perform concurrent convolution operations
US11263517B1 (en) Flexible weight expansion
CN112541549B (zh) 商品分类识别方法及装置
Shahan et al. FPGA based convolution and memory architecture for Convolutional Neural Network

Legal Events

Date Code Title Description
E902 Notification of reason for refusal