KR102642333B1 - 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치 - Google Patents
인공 신경망의 데이터의 주소를 생성하는 방법 및 장치 Download PDFInfo
- Publication number
- KR102642333B1 KR102642333B1 KR1020180150077A KR20180150077A KR102642333B1 KR 102642333 B1 KR102642333 B1 KR 102642333B1 KR 1020180150077 A KR1020180150077 A KR 1020180150077A KR 20180150077 A KR20180150077 A KR 20180150077A KR 102642333 B1 KR102642333 B1 KR 102642333B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- address
- neural network
- artificial neural
- memory
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 54
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000011176 pooling Methods 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
미리 결정된 파라미터를 바탕으로 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행하는 단계, 그리고 데이터의 주소를 미리 결정된 방향으로 순서대로 생성하는 단계를 통해 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치가 제공된다.
Description
본 기재는 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치와 인공 신경망의 가속기에 관한 것이다.
최근 인공지능 분야에서는 심층 신경망(Deep Neural Network, DNN)이 활용되고 있다. 다층 퍼셉트론(Multi-Layer Perceptron, MLP), 합성곱 신경망(Convolution Neural Network, CNN), 및 순환 신경망(Recurrent Neural Network) 등은 대표적인 심층 신경망 기술이다. DNN은 복수의 레이어로 구성되고, 각 레이어는 행렬 또는 벡터 연산으로 표현될 수 있다. 이때 행렬 또는 벡터 연산에는 높은 연산 능력을 가진 장치가 요구되기 때문에, 행렬 또는 벡터 연산을 효율적으로 처리하기 위한 전용 하드웨어 가속기가 개발 중이다.
한 실시예는 인공 신경망의 데이터의 주소를 생성하는 방법을 제공한다.
다른 실시예는 인공 신경망의 데이터의 주소를 생성하는 장치를 제공한다.
또 다른 실시예는 인공 신경망의 데이터의 주소를 생성하는 주소 생성 프로세서를 포함하는 가속기를 제공한다.
한 실시예에 따르면, 인공 신경망의 데이터의 주소를 생성하는 방법이 제공된다. 상기 주소 생성 방법은, 미리 결정된 파라미터를 바탕으로 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행하는 단계, 그리고 데이터의 주소를 미리 결정된 방향에 따라 순서대로 생성하는 단계를 포함하고, 여기서 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 N차원 루프의 각 루프의 주소 오프셋을 포함한다.
상기 주소 생성 방법은, 데이터가 인공 신경망의 입력 데이터일 때, 생성된 주소의 데이터를 인공 신경망의 연산 장치의 피연산자로서 순서대로 입력하는 단계를 더 포함할 수 있다.
상기 주소 생성 방법은, 데이터가 인공 신경망의 출력 데이터일 때, 인공 신경망의 연산 장치에서 출력되는 데이터를 생성된 주소에 저장하는 단계를 더 포함할 수 있다.
상기 주소 생성 방법은, 데이터가 인공 신경망의 커널 데이터일 때, 생성된 주소의 데이터를 인공 신경망의 연산 장치의 피연산자로서 순서대로 입력하는 단계를 더 포함할 수 있다.
상기 주소 생성 방법에서 미리 결정된 파라미터는, 인공 신경망의 연산 장치에 입력될 커널 데이터의 크기, 연산 장치에 입력될 특징 맵 데이터의 크기, 풀링의 크기, 및 스트라이드 값 중 적어도 하나를 바탕으로 미리 결정될 수 있다.
상기 주소 생성 방법에서 미리 결정된 방향은, 커널 방향, 채널 방향, 풀링 방향, 슬라이딩 윈도우 방향의 순서일 수 있다.
상기 주소 생성 방법에서 미리 결정된 파라미터의 개수는 2N+1일 수 있다.
다른 실시예에 따르면, 인공 신경망의 데이터의 주소를 생성하는 장치가 제공된다. 상기 주소 생성 장치는, 프로세서, 메모리, 및 인터페이스를 포함하고, 프로세서는 메모리에 저장된 프로그램을 실행하여, 미리 결정된 파라미터를 바탕으로 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행하는 단계, 그리고 데이터의 주소를 미리 결정된 방향에 따라 순서대로 생성하는 단계를 수행하고, 여기서 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 N차원 루프의 각 루프의 주소 오프셋을 포함한다.
상기 주소 생성 장치에서 프로세서는 프로그램을 실행하여, 데이터가 인공 신경망의 입력 데이터일 때, 생성된 주소의 데이터를 인공 신경망의 연산 장치의 피연산자로서 인터페이스를 통해 순서대로 입력하는 단계를 더 수행할 수 있다.
상기 주소 생성 장치에서 프로세서는 프로그램을 실행하여, 데이터가 인공 신경망의 출력 데이터일 때, 인공 신경망의 연산 장치에서 출력되는 데이터를 인터페이스를 통해 생성된 주소에 저장하는 단계를 더 수행할 수 있다.
상기 주소 생성 장치에서 프로세서는 프로그램을 실행하여, 데이터가 인공 신경망의 커널 데이터일 때, 생성된 주소의 데이터를 인공 신경망의 연산 장치의 피연산자로서 인터페이스를 통해 순서대로 입력하는 단계를 더 수행할 수 있다.
상기 주소 생성 장치에서 미리 결정된 파라미터는, 인공 신경망의 연산 장치에 입력될 커널 데이터의 크기, 연산 장치에 입력될 특징 맵 데이터의 크기, 풀링의 크기, 및 스트라이드 값 중 적어도 하나를 바탕으로 미리 결정될 수 있다.
상기 주소 생성 장치에서 미리 결정된 방향은, 커널 방향, 채널 방향, 풀링 방향, 슬라이딩 윈도우 방향의 순서일 수 있다.
상기 주소 생성 장치에서 미리 결정된 파라미터의 개수는 2N+1일 수 있다.
또 다른 실시예에 따르면, 인공 신경망의 가속기가 제공된다. 상기 가속기는 주소 생성 프로세서, 연산 프로세서, 및 메모리를 포함하고, 주소 생성 프로세서는 메모리에 저장된 프로그램을 실행하여, 미리 결정된 파라미터를 바탕으로 가속기에 의해 처리될 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행하는 단계, 그리고 데이터의 주소를 미리 결정된 방향에 따라 순서대로 생성하는 단계를 수행하고, 여기서 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 N차원 루프의 각 루프의 주소 오프셋을 포함하며, 메모리에 저장된 커널 데이터의 크기, 메모리에 저장된 특징 맵 데이터의 크기, 풀링(pooling)의 크기, 및 스트라이드(stride) 값 중 적어도 하나를 바탕으로 미리 결정된다.
상기 가속기에서 주소 생성 프로세서는 프로그램을 실행하여, 데이터가 인공 신경망의 입력 데이터일 때, 생성된 주소의 데이터를 연산 프로세서에 피연산자로서 순서대로 입력하는 단계를 더 수행할 수 있다.
상기 가속기에서 주소 생성 프로세서는 프로그램을 실행하여, 데이터가 인공 신경망의 출력 데이터일 때, 연산 프로세서에서 출력되는 데이터를 생성된 주소에 따라 메모리에 저장하는 단계를 더 수행할 수 있다.
상기 가속기에서 주소 생성 프로세서는 프로그램을 실행하여, 데이터가 인공 신경망의 커널 데이터일 때, 생성된 주소의 데이터를 연산 프로세서에 피연산자로서 순서대로 입력하는 단계를 더 수행할 수 있다.
상기 가속기에서 미리 결정된 방향은, 커널 방향, 채널 방향, 풀링 방향, 슬라이딩 윈도우 방향의 순서일 수 있다.
상기 가속기에서 미리 결정된 파라미터의 개수는 2N+1일 수 있다.
주소 생성 장치에 의해 데이터의 주소가 생성되므로, 메모리 내의 데이터를 순서대로 재정렬 하기 위한 추가적인 동작이 불필요하게 되어 가속기의 처리 속도가 향상될 수 있다. 또한, 주소 생성 장치를 이용하여 데이터의 주소를 생성하면, 중복된 데이터를 메모리 내의 다른 주소로 복사할 필요가 없어져서, 메모리 사용을 최소화할 수 있다. 또한, 온칩 메모리 내의 데이터 이동시에도 사용되어, 오프칩 메모리와 온칩 메모리 간의 데이터 트랜잭션이 최소화될 수 있다.
도 1은 한 실시예에 따른 DNN의 레이어의 행렬 연산을 처리하는 전용 하드웨어를 나타낸 블록도이다.
도 2는 한 실시예에 따른 가속기를 나타낸 블록도이다.
도 3은 한 실시예에 따른 인공 신경망의 하나의 레이어에서 하나의 커널에 대해 수행되는 연산을 나타낸 개념도이다.
도 4는 한 실시예에 따른 주소 생성 장치를 나타낸 의사코드이다.
도 5는 한 실시예에 따른 주소 생성 방법을 나타낸 흐름도이다.
도 6은 다른 실시예에 따른 가속기를 나타낸 블록도이다.
도 2는 한 실시예에 따른 가속기를 나타낸 블록도이다.
도 3은 한 실시예에 따른 인공 신경망의 하나의 레이어에서 하나의 커널에 대해 수행되는 연산을 나타낸 개념도이다.
도 4는 한 실시예에 따른 주소 생성 장치를 나타낸 의사코드이다.
도 5는 한 실시예에 따른 주소 생성 방법을 나타낸 흐름도이다.
도 6은 다른 실시예에 따른 가속기를 나타낸 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 기재의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 기재는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 기재를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 한 실시예에 따른 DNN의 레이어의 행렬 연산을 처리하는 전용 하드웨어를 나타낸 블록도이다.
도 1을 참조하면, 각 레이어의 연산을 처리하기 위한 가속기는, 연산 장치(Matrix/Vector computation unit)(또는 연산 프로세서) 및 메모리를 포함한다. 연산 장치는 행렬 연산 또는 벡터 연산을 포함한 각종 연산을 수행할 수 있다. 메모리는 연산 장치에서 연산을 수행할 때 필요한 입력 데이터를 저장하고 연산 장치의 연산 결과인 출력 데이터를 저장할 수 있다. 메모리는 칩 내부의 온칩 메모리(on-chip memory) 및 칩 외부의 오프칩 메모리(off-chip memory)를 포함할 수 있다. 온칩 메모리는 메모리에 대한 빠른 액세스를 위한 구성이고, 오프칩 메모리는 대용량 데이터를 저장하기 위한 메모리이다.
오프칩 메모리는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM) 등으로 구성될 수 있는 대용량 메모리이다. 인공 신경망의 하드웨어 가속기 이외의 다른 하드웨어와 데이터를 공유하기 위한 용도로 사용될 수 있고, 또한 온칩 메모리의 용량이 부족할 때 데이터를 임시로 저장하기 위한 용도로 사용될 수 있다. 온칩 메모리는 정적 랜덤 액세스 메모리(Static Random Access Memory, SRAM) 등으로 구성될 수 있는 메모리이다. 온칩 메모리는 연산 장치에게 데이터를 신속하게 공급할 수 있고 또한 연산 장치의 연산 결과를 빠르게 저장할 수 있다.
일반적으로, 오프칩 메모리에 저장되어 있는 데이터 중 연산을 위해 필요한 데이터의 전부 또는 일부는 온칩 메모리로 옮겨진다. 이후 온칩 메모리에 옮겨진 데이터는 매 클록마다 순차적으로 연산 장치에게 공급될 수 있다. 또한 연산 장치의 출력 데이터도 매 클록마다 순차적으로 온칩 메모리에 저장될 수 있다. 온칩 메모리에 저장된 출력 데이터는 상황에 따라 다음 연산을 위해 재사용되거나 또는 다른 하드웨어와 공유되거나 또는 나중에 재사용되기 위해 오프칩 메모리로 이동될 수 있다.
행렬 연산 또는 벡터 연산을 위해 매 클록마다 입력 데이터가 순차적으로 온칩 메모리에서 연산 장치로 전달되고 연산 장치의 출력 데이터가 온칩 메모리의 미리 결정된 위치에 저장되기 위해서, 데이터는 메모리 상에 순차적으로 저장되어 있을 필요가 있다. 하지만 데이터를 순차적으로 저장하기 위해 추가적으로 수행되는 데이터 재배열 작업은, 전체 가속기의 처리 속도를 떨어뜨리고 성능을 저하시킨다. 또한 나중에 재사용될 데이터는, 재사용 순서에 따라 여러 번 메모리에 저장되므로, 큰 메모리 공간이 필요하게 되고, 가속기의 크기가 증가하여 높은 비용이 발생된다. 특히 CNN과 같이 재사용 데이터가 많은 인공 신경망에서 그 문제가 심각하다.
도 2는 한 실시예에 따른 가속기를 나타낸 블록도이다.
도 2를 참조하면, 한 실시예에 따른 가속기(100)는 연산 프로세서(110), 제1 온칩 메모리(121), 및 제2 온칩 메모리(122)를 포함한다. 한 실시예에 따른 가속기(100)는 CNN에서 사용될 수 있고, MLP 및 RNN 등에서도 사용될 수 있다. CNN에서 연산 프로세서(110)는 MAC(Multiply and Accumulator)일 수 있다.
도 2에서 제1 온칩 메모리(121) 및 제2 온칩 메모리(122)는 연산 프로세서(110)에게 두 개의 피연산자(operand)를 각각 공급할 수 있다. 예를 들어, CNN에서 각 온칩 메모리에 의해 공급되는 두 개의 연산자는 특징 맵(feature map) 데이터 및 커널 데이터(kernel data)일 수 있다. 연산 프로세서(110)에서 피연산자를 연산한 결과는 누산(accumulation)이 진행되는 동안 연산 프로세서(110) 내의 레지스터에 임시로 저장되었다가 이후 제1 온칩 메모리(121) 또는 제2 온칩 메모리(122)로 이동될 수 있다.
도 3은 한 실시예에 따른 인공 신경망의 하나의 레이어에서 하나의 커널에 대해 수행되는 연산을 나타낸 개념도이다.
도 3을 참조하면, 하나의 3차원 커널 데이터의 크기는 KW×KH×C이다. 하나의 3차원 커널 데이터는 입력 특징 맵을 x 방향 및 y 방향으로 순차적으로 스캔하며 특징 맵의 데이터와 합성곱 연산을 수행하고, 출력 특징 맵의 M개의 채널(z 방향) 중에서 하나의 채널을 생성한다. 결과적으로 M개의 커널 데이터는 커널별 합성곱 연산을 통해 M 채널의 출력 특징 맵을 생성할 수 있다. 합성곱 결과에는 이후, 스케일링(scaling), 바이어스(bias), 배치 정규화(batch normalization), 활성화(activation) 및 풀링(pooling) 연산이 선택적으로 적용될 수 있다. 아래 수학식 1은 도 3을 수식화한 것이다.
수학식 1에서 ACT는 활성화 연산을 의미하고, BatchNorm.은 배치 정규화를 의미하며, 풀링 연산은 생략되었다. 수학식 1에서 각 인덱스의 순서는 변경될 수 있고, 입력(input), 커널(kernel), 및 출력(output)에 각각 다른 인덱스가 필요하다. 도 2의 가속기에서 입력 데이터, 커널 데이터, 및 출력 데이터는 메모리 상에 위치하므로, 수학식 1의 입력, 커널, 및 출력의 인덱스는 메모리 상의 주소값으로서 계산될 수 있다.
도 4는 한 실시예에 따른 주소 생성 장치를 나타낸 의사코드이고, 도 5는 한 실시예에 따른 주소 생성 방법을 나타낸 흐름도이다.
인공 신경망에서 입력 데이터, 커널 데이터, 및 출력 데이터의 주소값은 매우 유동적이고 여러 가지 파라미터에 의해 영향을 받을 수 있다. 예를 들어, 도 3의 CNN에서 각 데이터의 주소값은 KW, KH, C, W, H, M 값 및 풀링의 크기, 스트라이드(stride) 값 등에 의해 영향을 받을 수 있다. 한 실시예에서는 다양한 인공 신경망 또는 각 인공 신경망의 레이어에 적용될 수 있는, 프로그램 가능한 주소 생성 장치가 N차원의 루프(loop) 연산기로 구성된다. 이때 N값은 자연수이고, 한 실시예에 따른 주소 생성 장치를 포함하는 하드웨어 가속기의 명세(specification)에 따라 결정될 수 있다.
도 5를 참조하면, 먼저 미리 결정된 3가지 종류의 파라미터가 N차원 루프 연산기에 입력되면, 한 실시예에 따른 주소 생성 장치는 미리 결정된 파라미터를 바탕으로 가속기에 의해 처리될 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행한다(S110). 이때, 도 4의 주소 생성 장치에 입력되는 3가지 종류의 파라미터는 다음과 같다.
1. 메모리 내 첫 데이터의 주소값(base address)
2. 각 루프의 반복 횟수(X_LOOP)
3. 각 루프의 주소 오프셋(X_INC)
한 실시예에서 3종류로 구분되는 파라미터의 개수는 N차원 루프 연산에서 2N+1개이다. 도 4를 참조하면, 7차원 루프의 루프 연산을 위해서, 15개의 파라미터 레지스터(첫 데이터의 주소값 + 루프 반복 횟수 값 7개 + 주소 오프셋 값 7개)가 호스트 프로세서 등을 이용하여 미리 설정된다. 주소 생성 장치에 15개의 파라미터가 입력되면, 미리 설정된 파라미터에 따라 입력 데이터, 또는 커널 데이터, 또는 출력 데이터의 주소값(도 4의 ADDRESS)이 생성될 수 있다.
예를 들어, 도 3의 CNN을 위한 입력 특징 맵 데이터의 주소를 생성하기 위해, 아래 수학식 2와 같이 15개의 파라미터가 미리 설정될 수 있다. 수학식 2에서 P는 풀링의 크기를 나타내고, S는 스트라이드 값을 나타낸다. 그리고 도 3을 참조하면, 수학식 2의 KW는 x 방향으로의 커널 데이터의 크기이고, KH는 y 방향으로의 커널 데이터의 크기이고, C는 채널 방향으로의 커널 데이터의 크기이고, W는 x 방향으로의 입력 특징 맵의 크기이고, H는 y 방향으로의 입력 특징 맵의 크기이다. 즉, 한 실시예에 따른 주소 생성 장치로 입력되는 파라미터는, 커널 데이터의 크기, 입력 특징 맵 데이터의 크기, 풀링의 크기, 스트라이드 값, 및 출력 특징 맵 데이터의 채널의 크기 중 적어도 하나를 바탕으로 미리 결정될 수 있다.
즉, 수학식 2와 같은 3종류 15개의 파라미터가 한 실시예에 따른 주소 생성 장치에 입력되면, 주소 생성 장치는, 데이터의 주소를 미리 결정된 방향에 따라 순서대로 생성한다(S120). 한 실시예에 따르면, 데이터의 주소가 생성되는, 미리 결정된 방향은, 커널 방향, 채널 방향, 풀링 방향, 슬라이딩 윈도우 방향의 순서일 수 있다. 도 3을 참조하면, 입력 특징 맵 데이터의 주소는, [커널 X 방향 -> 커널 Y 방향 -> 채널 방향 -> 풀링 X 방향 -> 풀링 Y 방향 -> 슬라이딩 윈도우 X 방향 -> 슬라이딩 윈도우 Y 방향] 순서대로 생성될 수 있고, 생성된 주소의 데이터가 피연산자로서 연산 프로세서(110)로 순서대로 입력된다.
또는 출력 데이터의 주소 생성을 위한 파라미터가 주소 생성 장치에 입력되면, 인공 신경망의 연산 프로세서(110)에서 출력되는 출력 데이터는 주소 생성 장치에 의해 생성된 주소에 저장된다. 또는 커널 데이터의 주소 생성을 위한 파라미터가 주소 생성 장치에 입력되면, 주소 생성 장치에 의해 생성된 주소의 데이터가 피연산자로서 연산 프로세서(110)로 순서대로 입력된다.
위에서 설명한 것과 같이, 한 실시예에 따른 주소 생성 장치를 이용하면 메모리 내의 데이터를 순서대로 재정렬 하기 위한 추가적인 동작이 불필요하게 되어 가속기의 처리 속도를 높일 수 있다. 또한, 주소 생성 장치를 이용하여 데이터의 주소를 생성하면, 중복된 데이터를 메모리 내의 다른 주소로 복사할 필요가 없어져서, 메모리 사용을 최소화할 수 있다. 또한, 한 실시예에 따른 주소 생성 장치가 온칩 메모리 내의 데이터 이동시에도 사용되면, 오프칩 메모리와 온칩 메모리 간의 데이터 트랜잭션이 최소화될 수 있다.
도 6은 다른 실시예에 따른 가속기를 나타낸 블록도이다.
한 실시예에 따른 가속기는, 컴퓨터 시스템, 예를 들어 컴퓨터 판독 가능 매체로 구현될 수 있다. 도 6을 참조하면, 컴퓨터 시스템(600)은, 버스(670)를 통해 통신하는 프로세서(610), 메모리(630), 사용자 인터페이스 입력 장치(650), 사용자 인터페이스 출력 장치(660), 및 저장 장치(640) 중 적어도 하나를 포함할 수 있다. 컴퓨터 시스템(600)은 또한 네트워크에 결합된 통신 장치(620)를 포함할 수 있다. 프로세서(610)는 중앙 처리 장치(central processing unit, CPU)이거나, 또는 메모리(630) 또는 저장 장치(640)에 저장된 명령을 실행하는 반도체 장치일 수 있다. 메모리(630) 및 저장 장치(640)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(read only memory) 및 RAM(random access memory)를 포함할 수 있다. 본 기재의 실시예에서 메모리는 프로세서의 내부 또는 외부에 위치할 수 있고, 메모리는 이미 알려진 다양한 수단을 통해 프로세서와 연결될 수 있다. 메모리는 다양한 형태의 휘발성 또는 비휘발성 저장 매체이며, 예를 들어, 메모리는 읽기 전용 메모리(read-only memory, ROM) 또는 랜덤 액세스 메모리(random access memory, RAM)를 포함할 수 있다.
따라서, 본 발명의 실시예는 컴퓨터에 구현된 방법으로서 구현되거나, 컴퓨터 실행 가능 명령이 저장된 비일시적 컴퓨터 판독 가능 매체로서 구현될 수 있다. 한 실시예에서, 프로세서에 의해 실행될 때, 컴퓨터 판독 가능 명령은 본 기재의 적어도 하나의 양상에 따른 방법을 수행할 수 있다.
통신 장치(420)는 유선 신호 또는 무선 신호를 송신 또는 수신할 수 있다.
한편, 본 발명의 실시예는 지금까지 설명한 장치 및/또는 방법을 통해서만 구현되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 상술한 실시예의 기재로부터 본 발명이 속하는 기술 분야의 통상의 기술자라면 쉽게 구현할 수 있는 것이다. 구체적으로, 본 발명의 실시예에 따른 방법(예, 네트워크 관리 방법, 데이터 전송 방법, 전송 스케줄 생성 방법 등)은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어, 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은, 본 발명의 실시예를 위해 특별히 설계되어 구성된 것이거나, 컴퓨터 소프트웨어 분야의 통상의 기술자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체는 프로그램 명령을 저장하고 수행하도록 구성된 하드웨어 장치를 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 기록 매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광 기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 롬(ROM), 램(RAM), 플래시 메모리 등일 수 있다. 프로그램 명령은 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라, 인터프리터 등을 통해 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
Claims (20)
- 인공 신경망의 데이터의 주소를 생성하는 방법으로서,
미리 결정된 파라미터를 바탕으로 상기 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행함으로써 상기 데이터의 주소를 미리 결정된 순서에 따라 생성하는 단계를 포함하고,
상기 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 상기 N차원 루프의 각 루프의 주소 오프셋을 포함하고,
상기 미리 결정된 파라미터는, 상기 인공 신경망의 연산 장치에 입력될 커널 데이터의 크기, 상기 연산 장치에 입력될 특징 맵 데이터의 크기, 풀링의 크기, 및 스트라이드 값 중 적어도 하나를 바탕으로 미리 결정되고,
상기 생성하는 단계 이후에,
상기 데이터가 상기 인공 신경망의 입력 데이터 또는 커널 데이터일 때, 상기 생성된 주소를 상기 인공 신경망의 연산 장치의 피연산자로서 순서대로 입력하는 단계, 및
상기 데이터가 상기 인공 신경망의 출력 데이터일 때, 상기 인공 신경망의 연산 장치에서 출력되는 데이터를 상기 생성된 주소에 저장하는 단계
를 더 포함하는 주소 생성 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제1항에서,
상기 미리 결정된 파라미터의 개수는 2N+1인, 주소 생성 방법. - 인공 신경망의 데이터의 주소를 생성하는 장치로서,
프로세서, 메모리, 및 인터페이스를 포함하고,
상기 프로세서는 상기 메모리에 저장된 프로그램을 실행하여,
미리 결정된 파라미터를 바탕으로 상기 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행함으로써 상기 데이터의 주소를 미리 결정된 순서에 따라 생성하는 단계를 수행하고,
상기 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 상기 N차원 루프의 각 루프의 주소 오프셋을 포함하고,
상기 미리 결정된 파라미터는, 상기 인공 신경망의 연산 장치에 입력될 커널 데이터의 크기, 상기 연산 장치에 입력될 특징 맵 데이터의 크기, 풀링의 크기, 및 스트라이드 값 중 적어도 하나를 바탕으로 미리 결정되고,
상기 프로세서는 상기 프로그램을 실행하여,
상기 데이터가 상기 인공 신경망의 입력 데이터 또는 커널 데이터일 때, 상기 생성된 주소를 상기 인공 신경망의 연산 장치의 피연산자로서 상기 인터페이스를 통해 순서대로 입력하는 단계, 및
상기 데이터가 상기 인공 신경망의 출력 데이터일 때, 상기 인공 신경망의 연산 장치에서 출력되는 데이터를 상기 인터페이스를 통해 상기 생성된 주소에 저장하는 단계
를 더 수행하는, 주소 생성 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제8항에서,
상기 미리 결정된 파라미터의 개수는 2N+1인, 주소 생성 장치. - 인공 신경망의 가속기로서,
주소 생성 프로세서, 연산 프로세서, 및 메모리를 포함하고,
상기 주소 생성 프로세서는 상기 메모리에 저장된 프로그램을 실행하여,
미리 결정된 파라미터를 바탕으로 상기 가속기에 의해 처리될 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행함으로써 상기 데이터의 주소를 미리 결정된 순서에 따라 생성하는 단계를 수행하고,
상기 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 상기 N차원 루프의 각 루프의 주소 오프셋을 포함하며, 상기 메모리에 저장된 커널 데이터의 크기, 상기 메모리에 저장된 특징 맵 데이터의 크기, 풀링(pooling)의 크기, 및 스트라이드(stride) 값 중 적어도 하나를 바탕으로 미리 결정되고,
상기 주소 생성 프로세서는 상기 프로그램을 실행하여,
상기 데이터가 상기 인공 신경망의 입력 데이터 또는 커널 데이터일 때, 상기 생성된 주소를 상기 연산 프로세서에 피연산자로서 순서대로 입력하는 단계, 및
상기 데이터가 상기 인공 신경망의 출력 데이터일 때, 상기 연산 프로세서에서 출력되는 데이터를 상기 생성된 주소에 따라 상기 메모리에 저장하는 단계
를 더 수행하는, 가속기. - 삭제
- 삭제
- 삭제
- 삭제
- 제15항에서,
상기 미리 결정된 파라미터의 개수는 2N+1인, 가속기.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/204,499 US20190164036A1 (en) | 2017-11-29 | 2018-11-29 | Method and apparatus for generating address of data of artificial neural network |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170162171 | 2017-11-29 | ||
KR20170162171 | 2017-11-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190063437A KR20190063437A (ko) | 2019-06-07 |
KR102642333B1 true KR102642333B1 (ko) | 2024-03-04 |
Family
ID=66850315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180150077A KR102642333B1 (ko) | 2017-11-29 | 2018-11-28 | 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102642333B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445524A (zh) * | 2019-09-02 | 2021-03-05 | 中科寒武纪科技股份有限公司 | 数据处理方法、相关设备及计算机可读介质 |
US11847465B2 (en) | 2020-11-26 | 2023-12-19 | Electronics And Telecommunications Research Institute | Parallel processor, address generator of parallel processor, and electronic device including parallel processor |
EP4012618A1 (en) | 2020-12-08 | 2022-06-15 | Electronics and Telecommunications Research Institute | Artificial intelligence processor and method of processing deep-learning operation using the same |
KR102710479B1 (ko) * | 2022-02-23 | 2024-09-25 | 한국항공대학교산학협력단 | 효율적인 주소 변환 기능을 구비한 신경망 추론 가속 장치 및 방법 |
CN116804973B (zh) * | 2022-03-18 | 2024-06-18 | 深圳鲲云信息科技有限公司 | 地址生成装置、方法、数据缓存器和人工智能芯片 |
-
2018
- 2018-11-28 KR KR1020180150077A patent/KR102642333B1/ko active IP Right Grant
Non-Patent Citations (2)
Title |
---|
A. Parashar 등. "SCNN: An Accelerator for Compressed-sparse Convolutional Neural Networks". Proceedings of the 44th Annual International Symposium on Computer Architecture |
M. Motamedi 등. "Fast and Energy-Efficient CNN Inference on IoT Devices". arXiv:1611.07151v1 |
Also Published As
Publication number | Publication date |
---|---|
KR20190063437A (ko) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102642333B1 (ko) | 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치 | |
KR102465896B1 (ko) | 집약성을 개선하기 위한 머신 학습 모델들의 수정 | |
US12112251B2 (en) | Methods and apparatus to tile walk a tensor for convolution operations | |
US20190164036A1 (en) | Method and apparatus for generating address of data of artificial neural network | |
Yang et al. | High performance Monte Carlo simulation of Ising model on TPU clusters | |
Dastgeer et al. | Adaptive implementation selection in the SkePU skeleton programming library | |
CN114330730B (zh) | 量子线路分块编译方法、装置、设备、存储介质和产品 | |
CN110837483B (zh) | 张量维度变换的方法以及装置 | |
US20150006597A1 (en) | Optimized Trotterization via Multi-Resolution Analysis | |
CN112836787A (zh) | 通过高效混合并行化减少深度神经网络训练次数 | |
US20240036763A1 (en) | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (mac) operations | |
EP4405861A1 (en) | Methods, apparatus, and articles of manufacture to increase utilization of neural network (nn) accelerator circuitry for shallow layers of an nn by reformatting one or more tensors | |
US20200410330A1 (en) | Composable neural network kernels | |
CN114430838A (zh) | 使用神经网络加速器来处理连续输入 | |
CN112655005A (zh) | 动态小批量大小 | |
CN114830143A (zh) | 含噪声的中型量子时代计算机的变化感知量子位移动方案 | |
CN116324742A (zh) | 针对ai推断的权重布局变换辅助式嵌套循环优化 | |
US20230394802A1 (en) | Methods, apparatus, and articles of manufacture to explain machine learning models | |
US20240319998A1 (en) | On-chip ai compute hardware acceleration | |
CN116050528B (zh) | 振幅放大线路的构建方法、装置、介质及电子装置 | |
US20220044122A1 (en) | Memory-efficient neural network training | |
Sinha | High Performance Sparse Fast Fourier Transform Using OpenACC | |
TW202414200A (zh) | 減少硬體加速器中之記憶體庫衝突 | |
KR20240063137A (ko) | 하드웨어 가속기 최적화형 그룹 컨볼루션 기반 신경망 모델 | |
CN118839741A (en) | Modifying machine learning models to improve locality |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |