KR102642333B1 - 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치 - Google Patents

인공 신경망의 데이터의 주소를 생성하는 방법 및 장치 Download PDF

Info

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
Application number
KR1020180150077A
Other languages
English (en)
Other versions
KR20190063437A (ko
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/204,499 priority Critical patent/US20190164036A1/en
Publication of KR20190063437A publication Critical patent/KR20190063437A/ko
Application granted granted Critical
Publication of KR102642333B1 publication Critical patent/KR102642333B1/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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

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

인공 신경망의 데이터의 주소를 생성하는 방법 및 장치{METHOD AND APPARATUS FOR GENERATING ADDRESS OF DATA OF ARTIFICIAL NEURAL NETWORK}
본 기재는 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치와 인공 신경망의 가속기에 관한 것이다.
최근 인공지능 분야에서는 심층 신경망(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은 다른 실시예에 따른 가속기를 나타낸 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 기재의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 기재는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 기재를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 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)

  1. 인공 신경망의 데이터의 주소를 생성하는 방법으로서,
    미리 결정된 파라미터를 바탕으로 상기 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행함으로써 상기 데이터의 주소를 미리 결정된 순서에 따라 생성하는 단계를 포함하고,
    상기 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 상기 N차원 루프의 각 루프의 주소 오프셋을 포함하고,
    상기 미리 결정된 파라미터는, 상기 인공 신경망의 연산 장치에 입력될 커널 데이터의 크기, 상기 연산 장치에 입력될 특징 맵 데이터의 크기, 풀링의 크기, 및 스트라이드 값 중 적어도 하나를 바탕으로 미리 결정되고,
    상기 생성하는 단계 이후에,
    상기 데이터가 상기 인공 신경망의 입력 데이터 또는 커널 데이터일 때, 상기 생성된 주소를 상기 인공 신경망의 연산 장치의 피연산자로서 순서대로 입력하는 단계, 및
    상기 데이터가 상기 인공 신경망의 출력 데이터일 때, 상기 인공 신경망의 연산 장치에서 출력되는 데이터를 상기 생성된 주소에 저장하는 단계
    를 더 포함하는 주소 생성 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1항에서,
    상기 미리 결정된 파라미터의 개수는 2N+1인, 주소 생성 방법.
  8. 인공 신경망의 데이터의 주소를 생성하는 장치로서,
    프로세서, 메모리, 및 인터페이스를 포함하고,
    상기 프로세서는 상기 메모리에 저장된 프로그램을 실행하여,
    미리 결정된 파라미터를 바탕으로 상기 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행함으로써 상기 데이터의 주소를 미리 결정된 순서에 따라 생성하는 단계를 수행하고,
    상기 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 상기 N차원 루프의 각 루프의 주소 오프셋을 포함하고,
    상기 미리 결정된 파라미터는, 상기 인공 신경망의 연산 장치에 입력될 커널 데이터의 크기, 상기 연산 장치에 입력될 특징 맵 데이터의 크기, 풀링의 크기, 및 스트라이드 값 중 적어도 하나를 바탕으로 미리 결정되고,
    상기 프로세서는 상기 프로그램을 실행하여,
    상기 데이터가 상기 인공 신경망의 입력 데이터 또는 커널 데이터일 때, 상기 생성된 주소를 상기 인공 신경망의 연산 장치의 피연산자로서 상기 인터페이스를 통해 순서대로 입력하는 단계, 및
    상기 데이터가 상기 인공 신경망의 출력 데이터일 때, 상기 인공 신경망의 연산 장치에서 출력되는 데이터를 상기 인터페이스를 통해 상기 생성된 주소에 저장하는 단계
    를 더 수행하는, 주소 생성 장치.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제8항에서,
    상기 미리 결정된 파라미터의 개수는 2N+1인, 주소 생성 장치.
  15. 인공 신경망의 가속기로서,
    주소 생성 프로세서, 연산 프로세서, 및 메모리를 포함하고,
    상기 주소 생성 프로세서는 상기 메모리에 저장된 프로그램을 실행하여,
    미리 결정된 파라미터를 바탕으로 상기 가속기에 의해 처리될 데이터의 주소를 생성하기 위한 N차원의 루프 연산을 수행함으로써 상기 데이터의 주소를 미리 결정된 순서에 따라 생성하는 단계를 수행하고,
    상기 미리 결정된 파라미터는, 메모리 내의 첫 데이터의 주소값, N차원 루프의 각 루프의 반복 횟수, 및 상기 N차원 루프의 각 루프의 주소 오프셋을 포함하며, 상기 메모리에 저장된 커널 데이터의 크기, 상기 메모리에 저장된 특징 맵 데이터의 크기, 풀링(pooling)의 크기, 및 스트라이드(stride) 값 중 적어도 하나를 바탕으로 미리 결정되고,
    상기 주소 생성 프로세서는 상기 프로그램을 실행하여,
    상기 데이터가 상기 인공 신경망의 입력 데이터 또는 커널 데이터일 때, 상기 생성된 주소를 상기 연산 프로세서에 피연산자로서 순서대로 입력하는 단계, 및
    상기 데이터가 상기 인공 신경망의 출력 데이터일 때, 상기 연산 프로세서에서 출력되는 데이터를 상기 생성된 주소에 따라 상기 메모리에 저장하는 단계
    를 더 수행하는, 가속기.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 제15항에서,
    상기 미리 결정된 파라미터의 개수는 2N+1인, 가속기.
KR1020180150077A 2017-11-29 2018-11-28 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치 KR102642333B1 (ko)

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)

* Cited by examiner, † Cited by third party
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 深圳鲲云信息科技有限公司 地址生成装置、方法、数据缓存器和人工智能芯片

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
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