KR20200082613A - 프로세싱 시스템 - Google Patents

프로세싱 시스템 Download PDF

Info

Publication number
KR20200082613A
KR20200082613A KR1020180173358A KR20180173358A KR20200082613A KR 20200082613 A KR20200082613 A KR 20200082613A KR 1020180173358 A KR1020180173358 A KR 1020180173358A KR 20180173358 A KR20180173358 A KR 20180173358A KR 20200082613 A KR20200082613 A KR 20200082613A
Authority
KR
South Korea
Prior art keywords
temporary memory
processing system
boundary
stored
memory
Prior art date
Application number
KR1020180173358A
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 KR1020180173358A priority Critical patent/KR20200082613A/ko
Priority to US16/670,645 priority patent/US11551069B2/en
Priority to JP2019202872A priority patent/JP7437135B2/ja
Priority to CN201911201499.1A priority patent/CN111382861B/zh
Publication of KR20200082613A publication Critical patent/KR20200082613A/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
    • 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
    • G06F1/3243Power saving in microcontroller unit
    • 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
    • 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/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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

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)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로세싱 시스템은, 피쳐(feature)와 웨이트(weight)를 저장하는 임시 메모리; 상기 임시 메모리에 저장된 상기 피쳐의 값과 상기 웨이트의 값에 대한 곱셈 연산 및 곱셈 결과에 대한 덧셈 연산을 수행하는 프로세싱 엘리먼트(processing element); 및 상기 피쳐와 상기 웨이트를 상기 임시 메모리에 저장되도록 제어하고, 상기 임시 메모리의 동일한 포인트에 저장된 피쳐와 웨이트 중 하나 이상이 값이 0인 경우에 해당 포인트가 오버 라이트되도록 제어하는 플로우 콘트롤러를 포함할 수 있다.

Description

프로세싱 시스템 {PROCESSING SYSTEM}
본 특허문헌은 프로세싱 시스템(processing system)에 관한 것이다.
CNN (Convolution Neural Network)은 이미지 인식 및 분석을 위해 주로 사용되는 프로세싱 시스템(processing system)이다. 이 프로세싱 시스템은 특정 필터로 이미지에서 피쳐(feature)를 추출해내는 컨볼루션(convolution) 연산이 필요한데, 이러한 작업을 위해 곱셈 및 덧셈 연산을 하는 메트릭스 곱셈 유닛(matrix multiplication unit)을 사용하게 된다. 밀집한 이미지(dense image)와 필터가 사용되는 경우, 즉 데이터에 0이 적은 경우 = 스파시티(sparcity)가 적은 경우, 이러한 연산 유닛이 효율적으로 사용될 수 있으나, CNN 프로세싱 시스템에서 사용되는 대부분의 이미지와 필터는 30~70% 정도의 스파시티를 가지고 있다.
스파시티가 증가하게 되면 데이터에 많은 수의 0 값(zero-value)이 포함되는데, 0값은 곱셈 및 덧셈 연산의 결과값에 아무런 영향을 주지 않지만, 불필요한 레이턴시를 증가시키며 전류를 소모하게되는 원인이될 수 있다.
본 발명의 실시예들은, 프로세싱 시스템의 성능을 향상시키고 전류 소모를 줄이는 기술을 제공할 수 있다.
본 발명의 일실시예에 따른 프로세싱 시스템은, 피쳐(feature)와 웨이트(weight)를 저장하는 임시 메모리; 상기 임시 메모리에 저장된 상기 피쳐의 값과 상기 웨이트의 값에 대한 곱셈 연산 및 곱셈 결과에 대한 덧셈 연산을 수행하는 프로세싱 엘리먼트(processing element); 및 상기 피쳐와 상기 웨이트를 상기 임시 메모리에 저장되도록 제어하고, 상기 임시 메모리의 동일한 포인트에 저장된 피쳐와 웨이트 중 하나 이상이 값이 0인 경우에 해당 포인트에 다음의 피쳐와 다음의 웨이트가 오버 라이트되도록 제어하는 플로우 콘트롤러를 포함할 수 있다.
본 발명의 다른 실시예에 따른 프로세싱 시스템은, 다수의 포인트를 포함하고, 각각의 포인트에 피쳐(feature), 웨이트(weight) 및 바운더리 플래그를 저장하는 임시 메모리; 상기 임시 메모리의 동일한 포인트에 저장된 피쳐의 값과 웨이트의 값을 곱하는 곱셈 연산 및 동일한 바운더리의 곱셈 연산 결과들을 더하는 덧셈 연산을 수행하는 프로세싱 엘리먼트(processing element); 및 상기 피쳐, 상기 웨이트 및 상기 바운더리 플래그가 상기 임시 메모리에 저장되도록 제어하고, 상기 임시 메모리의 동일한 포인트에 저장된 피쳐와 웨이트 중 하나 이상의 값이 0인 경우에 해당 포인트에 다음의 피쳐와 다음의 웨이트가 오버 라이트되도록 제어하는 플로우 콘트롤러를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 프로세싱 시스템은, 피쳐(feature)와 웨이트(weight)를 임시저장하는 임시 메모리; 상기 임시 메모리에 저장된 상기 피쳐의 값과 상기 웨이트의 값에 대한 곱셈 연산 및 곱셈 결과에 대한 덧셈 연산을 수행하는 프로세싱 엘리먼트(processing element); 및 상기 피쳐와 상기 웨이트를 상기 임시 메모리에 저장되도록 제어하고, 상기 임시 메모리의 동일한 포인트에 저장될 피쳐와 웨이트 중 하나 이상이 0의 값을 포함하는 경우에 해당 피쳐와 웨이트가 상기 임시 메모리로 저장되지 않도록 제어하는 플로우 콘트롤러를 포함할 수 있다.
본 발명의 실시예들에 따르면, 프로세싱 시스템의 성능을 향상시키고 전류 소모를 줄일 수 있다.
도 1은 프로세싱 시스템에서 수행하는 컨볼루션(convolution) 연산을 설명하기 위한 도면.
도 2는 본 발명의 일실시예에 따른 프로세싱 시스템의 구성도.
도 3은 도 2의 프로세싱 엘리먼트(260)의 일실시예 구성도.
도 4A와 도 4B는 플로우 콘트롤러(240)가 온-칩 메모리(230)에 저장된 이미지와 필터를 리드해 임시 메모리(250)에 라이트하는 과정의 일실시예를 설명하기 위한 도면.
도 5는 플로우 콘트롤러(240)가 온-칩 메모리(230)에 저장된 이미지(410)와 필터(420)를 리드해 임시 메모리(250)에 라이트하는 과정의 다른 실시예를 설명하기 위한 도면.
도 6은 플로우 콘트롤러(240)가 피쳐와 웨이트를 임시 메모리(250)에 라이트하는 동작을 도시한 순서도.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 프로세싱 시스템에서 수행하는 컨볼루션(convolution) 연산을 설명하기 위한 도면이다.
도 1의 110은 이미지(image)를 나타낼 수 있다. 여기서는 이미지의 사이즈를 4*4로 예시했다. 120은 필터(filter)를 나타낼 수 있다. 여기서는 필터의 사이즈를 2*2로 예시했다. 이미지에 포함되는 값들을 피쳐라 하며, 필터에 포함되는 값들을 웨이트라 할 수 있다. 이미지(110)에는 16개의 피쳐들이 포함되며, 필터(120)에는 4개의 웨이트들이 포함될 수 있다.
컨볼루션 연산은 이미지(110)와 필터(120)를 점선 111, 112, 113, 114와 같은 모습으로 겹쳐가며 수행될 수 있다. 피쳐(110)와 필터(120)가 점선 111과 같이 오버랩되어 수행되는 연산은, 1*17 + 5*0 + 0*0 + 6*20 = 137일 수 있다. 또한, 피쳐(110)와 필터(120)가 점선 112와 같이 오버랩되어 수행되는 연산은, 0*17 + 6*0 + 3*0 + 0*20 = 0일 수 있다. 즉, 1번째 바운더리(boundary)의 연산 결과는 137이고, 2번째 바운더리의 연산 결과는 0일 수 있다. 마찬가지로 3번째 바운더리의 연산 결과는 3*17 + 0*0 + 4*0 + 8*20 = 211일 수 있으며, 4번째 바운더리의 연산 결과는 5*17 + 0*0 + 6*0 + 10*20 = 285일 수 있다.
컨볼루션 연산 과정을 살펴보면, 피쳐와 웨이트 중 하나 이상이 0인 경우에는 해당 바운더리의 연산 결과값에 아무런 영향을 주지 않는 것을 확인할 수 있다. 예를 들어, 1번째 바운더리 연산 1*17 + 5*0 + 0*0 + 6*20 = 137에서 피쳐와 웨이트 중 하나 이상이 0인 밑줄친 부분은 연산 결과 137에 아무런 영향을 주지 못하는 것을 확인할 수 있다.
도 2는 본 발명의 일실시예에 따른 프로세싱 시스템의 구성도이다.
도 2를 참조하면, 프로세싱 시스템은, 메인 메모리(210), 메모리 인터페이스(220), 온-칩 메모리(230), 플로우 콘트롤러(flow controller, 240), 임시 메모리(250), 프로세싱 엘리먼트(processing element, 260) 및 피쳐 맵 발생기(feature map generator, 270)를 포함할 수 있다.
메인 메모리(210)는 이미지(image)와 필터(filter) 등을 저장하는 대용량 메모리일 수 있다. 메인 메모리(210)로는 DRAM이 사용될 수 있으며, 다른 종류의 메모리가 사용될 수도 있다.
메모리 인터페이스(220)는 연산에 필요한 이미지와 필터를 메인 메모리(210)로부터 리드해 온-칩 메모리(230)로 옮기기 위해 사용될 수 있다. 메모리 인터페이스(220)는 메인 메모리(210) 및 온-칩 메모리(230)를 억세스하기 위한 메모리 콘트롤러 및 프로토콜 등을 포함할 수 있다.
온-칩 메모리(230)는 메인 메모리(210)로부터 프로세싱 엘리먼트(260)가 연산할 일부 데이터를 로드해 저장하는 메모리일 수 있다. 온-칩 메모리(230)는 프로세싱 엘리먼트(260)와 메인 메모리(210) 간의 억세스 레이턴시(access latency)를 최소화하기 위해 사용되는 일종의 대용량 캐시 메모리(cache memory)일 수 있다. 여기서 대용량이라는 것은 온-칩 메모리(230)의 용량이 임시 메모리(250) 대비 대용량이라는 것을 의미할 수 있으며, 온-칩 메모리(230)의 용량은 메인 메모리(210)의 용량보다는 작을 수 있다. 온-칩 메모리(230)로는 SRAM이 사용될 수 있다.
플로우 콘트롤러(240)는 온-칩 메모리(230)에 저장된 이미지와 필터를 리드해 임시 메모리(250)에 라이트할 수 있다. 플로우 콘트롤러(240)는 피쳐 또는 웨이트의 값이 0인 경우에 해당 값에 대한 연산이 스킵(skip)될 수 있도록 하기 위한 동작을 수행할 수 있으며, 온-칩 메모리(230)의 피쳐와 웨이트를 임시 메모리(250)에 로드하는 과정에서 피쳐와 웨이트를 복사하는 동작도 수행할 수 있다. 플로우 콘트롤러(240)의 자세한 동작에 대해서는 후술하기로 한다.
임시 메모리(250)는 프로세싱 엘리먼트(260)가 연산할 피쳐와 웨이트를 임시 저장하는 메모리일 수 있다. 임시 메모리(250)는 프로세싱 엘리먼트(260)가 직접 억세스하는 캐시 메모리일 수 있다. 즉, 임시 메모리(250)가 레벨1 캐시라면 온-칩 메모리는 레벨2 캐시일 수 있다. 임시 메모리(250)는 다수의 포인트를 포함하며, 각각의 포인트에 피쳐, 웨이트, 및 피쳐와 웨이트의 바운더리를 나타내는 바운더리 플래그(boundary flag)를 저장할 수 있다. 임시 메모리(250)는 스크래치 패드(scratch pad)일 수 있다.
프로세싱 엘리먼트(260)는 임시 메모리(250)의 동일한 포인트에 저장된 피쳐와 웨이트를 곱하고, 동일한 바운더리 내의 곱셈 결과들을 합산하는 연산을 수행할 수 있다.
피쳐 맵 발생기(270)는 프로세싱 엘리먼트(260)의 컨볼루션 연산 결과를 포스트 프로세싱(post-processing)할 수 있다. 피쳐 맵 발생기(270)는 픽셀(pixel) 별로 평균(average) 또는 최대(max) 값을 찾는 풀링(pooling), 문턱값(threshold) 기반으로 데이터를 필터링하는 ReLU (Rectified Linear Unit) 또는 시그모이드(sigmoid)와 같은 활성함수(activation function), 결과치에서 벗어나는 값을 필터링하는 노멀라이즈(normalize) 등의 기능들(function)을 수행할 수 있다.
빠른 병렬 처리를 위해서, 프로세싱 시스템이 플로우 콘트롤러(240), 임시 메모리(250) 및 프로세싱 엘리먼트(260)를 다수개씩 포함할 수도 있다.
도 2의 프로세싱 시스템은 하나 또는 다수개의 집적회로 칩으로 구현될 수 있다. 예를 들어, 프로세싱 시스템 전체가 하나의 집적회로 칩에 시스템 온 칩(system on chip)의 형태로 포함될 수도 있으며, 메인 메모리(210)는 하나의 집적회로 칩에 나머지 구성들(220~270)은 또 다른 집적회로 칩에 포함되는 등 프로세싱 시스템이 다수개의 집적회로 칩들로 구현될 수도 있다.
도 3은 도 2의 프로세싱 엘리먼트(260)의 일실시예 구성도이다.
도 3을 참조하면, 프로세싱 엘리먼트(260)는 곱셈기(310), 덧셈기(320), 레지스터 어레이(330) 및 바운더리 제어기(340)를 포함할 수 있다.
곱셈기(310)는 임시 메모리(250)로부터 전달받은 피쳐(FEATURE)의 값과 웨이트(WEIGHT)의 값을 곱할 수 있다. 곱셈기(310)는 임시 메모리(250)의 동일한 포인트에 저장된 피쳐(FEATURE)의 값과 웨이트(WEIGHT) 값을 곱할 수 있다.
덧셈기(320)는 곱셈기(310)의 곱셈 결과와 레지스터 어레이(330)로부터 제공받은 값을 더할 수 있다.
바운더리 제어기(340)는 바운더리 플래그(BOUNDARY FLAG)를 입력받고, 동일한 바운더리 내에서의 곱셈 결과들이 덧셈기(320)에 의해서 덧셈 연산될 수 있도록 레지스터 제어기(340)를 제어하고, 바운더리 별로 덧셈 연산 결과가 레지스터 어레이로부터 출력될 수 있도록 레지스터 제어기(340)를 제어할 수 있다.
레지스터 어레이(330)는 덧셈기(320)의 덧셈 연산 결과를 저장할 수 있다. 바운더리가 변경되는 경우에는 레지스터 어레이(330)에 저장된 값이 피쳐 맵 발생기(270)로 출력되고, 레지스터 어레이(330)에 저장된 값은 '0'으로 초기화될 수 있다.
결과적으로, 프로세싱 엘리먼트(260)는 도 1에서 설명한 것과 같이, 바운더리 별로 컨볼루션 연산을 수행할 수 있다.
도 4A와 도 4B는 플로우 콘트롤러(240)가 온-칩 메모리(230)에 저장된 이미지와 필터를 리드해 임시 메모리(250)에 라이트하는 과정의 일실시예를 설명하기 위한 도면이다. 여기서는 플로우 콘트롤러(240)가 0값을 스킵하는 제로 스킵핑(zero skipping) 방식을 사용하지 않은 것을 예시하기로 한다.
도 4A의 410은 도 1의 4*4 사이즈의 이미지(110)가 온-칩 메모리(230)에 저장된 형태를 나타내고, 420은 도 1의 2*2 사이즈의 필터(120)가 온-칩 메모리(230)에 저장된 형태를 나타낼 수 있다.
플로우 콘트롤러(240)는 바운더리 별로 도 4의 1,2,3,4와 같은 순서대로 온-칩 메모리(230)에 저장된 이미지(410)를 리드할 수 있다. 즉, 1번째 바운더리로 온-칩 메모리(230)의 이미지(410)로부터 1,5,0,6을 리드하고, 2번째 바운더리로 이미지(410)으로부터 0,6,3,0을 리드하고, 3번째 바운더리로 이미지(410)으로부터 3,0,4,8을 리드하고, 4번째 바운더리로 이미지(410)으로부터 5,0,6,10을 리드할 수 있다. 플로우 콘트롤러(240)의 이와 같은 반복적인 리드 동작에 의해 온-칩 메모리(230)에 저장된 이미지(410)의 피쳐 값들이 복사(duplicate)되는 것을 도 4B에서확인할 수 있다.
또한, 플로우 콘트롤러(240)는 온-칩 메모리(230)에 저장된 필터(420)를 화살표(421)와 같이 9번 반복 리드해 필터(420)의 웨이트 값들을 리드할 수 있다. 즉, 바운더리 사이즈와 동일하게 4개의 웨이트를 반복 리드하는 방식을 사용할 수 있다. 플로우 콘트롤러(240)의 이와 같은 반복적인 리드 동작에 의해 온-칩 메모리(230)에 저장된 필터(420)의 웨이트 값들이 복사(duplicate)되는 것을 도 4B에서 확인할 수 있다.
도 4B의 430은 온-칩 메모리(230)로부터 리드된 피쳐와 웨이트가 임시 메모리(250)에 라이트된 결과를 나타낼 수 있다. 430을 참조하면, 온-칩 메모리의 36개의 포인트(Point 0~35)에 피쳐(Feature)와 웨이트(Weight)가 저장된 것을 확인할 수 있다. 바운더리 플래그(Boundary Flag)는 피쳐(Feature)와 웨이트(Weight)의 바운더리를 구분하기 위한 것으로, 바운더리가 변경될 때마다 그 값이 0 -> 1 -> 0 -> 1로 변경되는 것을 확인할 수 있다.
도 4A와 B를 참조하면, 온-칩 메모리(230)에 저장된 이미지(410)와 필터(420)가 임시 메모리(250)로 저장되는 과정에서 피쳐 값들 및 웨이트 값들이 반복적으로 억세스되는 것에 의해 피쳐 값들 및 웨이트 값들의 일부가 복사(duplicate)되는 것을 확인할 수 있다.
도 5는 플로우 콘트롤러(240)가 온-칩 메모리(230)에 저장된 이미지(410)와 필터(420)를 리드해 임시 메모리(250)에 라이트하는 과정의 다른 실시예를 설명하기 위한 도면이다. 여기서는 플로우 콘트롤러(240)가 제로 스킵핑 방식을 사용하는 것을 예시하기로 한다. 온-칩 메모리(230)에 저장된 이미지(410)와 필터(420)의 형식 및 플로우 콘트롤러(240)가 이미지(410)와 필터(420)를 억세스하는 과정은 도 4A 및 도 4B와 동일하므로, 여기서는 이에 대한 도시를 생략하기로 한다.
플로우 콘트롤러(240)의 제로 스킵핑 방식은 다음의 (1)과 (2)의 방식으로 수행될 수 있다.
(1) 플로우 콘트롤러(240)는 임시 메모리(250)의 동일한 포인트에 저장될 피쳐와 웨이트 중 하나 이상이 0의 값을 가지는 경우에 해당 포인트를 스킵할 수 있다. 상세하게 플로우 콘트롤러(240)는 온-칩 메모리(230)로부터 리드한 피쳐와 웨이트 중 하나 이상이 0의 값을 가지는 경우에는 해당 값을 임시 메모리에 저장한 이후에 라이트될 포인트의 값을 홀드할 수 있다. 라이트될 포인트의 값을 증가시키지 않고 홀드하는 것에 의해 임시 메모리의 해당 포인트에 새로운 값(본래 다음 포인트에 저장되어야 했을 값)이 오버라이트(overwrite)될 수 있다.
도 5의 좌측(430)은 제로 스킵핑이 방식이 사용되지 않고 피쳐(Feature)와 웨이트(Weight)가 임시 메모리(250)에 저장된 경우를 나타내고, 도 5의 우측(530)은 제로 스킵핑 방식이 사용되고 피쳐(Feature)와 웨이트(Weight)가 임시 메모리(250)에 저장된 경우를 나타내는데, 좌측(430)에서 피쳐(Feature)와 웨이트(Weight) 중 하나 이상이 0의 값을 포함하는 포인트(예, Point 1,2,4,5 등)가 오버라이트되어 우측(530)에서는 이러한 포인트들이 제거된 것을 확인할 수 있다.
(2) 플로우 콘트롤러(240)는 동일한 바운더리 내에서 적어도 하나의 포인트는 오버라이트되지 않도록 제어할 수 있다. 이는 바운더리 내부의 4개 포인트가 전부가 오버라이트 된다면 해당 바운더리가 사라져, 해당 바운더리의 컨볼루션 결과값이 도출될 수 없기 때문이다. 도 5의 좌측(430)의 2번째 바운더리(2nd Boundary)를 보면 4개의 포인트들(Point 4~7) 전부가 제로 스킵핑의 대상인데, 이들을 모두 스킵핑한다면 2번째 바운더리의 컨볼루션 연산값이 0이라는 결과를 도출하는 것도 불가능하다. 따라서 이 경우에 플로우 콘트롤러(240)는 피쳐(Feature)와 웨이트(Weight)에 0의 값을 라이트하고 바운더리 플래그(Boundary)를 통해 바운더리를 구별해줄 수 있다. 도 5의 우측(530)의 포인트2(Point 2)가 바로 2번째 바운더리(2nd Boundary)를 나타내는 값이며, 이를 프로세싱 엘리먼트(260)가 연산하면 2번째 바운더리의 컨볼루션 연산 결과가 0이라는 결과를 도출할 수 있다.
상술한 (1)과 (2)의 방식으로 제로 스킵핑 동작을 수행하면, 임시 메모리(250)의 포인트들 중 연산 결과 값에 영향을 주지 않는 포인트들을 제거 가능하므로, 프로세싱 엘리먼트(260)의 불필요한 연산 및 이에 따른 시간 낭비 및 전류 낭비를 막을 수 있다. 또한, 제로 스킵핑이 수행되면서도 바운더리 내의 모든 포인트가 스킵핑되는 것은 방지하므로, 바운더리가 생략되는 문제는 발생하지 않을 수 있다.
도 6은 플로우 콘트롤러(240)가 피쳐와 웨이트를 임시 메모리(250)에 라이트하는 동작을 도시한 순서도이다.
먼저, 플로우 콘트롤러(240)는 라이트할 피쳐 또는 웨이트가 0값을 포함하는지를 확인할 수 있다(601).
피쳐와 웨이트 모두 0값을 포함하지 않는 경우에는(601에서 N), 피쳐와 웨이트가 임시 메모리(250)의 현재 포인트에 라이트될 수 있다(603). 그리고 현재 포인트의 바운더리를 구별하기 위한 바운더리 플래그도 함께 라이트될 수 있다.
현재 포인트의 값은 1만큼 증가되고(605), 다음의 피쳐와 웨이트를 임시 메모리(250)에 라이트하기 위해 다시 단계(601)가 진행될 수 있다.
피쳐 또는 웨이트가 0값을 포함하는 경우에는(601에서 Y), 바운더리 내의 모든 포인트가 제로 스킵핑의 대상이 되는 올 제로 케이스(All zero case)인지 아닌지가 판단될 수 있다(607).
올 제로 케이스가 아닌 경우에(607에서 N), 피쳐와 웨이트가 임시 메모리(250)의 현재 포인트에 라이트될 수 있다(609). 그리고 현재 포인트 값이 증가하지 않고 그대로 유지된 채 다음의 피쳐와 웨이트를 임시 메모리(250)에 라이트하기 위해, 즉 '609'에서 라이트된 피쳐와 웨이트를 오버라이트하기 위해, 다시 단계(601)가 진행될 수 있다.
올 제로 케이스인 경우에(607에서 Y), 임시 메모리(250)의 현재 포인트의 피쳐와 웨이트에 0을 라이트될 수 있다(611). 그리고 현재 포인트의 바운더리를 구별하기 위한 바운더리 플래그도 함께 라이트될 수 있다. 또한, 바운더리 전체가 오버라이트되는 것을 방지하기 위해 현재 포인트의 값을 1만큼 증가시킬 수 있다(613). 그리고 다음의 피쳐와 웨이트를 임시 메모리(250)에 저장하기 위해 다시 단계(601)가 진행될 수 있다.
플로우 콘트롤러가 도 6과 같이 동작하면, 결과적으로 도 5의 우측(530)과 같은 형태로 임시 메모리(250)에 피쳐, 웨이트 및 바운더리 플래그가 라이트될 수 있다.
상술한 실시예에서는 플로우 콘트롤러(240)가 임시 메모리(250)에서 라이트될 포인트의 값을 증가시키지 않고 홀드시키는 것에 의해 새로운 값이 오버라이트되도록 하는 방법으로 제로 스킵핑을 구현한 것을 예시했다. 그러나 이와는 다르게, 플로우 콘트롤러(240)가 제로 스킵핑 대상 피쳐와 웨이트가 임시 메모리(250)에 라이트되지 않도록 제어하는 방식으로 제로 스킵핑 동작이 수행될 수도 있음은 당연하다. 이 경우에도 동일한 바운더리 내에서 적어도 하나의 포인트는 임시 메모리(250)에 라이트되어 바운더리의 구별은 가능하도록 해야한다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
210: 메인 메모리
220: 메모리 인터페이스
230: 온-칩 메모리
240: 플로우 콘트롤러
250: 임시 메모리
260: 프로세싱 엘리먼트
270: 피쳐 맵 발생기

Claims (18)

  1. 피쳐(feature)와 웨이트(weight)를 저장하는 임시 메모리;
    상기 임시 메모리에 저장된 상기 피쳐의 값과 상기 웨이트의 값에 대한 곱셈 연산 및 곱셈 결과에 대한 덧셈 연산을 수행하는 프로세싱 엘리먼트(processing element); 및
    상기 피쳐와 상기 웨이트를 상기 임시 메모리에 저장되도록 제어하고, 상기 임시 메모리의 동일한 포인트에 저장된 피쳐와 웨이트 중 하나 이상이 값이 0인 경우에 해당 포인트에 다음의 피쳐와 다음의 웨이트가 오버 라이트되도록 제어하는 플로우 콘트롤러
    를 포함하는 프로세싱 시스템.
  2. 제 1항에 있어서,
    상기 임시 메모리는 상기 임시 메모리에 저장되는 피쳐와 웨이트의 바운더리를 나타내기 위한 바운더리 플래그를 더 저장하는
    프로세싱 시스템.
  3. 제 2항에 있어서,
    상기 플로우 콘트롤러는 동일한 바운더리 내에서 적어도 하나의 포인트는 오버 라이트되지 않도록 제어하는
    프로세싱 시스템.
  4. 제 2항에 있어서,
    상기 플로우 콘트롤러는 동일한 바운더리 내의 모든 포인트가 오버 라이트 대상으로 판단되는 경우에, 해당 바운더리의 하나의 포인트에 피쳐와 웨이트 중 하나 이상을 0으로 기록하고 바운더리 플래그를 저장하는
    프로세싱 시스템.
  5. 제 1항에 있어서,
    상기 임시 메모리는 스크래치 패드를 포함하는
    프로세싱 시스템.
  6. 다수의 포인트를 포함하고, 각각의 포인트에 피쳐(feature), 웨이트(weight) 및 바운더리 플래그를 저장하는 임시 메모리;
    상기 임시 메모리의 동일한 포인트에 저장된 피쳐의 값과 웨이트의 값을 곱하는 곱셈 연산 및 동일한 바운더리의 곱셈 연산 결과들을 더하는 덧셈 연산을 수행하는 프로세싱 엘리먼트(processing element); 및
    상기 피쳐, 상기 웨이트 및 상기 바운더리 플래그가 상기 임시 메모리에 저장되도록 제어하고, 상기 임시 메모리의 동일한 포인트에 저장된 피쳐와 웨이트 중 하나 이상의 값이 0인 경우에 해당 포인트에 다음의 피쳐와 다음의 웨이트가 오버 라이트되도록 제어하는 플로우 콘트롤러
    를 포함하는 프로세싱 시스템.
  7. 제 6항에 있어서,
    상기 플로우 콘트롤러는 동일한 바운더리 내에서 적어도 하나의 포인트는 오버 라이트되지 않도록 제어하는
    프로세싱 시스템.
  8. 제 6항에 있어서,
    상기 플로우 콘트롤러는 동일한 바운더리 내의 모든 포인트가 오버 라이트 대상으로 판단되는 경우에, 해당 바운더리의 하나의 포인트에 피쳐와 웨이트 중 하나 이상을 0으로 기록하고 바운더리 플래그를 저장하는
    프로세싱 시스템.
  9. 제 6항에 있어서,
    상기 프로세싱 엘리먼트는
    상기 임시 메모리의 동일한 포인트에 저장된 피쳐의 값과 웨이트의 값을 곱하는 곱셈기;
    상기 곱셈기의 곱셈 연산 결과에 대한 덧셈 연산을 위한 덧셈기;
    상기 덧셈기의 덧셈 연산 결과를 저장하는 레지스터 어레이; 및
    상기 바운더리 플래그를 입력받고, 동일한 바운더리의 곱셈 연산 결과들이 덧셈 연산되도록 상기 레지스터 어레이를 제어하고, 바운더리 별로 덧셈 연산 결과가 상기 레지스터 어레이로부터 출력되도록 제어하는 바운더리 제어기를 포함하는
    프로세싱 시스템.
  10. 제 6항에 있어서,
    상기 프로세싱 시스템은
    메인 메모리;
    상기 메인 메모리를 억세스하기 위한 메모리 인터페이스; 및
    상기 메모리 인터페이스를 통해 상기 메인 메모리로부터 리드된 피쳐와 웨이트를 저장하는 온-칩 메모리를 더 포함하고,
    상기 플로우 콘트롤러는 상기 온-칩 메모리에 저장된 피쳐와 웨이트를 상기 임시 메모리로 저장하는
    프로세싱 시스템.
  11. 제 10항에 있어서,
    상기 플로우 콘트롤러는
    상기 온-칩 메모리에 저장된 피쳐를 상기 임시 메모리로 저장하는 과정에서 상기 온-칩 메모리에 저장된 피쳐의 일부를 반복 리드해 복사(duplicate)하는
    프로세싱 시스템.
  12. 제 10항에 있어서,
    상기 프로세싱 시스템은
    상기 프로세싱 엘리먼트의 연산 결과를 후 처리(post processing)하기 위한 피쳐 맵 발생기를 더 포함하는
    프로세싱 시스템.
  13. 제 10항에 있어서,
    상기 메인 메모리는 DRAM을 포함하고,
    상기 온-칩 메모리는 SRAM을 포함하는
    프로세싱 시스템.
  14. 제 6항에 있어서,
    상기 임시 메모리는 스크래치 패드를 포함하는
    프로세싱 시스템.
  15. 제 6항에 있어서,
    상기 프로세싱 시스템은
    상기 프로세싱 엘리먼트와 상기 플로우 콘트롤러를 다수개 포함하는
    프로세싱 시스템.
  16. 피쳐(feature)와 웨이트(weight)를 임시저장하는 임시 메모리;
    상기 임시 메모리에 저장된 상기 피쳐의 값과 상기 웨이트의 값에 대한 곱셈 연산 및 곱셈 결과에 대한 덧셈 연산을 수행하는 프로세싱 엘리먼트(processing element); 및
    상기 피쳐와 상기 웨이트를 상기 임시 메모리에 저장되도록 제어하고, 상기 임시 메모리의 동일한 포인트에 저장될 피쳐와 웨이트 중 하나 이상이 0의 값을 포함하는 경우에 해당 피쳐와 웨이트가 상기 임시 메모리로 저장되지 않도록 제어하는 플로우 콘트롤러
    를 포함하는 프로세싱 시스템.
  17. 제 16항에 있어서,
    상기 임시 메모리는 상기 임시 메모리에 저장되는 피쳐와 웨이트의 바운더리를 나타내기 위한 바운더리 플래그를 더 저장하는
    프로세싱 시스템.
  18. 제 17항에 있어서,
    상기 플로우 콘트롤러는 동일한 바운더리 내에서 적어도 하나의 포인트는 상기 임시 메모리로 저장되도록 제어하는
    프로세싱 시스템.
KR1020180173358A 2018-12-31 2018-12-31 프로세싱 시스템 KR20200082613A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180173358A KR20200082613A (ko) 2018-12-31 2018-12-31 프로세싱 시스템
US16/670,645 US11551069B2 (en) 2018-12-31 2019-10-31 Processing system
JP2019202872A JP7437135B2 (ja) 2018-12-31 2019-11-08 プロセッシングシステム
CN201911201499.1A CN111382861B (zh) 2018-12-31 2019-11-29 处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180173358A KR20200082613A (ko) 2018-12-31 2018-12-31 프로세싱 시스템

Publications (1)

Publication Number Publication Date
KR20200082613A true KR20200082613A (ko) 2020-07-08

Family

ID=71122022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180173358A KR20200082613A (ko) 2018-12-31 2018-12-31 프로세싱 시스템

Country Status (4)

Country Link
US (1) US11551069B2 (ko)
JP (1) JP7437135B2 (ko)
KR (1) KR20200082613A (ko)
CN (1) CN111382861B (ko)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203798B2 (en) * 2003-03-20 2007-04-10 Matsushita Electric Industrial Co., Ltd. Data memory cache unit and data memory cache system
CN103984560B (zh) * 2014-05-30 2017-09-19 东南大学 基于大规模粗粒度嵌入式可重构系统及其处理方法
WO2017015649A1 (en) * 2015-07-23 2017-01-26 Mireplica Technology, Llc Performance enhancement for two-dimensional array processor
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
WO2017129325A1 (en) * 2016-01-29 2017-08-03 Fotonation Limited A convolutional neural network
US20180082181A1 (en) 2016-05-13 2018-03-22 Samsung Electronics, Co. Ltd. Neural Network Reordering, Weight Compression, and Processing
KR102566325B1 (ko) 2016-07-18 2023-08-14 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그의 동작 방법
JP6800656B2 (ja) * 2016-08-24 2020-12-16 キヤノン株式会社 演算回路、その制御方法及びプログラム
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
KR102631381B1 (ko) * 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US20180131946A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolution neural network system and method for compressing synapse data of convolution neural network
KR20180060149A (ko) 2016-11-28 2018-06-07 삼성전자주식회사 컨볼루션 처리 장치 및 방법
KR102642853B1 (ko) * 2017-01-05 2024-03-05 한국전자통신연구원 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
US10395141B2 (en) * 2017-03-20 2019-08-27 Sap Se Weight initialization for machine learning models
US10387298B2 (en) * 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
CN107256424B (zh) * 2017-05-08 2020-03-31 中国科学院计算技术研究所 三值权重卷积网络处理系统及方法
JP7020485B2 (ja) * 2017-06-22 2022-02-16 日本電気株式会社 演算装置、演算方法及びプログラム
CN107656899A (zh) * 2017-09-27 2018-02-02 深圳大学 一种基于fpga的模板卷积实现方法和系统
US20190303757A1 (en) * 2018-03-29 2019-10-03 Mediatek Inc. Weight skipping deep learning accelerator
CN108960414B (zh) * 2018-07-20 2022-06-07 中国人民解放军国防科技大学 一种基于深度学习加速器实现单广播多运算的方法
KR20200091623A (ko) * 2019-01-23 2020-07-31 삼성전자주식회사 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치

Also Published As

Publication number Publication date
JP7437135B2 (ja) 2024-02-22
US11551069B2 (en) 2023-01-10
CN111382861B (zh) 2023-11-10
JP2020109621A (ja) 2020-07-16
CN111382861A (zh) 2020-07-07
US20200210819A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
CN110546654B (zh) 通过构造接口的带宽控制来增强dnn模块的处理性能
KR102642853B1 (ko) 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
US11699067B2 (en) Arithmetic processing apparatus and control method therefor
US10936937B2 (en) Convolution operation device and convolution operation method
US7978905B2 (en) Calculation processing apparatus and control method thereof
CN117217273A (zh) 实现卷积神经网络的硬件和非瞬态计算机可读存储介质
US11748599B2 (en) Super-tiling in neural network processing to enable analytics at lower memory speed
CN108573305B (zh) 一种数据处理方法、设备及装置
CN110770740A (zh) 基于卷积神经网络的图像处理方法和设备,以及无人机
CN112799599B (zh) 一种数据存储方法、计算核、芯片和电子设备
EP3663938A1 (en) Signal processing method and apparatus
CN115237599B (zh) 一种渲染任务处理方法和装置
CN114445336A (zh) 配电设备缺陷检测方法、装置、计算机设备和存储介质
JP2017010255A (ja) 画像認識装置および画像認識方法
CN112200310B (zh) 智能处理器、数据处理方法及存储介质
CN113360911A (zh) 恶意代码同源分析方法、装置、计算机设备和存储介质
US11467973B1 (en) Fine-grained access memory controller
KR20220046794A (ko) 신경망 처리 시스템에서 효율적 메모리 접근을 위한 방법 및 장치
KR20200082613A (ko) 프로세싱 시스템
CN114998158B (zh) 一种图像处理方法、终端设备及存储介质
US11741349B2 (en) Performing matrix-vector multiply operations for neural networks on electronic devices
US10977184B2 (en) Managing memory access for convolutional neural networks
CN114090466A (zh) 一种指令处理装置、方法、计算机设备及存储介质
CN111191780A (zh) 均值池化累加电路、装置以及方法
US20230168809A1 (en) Intelligence processor device and method for reducing memory bandwidth

Legal Events

Date Code Title Description
E902 Notification of reason for refusal