KR20230067029A - 딥러닝 경량 가속장치 - Google Patents
딥러닝 경량 가속장치 Download PDFInfo
- Publication number
- KR20230067029A KR20230067029A KR1020210152668A KR20210152668A KR20230067029A KR 20230067029 A KR20230067029 A KR 20230067029A KR 1020210152668 A KR1020210152668 A KR 1020210152668A KR 20210152668 A KR20210152668 A KR 20210152668A KR 20230067029 A KR20230067029 A KR 20230067029A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- specific value
- window
- comparator
- Prior art date
Links
- 238000013135 deep learning Methods 0.000 title abstract description 16
- 230000015654 memory Effects 0.000 claims abstract description 58
- 238000011176 pooling Methods 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims description 11
- 230000001133 acceleration Effects 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/16—Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
Abstract
딥러닝 경량 가속장치가 제공된다. 본 발명의 실시예에 따른 풀링 장치는, 입력 데이터를 구성하는 라인들이 하나씩 순차적으로 저장되는 라인 메모리, 라인 메모리에 현재 저장된 데이터들 중 윈도우가 위치한 데이터들과 메모리로부터 인가되는 이전 특정 값을 비교하여 특정 값을 선택하는 비교기 및 비교기에서 이전에 선택되었던 특정 값인 이전 특정 값이 저장되는 메모리를 포함한다. 이에 의해, 딥러닝 가속기에서 내부 메모리의 입출력을 최소화할 수 있어, 연산시간을 줄일 수 있고 하드웨어 리소스 사용량을 줄여 저전력 동작을 가능하게 한다.
Description
본 발명은 영상 처리 및 시스템 SoC(System on Chip) 기술에 관한 것으로, 더욱 상세하게는 딥러닝 연산 가속 처리를 위한 연산을 수행함에 있어 하드웨어 리소스를 경량화 하드웨어 설계 기술에 관한 것이다.
딥러닝 하드웨어 가속기는 피처 맵(feature map)과 컨볼루션 파라미터(Weight)로 구성되는 입력 데이터를 보다 빠르게 연산하는 것을 목표로 하고 있다.
외부 메모리 접근 시에는 물리적 제약사항인 외부 메모리 허용 Bandwidth를 넘어갈 수 없기 때문에, 데이터의 출력이 최소화 되면 많은 연산을 처리할 여유가 생긴다.
대부분의 딥러닝 하드웨어 가속기에서는 PE 연산(Conv)에 집중하고 있으나, 실제로 풀링(pooling) 연산에 많은 데이터 입출력을 필요로 하므로 총 연산가능성 대비 실제 연산시간은 더 많이 늘어나게 된다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은, 딥러닝 가속기에서 내부 메모리의 입출력을 최소화할 수 있는 풀링 장치 및 방법을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른, 풀링 장치는, 입력 데이터를 구성하는 라인들이 하나씩 순차적으로 저장되는 라인 메모리; 라인 메모리에 현재 저장된 데이터들 중 윈도우가 위치한 데이터들과 메모리로부터 인가되는 이전 특정 값을 비교하여, 특정 값을 선택하는 비교기; 및 비교기에서 이전에 선택되었던 특정 값인 이전 특정 값이 저장되는 메모리;를 포함한다.
특정 값은 최대 값일 수 있다. 윈도우의 사이즈는 N×N이고, 윈도우의 스트라이드(stride)는 N일 수 있다.
라인 메모리는 1개일 수 있다. 그리고, 라인 메모리는 듀얼 포트 메모리일 수 있다.
본 발명의 일 실시예에 따른 풀링 장치는, 비교기에서 선택된 특정 값을 임시 저장하며 메모리로 인가하고, 윈도우 내의 모든 데이터들에 대해 특정 값이 선택되면 선택된 특정 값을 외부로 출력하는 임시 버퍼;를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 풀링 장치는, 라인 메모리에 저장된 입력 데이터가 윈도우의 첫 라인인 경우 0이 비교기에 인가되고, 라인 메모리에 저장된 입력 데이터가 윈도우의 첫 라인이 아닌 경우 메모리에 저장된 이전 특정 값이 비교기에 인가되도록, 멀티플렉싱하는 멀티플렉서;를 더 포함할 수 있다.
한편, 본 발명의 다른 실시예에 따른, 풀링 방법은, 입력 데이터를 구성하는 라인들을 하나씩 순차적으로 라인 메모리에 저장하는 단계; 및 라인 메모리에 현재 저장된 데이터들 중 윈도우가 위치한 데이터들과 메모리로부터 인가되는 이전 특정 값을 비교하여, 특정 값을 선택하는 단계;를 포함한다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따르면, 딥러닝 가속기에서 내부 메모리의 입출력을 최소화할 수 있어, 연산시간을 줄일 수 있고 하드웨어 리소스 사용량을 줄여 저전력 동작을 가능하게 한다.
도 1은 본 발명이 적용 가능한 딥러닝 가속기의 구조를 도시한 도면,
도 2는 N개의 라인 메모리들로 구성한 풀링 장치,
도 3은 본 발명의 일 실시예에 따른 풀링 장치의 구성을 도시한 도면, 그리고,
도 4는 본 발명의 다른 실시예에 따른 풀링 장치의 구성을 도시한 도면이다.
도 2는 N개의 라인 메모리들로 구성한 풀링 장치,
도 3은 본 발명의 일 실시예에 따른 풀링 장치의 구성을 도시한 도면, 그리고,
도 4는 본 발명의 다른 실시예에 따른 풀링 장치의 구성을 도시한 도면이다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
본 발명의 실시예에서는 딥러닝 가속기의 내부 메모리 입출력을 최소화할 수 있는 풀링 장치 및 방법을 제시한다.
도 1은 본 발명이 적용 가능한 딥러닝 가속기의 구조를 도시한 도면이다. 출력 데이터(output feature map)을 순차적으로 생성하는 딥러닝 가속기 하드웨어 구조에서는 풀링(Pooling) 연산을 PE 연산(Conv)과 동일 파이프라인에서 처리한다. 데이터 입력에 복잡도가 증가하지만 출력 데이터를 줄여 줄수 있다는 장점 때문이다.
도 2는, 도 1에 도시된 딥러닝 가속기에서 순차적으로 데이터가 들어 온다는 가정 하에 N×N 정방향 풀링 연산을 위해 N개의 라인 메모리들을 구성하여 풀링 연산 처리를 하는 구조를 나타내었다. 하지만 여러 개의 라인 메모리들이 배치되어야 하므로, 하드웨어 리소스를 많이 필요로 한다.
또한, 비교기의 입력은 N×N으로 다양하게 구현할 수 있는데, 입력되는 데이터의 개수가 많을수록 Throughput은 상승하지만 critical path 및 비교기의 크기가 커지게 된다. 반대로 입력되는 데이터의 개수가 적을수록 하드웨어 사이즈는 작아지게 되지만 iteration을 돌기 때문에 latency가 증가하게 된다.
도 3은 본 발명의 일 실시예에 따른 풀링 장치의 구성을 도시한 도면이다. 본 발명의 실시예에 따른 풀링 장치는, 도 3에 도시된 바와 같이, 라인 메모리(110), 비교기(120) 및 라인 버퍼 SRAM(Static Random Access Memory)(130)을 포함하여 구성된다.
라인 메모리(110)는 입력 데이터를 구성하는 라인들이 하나씩 순차적으로 저장되는 메모리이다. 입력 데이터는 입력 피처 맵(input feature map)과 컨볼루션 파라미터(Weight)로 구성된다.
도 3의 우측에 입력 데이터를 예시하였다. 도시된 입력 데이터의 경우, 라인 메모리(110)에는, 먼저, 데이터 #1, 데이터 #2, 데이터 #3, 데이터 #4, 데이터 #5가 저장되고, 다음, 데이터 #6, 데이터 #7, 데이터 #8, 데이터 #9, 데이터 #10이 저장되며, ... , 마지막으로 데이터 #21, 데이터 #22, 데이터 #23, 데이터 #24, 데이터 #25가 저장된다.
비교기(120)는 라인 메모리(110)에 현재 저장된 데이터들 중 풀링 윈도우가 위치한 2개의 데이터들과 후술할 라인 버퍼 SRAM(130)으로부터 인가되는 이전 최대 값을 비교하여 최대 값을 선택한다.
라인 버퍼 SRAM(130)은 비교기(120)에서 이전에 선택되었던 최대 값(이전 최대 값)이 저장되는 메모리이다.
원래 풀링 윈도우의 사이즈는 2×2이지만, 라인 메모리(110)에서 윈도우의 사이즈는 2×1이 된다.
한편, 풀링 윈도우의 스트라이드(stride)는 2이다. 즉, 현재 풀링 윈도우와 다음 풀링 윈도우의 간격은 2이다. 이에 따라, 데이터 #1, 데이터 #2, 데이터 #3, 데이터 #4를 처리함에 있어, 풀링 윈도우는 겹쳐지지 않는다.
또한, 풀링 윈도우의 스트라이드가 2이므로, 데이터 #11, 데이터 #12, 데이터 #13, 데이터 #14, 데이터 #15를 처리함에 있어사도, 풀링 윈도우는 겹쳐지지 않는다.
본 발명의 실시예에서, 풀링 윈도우에 의한 데이터 스캐닝은 일반적인 영상처리와 동일하게 픽셀 by 픽셀, 라인 to 프레임으로 진행된다. activation이 입력되면 풀링 윈도우 만큼 라인 데이터를 버퍼링 한 뒤에 데이터가 충분히 모이면 풀링을 시작하는 기존 방식과 달리, 본 발명의 실시예에서는 입력과 동시에 풀링을 시작하고 partial 풀링 결과를 라인 버퍼 SRAM(130)에 저장한다. 이를 위한 라인 메모리(110)의 기존 대비 50%가 된다.
도 3에서, 풀링 윈도우가 데이터 #1과 데이터 #2에 위치하면 비교기(120)는 데이터 #1과 데이터 #2 중 최대 값을 라인 버퍼 SRAM(130)에 저장하고, 풀링 윈도우가 데이터 #3과 데이터 #4에 위치하게 되면 비교기(120)는 데이터 #3과 데이터 #4 중 최대 값을 라인 버퍼 SRAM(130)에 저장한다.
다음 풀링 윈도우가 데이터 #6과 데이터 #7에 위치하면, 비교기(120)는 데이터 #6과 데이터 #7 및 이전 최대 값(데이터 #1과 데이터 #2 중 최대 값)을 비교하여 최대 값을 출력한다.
이후 풀링 윈도우가 데이터 #8과 데이터 #9에 위치하면, 비교기(120)는 데이터 #8과 데이터 #9 및 이전 최대 값(데이터 #3과 데이터 #4 중 최대 값)을 비교하여 최대 값을 출력한다.
라인 메모리(110)의 Read/Write 타이밍이 다르기 때문에 라인 메모리(110)는 1개로 구현할 수 있으며, 고속 동작을 위해 동시 Read/Write가 가능한 듀얼 포트 SRAM으로 구현할 수도 있다.
본 발명의 실시예에 따른 풀링 장치는 스트라이드가 풀링 윈도우 사이즈와 동일한 경우, 즉, 윈도우의 사이즈가 N×N 일 때 스트라이드가 N인 경우에 적용가능하다.
도 4는 본 발명의 다른 실시예에 따른 풀링 장치의 구성을 도시한 도면이다. 본 발명의 실시예에 따른 풀링 장치는, 도 4에 도시된 바와 같이, 라인 메모리(110), 비교기(120), 라인 버퍼 SRAM(130), 임시 버퍼(140) 및 멀티플렉서(150)을 포함하여 구성된다.
비교기(120)는 라인 메모리(110)로부터 데이터를 입력받고 멀티플렉서(150)를 통해 0 또는 라인 버퍼 SRAM(130)에 저장된 이전 최대 값을 입력받아 최대 값을 선택한다.
멀티플렉서(150)는 라인 메모리(110)에 저장된 입력 데이터가 풀링 윈도우의 첫 라인인 경우 0이 비교기(120)에 인가되도록 제어되고, 라인 메모리(110)에 저장된 입력 데이터가 윈도우의 첫 라인이 아닌 경우 라인 버퍼 SRAM(130)에 저장된 이전 최대 값이 비교기(120)에 인가되도록 제어된다.
임시 버퍼(140)는 비교기(120)에서 선택된 최대 값을 임시 저장하며 라인 버퍼 SRAM(130)로 인가하는데, 풀링 윈도우 내의 모든 데이터들에 대해 최대 값이 선택되면 외부로 출력한다.
지금까지, 딥러닝 가속기를 위한 풀링 장치에 대해 바람직한 실시예를 들어 상세히 설명하였다.
위 실시예에서는, 경량의 병렬 데이터 처리장치를 적용한 딥러닝 하드웨어 장치로써, PE 연산과 풀링 연산을 동시 병렬에 처리하되, 내부 메모리에서 데이터 입출력을 획기적으로 줄여 적은 리소스만으로 병렬 데이터 처리가 가능한 딥러닝 가속기용 풀링 장치를 제시하였다.
병렬 데이터 처리 및 필요에 따른 풀링 크기가 제어 가능한 하드웨어 구조로, 딥러닝 가속기에서 다양한 형태의 레이어 처리를 위해 내부 메모리 접근 패턴 변경을 적용한 가속 하드웨어 구조이다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
110 : 라인 메모리
120 : 비교기
130 : 라인 버퍼 SRAM(Static Random Access Memory)
140 : 임시 버퍼
150 : 멀티플렉서
120 : 비교기
130 : 라인 버퍼 SRAM(Static Random Access Memory)
140 : 임시 버퍼
150 : 멀티플렉서
Claims (8)
- 입력 데이터를 구성하는 라인들이 하나씩 순차적으로 저장되는 라인 메모리;
라인 메모리에 현재 저장된 데이터들 중 윈도우가 위치한 데이터들과 메모리로부터 인가되는 이전 특정 값을 비교하여, 특정 값을 선택하는 비교기; 및
비교기에서 이전에 선택되었던 특정 값인 이전 특정 값이 저장되는 메모리;를 포함하는 것을 특징으로 하는 풀링 장치.
- 청구항 1에 있어서,
특정 값은,
최대 값인 것을 특징으로 하는 풀링 장치.
- 청구항 1에 있어서,
윈도우의 사이즈는,
N×N이고,
윈도우의 스트라이드(stride)는,
N인 것을 특징으로 하는 풀링 장치.
- 청구항 1에 있어서,
라인 메모리는,
1개인 것을 특징으로 하는 풀링 장치.
- 청구항 1에 있어서,
라인 메모리는,
듀얼 포트 메모리인 것을 특징으로 하는 풀링 장치.
- 청구항 1에 있어서,
비교기에서 선택된 특정 값을 임시 저장하며 메모리로 인가하고, 윈도우 내의 모든 데이터들에 대해 특정 값이 선택되면 선택된 특정 값을 외부로 출력하는 임시 버퍼;를 더 포함하는 것을 특징으로 하는 풀링 장치.
- 청구항 6에 있어서,
라인 메모리에 저장된 입력 데이터가 윈도우의 첫 라인인 경우 0이 비교기에 인가되고, 라인 메모리에 저장된 입력 데이터가 윈도우의 첫 라인이 아닌 경우 메모리에 저장된 이전 특정 값이 비교기에 인가되도록, 멀티플렉싱하는 멀티플렉서;를 더 포함하는 것을 특징으로 하는 풀링 장치.
- 입력 데이터를 구성하는 라인들을 하나씩 순차적으로 라인 메모리에 저장하는 단계; 및
라인 메모리에 현재 저장된 데이터들 중 윈도우가 위치한 데이터들과 메모리로부터 인가되는 이전 특정 값을 비교하여, 특정 값을 선택하는 단계;를 포함하는 것을 특징으로 하는 풀링 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210152668A KR20230067029A (ko) | 2021-11-09 | 2021-11-09 | 딥러닝 경량 가속장치 |
PCT/KR2021/016179 WO2023085443A1 (ko) | 2021-11-09 | 2021-11-09 | 딥러닝 경량 가속장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210152668A KR20230067029A (ko) | 2021-11-09 | 2021-11-09 | 딥러닝 경량 가속장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230067029A true KR20230067029A (ko) | 2023-05-16 |
Family
ID=86335938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210152668A KR20230067029A (ko) | 2021-11-09 | 2021-11-09 | 딥러닝 경량 가속장치 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20230067029A (ko) |
WO (1) | WO2023085443A1 (ko) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190205738A1 (en) * | 2018-01-04 | 2019-07-04 | Tesla, Inc. | Systems and methods for hardware-based pooling |
US20200090023A1 (en) * | 2018-09-14 | 2020-03-19 | Huawei Technologies Co., Ltd. | System and method for cascaded max pooling in neural networks |
KR20210036715A (ko) * | 2019-09-26 | 2021-04-05 | 삼성전자주식회사 | 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크의 풀링을 처리하는 방법 |
US20200097807A1 (en) * | 2019-11-27 | 2020-03-26 | Intel Corporation | Energy efficient compute near memory binary neural network circuits |
-
2021
- 2021-11-09 KR KR1020210152668A patent/KR20230067029A/ko unknown
- 2021-11-09 WO PCT/KR2021/016179 patent/WO2023085443A1/ko unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023085443A1 (ko) | 2023-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110390384B (zh) | 一种可配置的通用卷积神经网络加速器 | |
US11960566B1 (en) | Reducing computations for data including padding | |
US11294599B1 (en) | Registers for restricted memory | |
CN108733415B (zh) | 支持向量随机访存的方法及装置 | |
US11436017B2 (en) | Data temporary storage apparatus, data temporary storage method and operation method | |
US11163686B2 (en) | Method and apparatus for accessing tensor data | |
US20200387772A1 (en) | Data processing method and device | |
WO2019118363A1 (en) | On-chip computational network | |
CN112905530B (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
US20130145373A1 (en) | Information processing apparatus, information processing method, and storage medium | |
US11941528B2 (en) | Neural network training in a distributed system | |
US10769004B2 (en) | Processor circuit, information processing apparatus, and operation method of processor circuit | |
US20200090046A1 (en) | System and method for cascaded dynamic max pooling in neural networks | |
KR20230067029A (ko) | 딥러닝 경량 가속장치 | |
CN114429214A (zh) | 运算单元、相关装置和方法 | |
US9003132B2 (en) | Data processing apparatus and image processing apparatus | |
KR20230066697A (ko) | 딥러닝 가속기를 위한 풀링 장치 | |
WO2022027172A1 (zh) | 数据处理装置、方法和系统以及神经网络加速器 | |
KR20230059536A (ko) | 프로세스 스케줄링 방법 및 장치 | |
CN112639747A (zh) | 处理器的寻址方法、处理器、可移动平台和电子设备 | |
JP2001256106A (ja) | メモリアクセスシステム | |
JP2008102599A (ja) | プロセッサ | |
CN111047029A (zh) | 具有存储器内运算架构的存储器及其操作方法 | |
SE539721C2 (en) | Device and method for performing a Fourier transform on a three dimensional data set |