KR20200069477A - 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법 - Google Patents

싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법 Download PDF

Info

Publication number
KR20200069477A
KR20200069477A KR1020180156562A KR20180156562A KR20200069477A KR 20200069477 A KR20200069477 A KR 20200069477A KR 1020180156562 A KR1020180156562 A KR 1020180156562A KR 20180156562 A KR20180156562 A KR 20180156562A KR 20200069477 A KR20200069477 A KR 20200069477A
Authority
KR
South Korea
Prior art keywords
ifmap
sram
memory
accelerator
input
Prior art date
Application number
KR1020180156562A
Other languages
English (en)
Other versions
KR102667134B1 (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 KR1020180156562A priority Critical patent/KR102667134B1/ko
Publication of KR20200069477A publication Critical patent/KR20200069477A/ko
Application granted granted Critical
Publication of KR102667134B1 publication Critical patent/KR102667134B1/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port

Landscapes

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

Abstract

본 발명은 CNN 하드웨어 가속기 내 컨볼루션 레이어의 온칩 메모리를 더블 버퍼링 없는 싱글포트 메모리로 구성하여 종래에 비교하여 가속기 성능 감소 없이 온칩 메모리의 면적을 크게 감소시킬 수 있다.

Description

싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법{HARDWARE ACCELERATOR FOR NEURAL NETWORK INCLUDING A SINGLE PORT MEMORY AND OPERATION METHOD THEREOF}
본 발명은 종래의 신경망 하드웨어 가속기들이 사용하는 연산 순서인 래스터 스캔 순서를 변경하여 메모리의 읽기 및 쓰기 접근 타이밍을 분리한다.
본 발명은 종래의 CNN(Convolutional Neural Network) 가속기가 사용하는 듀얼포트 메모리 대신 싱글포트 메모리로 CNN 가속기를 구성하여 전체적인 가속기의 칩 면적 중 온칩 메모리가 차지하는 면적을 감소시킨다.
CNN 하드웨어 가속기는 CNN의 많은 연산량을 가속 처리하기 위해 사용된다. CNN 하드웨어 가속기는 일반적으로 CNN을 동작하기 위한 GPU (Graphic processing unit)와 비교하여 작은 하드웨어 리소스 및 낮은 전력으로 동작하여 CNN을 효율적으로 가속할 수 있다.
CNN 하드웨어 가속기는 컨볼루션 연산에 사용할 입력 데이터나 컨볼루션 연산 결과를 임시적으로 저장할 온칩 메모리를 필요로 한다.
온칩 메모리는 컨볼루션 연산기에 가까이 위치하여 빠른 동작 속도로 컨볼루션 연산이 수행될 수 있도록 하지만 하드웨어 내 온칩 메모리의 크기는 외부 메모리와 비교하여 매우 작다.
일반적으로 CNN 하드웨어 가속기의 온칩 메모리에 많은 양의 데이터를 저장할수록 외부 메모리 접근이 감소하여 하드웨어 가속기의 동작 속도가 증가합니다.
종래의 CNN 하드웨어 가속기는 영상이 입력되는 순서인 래스터 스캔 순서로 컨볼루션 연산을 수행하기 때문에 매 클록 사이클에서 온칩 메모리로부터 데이터를 읽는 동작과 이전 컨볼루션 레이어로부터 전달받은 데이터를 저장하기 위한 쓰기 동작이 동시에 발생하여 듀얼포트 메모리를 사용한다.
싱글포트 메모리를 사용하는 경우에도 더블 버퍼링이 필수적이므로 듀얼포트 메모리와 동일한 면적을 차지하는 문제가 있다.
도 1은 종래의 하드웨어 가속기를 나타내는 블록도이다.
도 1에서 Li는 i 번째 컨볼루션 레이어에 입력되는 입력 특징 맵의 폭을 나타내고, ifmap 및 ofmap은 각각 입력 특징 맵과 출력 특징 맵을 나타낸다.
Ni는 Li에서의 ifmap의 채널 갯수를 나타내고 Mi는 필터의 갯수를 나타내고, Hi와 Wi는 컨볼루션 필터의 높이와 폭을 나타낸다.
ifmap SRAM은 일시적으로 입력된 ifmap을 저장하고 이를 ifmap 레지스터(REG)로 전달한다.
ifmap SRAM은 Hi-1 개의 뱅크를 포함하고 각각의 뱅크는 특징 맵에 포함된 Li x Ni개의 워드를 저장한다.
ifmap 레지스터(REG)는 컨볼루션 동작에 사용되는 ifmap을 저장하기 위한 레지스터로 구성된 메모리에 Hi x Wi x Ni개의 특징을 저장한다.
필터 레지스터(REG)는 컨볼루션 동작을 위해 Hi x Wi x Ni x Mi개의 필터 계수를 저장한다.
ifmap 레지스터와 필터 레지스터에 저장된 특징 및 계수들은 MAC(Multiplication and Accumulation) 유닛에 제공되어 컨볼루션 동작을 수행하고 그 결과 Mi-채널의 특징 맵을 생성한다.
ofmap 레지스터는 다음 컨볼루션 레이어의 입력으로 제공되는 출력 특징 맵(ofmap)을 저장한다.
도 2는 도 1의 컨볼루션 레이어에서 수행되는 컨볼루션 연산 방법을 설명하는 알고리즘이다.
도 2의 알고리즘에서 Ki는 Li의 ifmap의 높이를 표시한다.
종래의 ifmap SRAM 구조에서 ifmap 스트림은 ifmap SRAM에 래스터 스캔 순서로 저장되고 같은 순서로 출력된다.
이러한 ifmap SRAM에서 읽기 동작은 Hi-2 SRAM 뱅크에서 수행되고, 쓰기 및 읽기 동작은 하나의 SRAM 뱅크에서 수행된다.
각 뱅크는 쓰기 및 읽기 동작의 쓰루풋 조건을 만족시키기 위해 듀얼포트 SRAM을 사용한다.
그러나 Hi-1 개의 쓰기 포트 중에서 한 번에 하나의 쓰기 포트만 접근할 수 있으며 Hi-2 개의 쓰기 포트는 아이들 상태에 있어야 하므로 하드웨어 자원의 낭비가 크게 발생한다.
본 발명은 온칩 메모리의 면적이 감소되도록 싱글포트 메모리를 포함하는 CNN 하드웨어 가속기와 그 동작 방법을 제공한다.
본 발명은 실시간 처리 속도를 유지하면서 하드웨어 자원 낭비를 방지하기 위하여 메모리 포트 낭비를 방지할 수 있는 메모리 구조 및 접근 스케줄링 기술을 제공한다.
본 발명의 일 실시예에 의한 하드웨어 가속기는 싱글포트 메모리를 포함한다.
본 발명은 CNN 하드웨어 가속기 내 컨볼루션 레이어의 온칩 메모리를 더블 버퍼링 없는 싱글포트 메모리로 구성하여 종래에 비교하여 가속기 성능 감소 없이 온칩 메모리의 면적을 크게 감소시킬 수 있다.
도 1은 종래 기술에 의한 하드웨어 가속기를 나타내는 블록도.
도 2는 종래 기술에 의한 컨볼루션 연산을 나타낸 알고리즘.
도 3은 본 발명의 일 실시예에 의한 컨볼루션 연산을 설명하는 설명도.
도 4는 본 발명의 일 실시예에 의한 컨볼루션 연산을 나타낸 알고리즘.
도 5는 본 발명의 일 실시예에 의한 ifmap 레지스터를 나타낸 블록도.
도 6은 본 발명의 일 실시예에 의한 하드웨어 가속기를 나타내는 블록도.
도 7 및 8은 본 발명의 일 실시예에 의한 컨볼루션 연산을 설명하는 설명도.
도 9는 본 발명의 효과를 설명하는 그래프.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다. 이하의 개시는 본 발명의 설명을 위한 실시예로서 본 발명의 권리범위가 아래의 실시예로 제한되는 것은 아니다.
A. 부분 수직 순서(Partially-vertical order) 컨볼루션
임시 계산 결과를 저장하기 위한 버퍼의 크기를 줄이기 위하여 본 발명에서는 CNN 하드웨어 가속기의 레이어 처리 순서를 변경한다.
도 3은 부분적 수직 순서를 적용한 컨볼루션 레이어의 동작을 나타낸다.
도 3의 (a), (b)는 각각 입력 및 출력 순서를 예시한다.
설명의 편의를 위해 Ki = 12, Li = 5, 필터 크기는 3x3 즉 Hi= Wi = 3인 것으로 가정하며 이미지 경계에서 입력 데이터가 없는 경우 제로 패딩을 수행하는 것으로 가정한다.
도 3의 (a), (b)에서 박스 안의 숫자는 각각 처리 사이클을 표시하고 화살표는 처리 순서를 표시한다.
도 3(c)는 클록 사이클 30 - 45 동안 버퍼(예를 들어 SRAM)에서의 읽기 및 쓰기 동작을 나타낸다.
버퍼는 입력 데이터(ifmap)를 저장하며 이는 컨볼루션 레이어의 3x3 커널을 통해 필터링된다.
사이클 30, 31에서 입력 특징 (6, 3) 및 (7, 3)은 ifmap SRAM에 저장되는데 이들은 이전 레이어에서 출력된 것이다.
사이클 32에서 35까지 입력 특징 (0,4)에서 (5,4)까지는 ifmap 레지스터에 저장되고, ifmap SRAM은 아이들 상태에 있게 된다.
동기식 SRAM의 경우 한 사이클에 한 번의 읽기 동작이 수행되므로 사이클 36에서 입력 특징(6, 0)이 ifmap SRAM에서 읽혀지고 이는 사이클 37에서 ifmap REG에 저장되어 3x3 필터에 의해 처리된다.
같은 사이클에서 입력 특징 (4,4)가 이전 레이어에서 출력되고 ifmap REG에 저장된다.
사이클 37에서 입력 특징 (7,0)이 ifmap SRAM에서 읽혀지고 입력 특징 (5,4)가 이전 레이어에서 읽혀져 ifmap REG에 저장된다.
입력 특징 (6,4), (7,4)는 사이클 38, 39에서 ifmap SRAM으로부터 읽혀져 ifmap REG에 저장된다.
사이클 40 내지 43에서 입력 특징 (8,0) ~ (11, 0)이 ifmap REG에 저장되고 ifmap SRAM은 아이들 상태가 된다.
사이클 44, 45에 입력 특징 (6,1), (7,1)이 ifmap SRAM에서 읽혀져 ifmap REG에 저장된다.
사이클 48에서 (6,0), (7,0), (8,0), (6,1), (7,1), 및 (8,1)를 사용하여 3x3 필터링 동작이 수행되어 출력 특징 (7,0)이 출력된다.
(6,-1), (7, -1), (8, -1)에 대해서는 도 3(b)와 같이 제로 패딩이 수행된다.
필터링 결과는 사이클 49에서 다음 컨볼루션 레이어를 전달된다.
사이클 49에서 (8,0)에 대해서 필터링 동작이 수행되고 그 결과는 사이클 50에 다음 컨볼루션 레이어로 전달되어 그 결과가 ofmap REG에 저장된다.
입력 특징 (6,0)은 (5,0), (6,0), 및 (7,0)을 생성하는데 사용된다.
도 3(b)의 처리 순서는 (5,0), (6,0)이 사이클 14, 15에서 연속적으로 처리되고 (7,0)은 연속적으로 처리되지 않는 컨볼루션 동작을 나타낸다. 대신 (7,0)은 (6,0)이 처리된 후 사이클 33에서 처리된다.
(7,0)을 생성하기 위한 동작에서 (6, 0), (7,0) 및 (8,0)이 필요하다.
(5,0) 및 (6,0)을 생성하기 위해 (6,0), (7,0)이 필요하므로 이들은 ifmap REG에서 ifmap SRAM에 다시 저장된다. 유사하게 (7,0) 또한 ifmap SRAM에 다시 저장된다.
도 3(a)에서 회색 표시된 박스의 입력 특징은 ifmap SRAM에 저장되고 흰색 박스의 입력 특징은 ifmap SRAM에 저장되지 않는다.
매 사이클마다 한번의 읽기 또는 쓰기가 수행된다.
도 3의 경우 읽기 및 쓰기 동작은 매 8 사이클마다 반복되고 수직 순서에서의 컨볼루션 동작은 8 사이클 동안 수행된다.
다만 ifmap SRAM에 대해서는 4개의 아이들 사이클이 존재하는데 이들 4개의 아이들 사이클은 부분 수직 순서 컨볼루션 주기를 4로 줄임으로써 제거될 수 있다.
부분 수직 순서 컨볼루션 주기는 pdconv로 표시하였는데 이는 매 칼럼에 대해서 컨볼루션 동작을 수행하는 클록 사이클 개수를 의미한다.
B. 제안된 알고리즘
도 4는 i 번째 컨볼루션 레이어에 대한 부분 수직 순서 컨볼루션 알고리즘을 나타낸다.
i 번째 컨볼루션 레이어에 대해서 필터 크기는 Hi x Wi로 표시되는데 Hi는 필터의 높이(행 개수), Wi는 필터의 폭(열 개수)이다.
이때 배치 크기는 Mi 및 Ni로 표시되는데 편의상 1로 가정한다.
h_temp는 부분 수직 순서 컨볼루션에서 처리 순서의 변경을 표시한다.
h_temp는 0에서 pdconv까지 증가하는데 2 x (max(Hi)-1)로 선택된다(i>=1). 이때 max(Hi)는 0번째 컨볼루션 레이어를 제외한 모든 컨볼루션 레이어 중에서 필터 커널의 최대값을 표시한다.
pdconv의 값은 ifmap SRAM에서 하나의 사이클에 하나의 쓰기 또는 읽기 동작이 보장되도록 선택되어야 한다.
모든 내부 및 마지막 컨볼루션 레이어들의 경우, 특징 맵의 pdconv개의 라인 중에서 Hi-1개의 라인은 ifmap SRAM에 저장된다.
수학식 1은 본 실시예의 ifmap SRAM의 이차원 좌표 (h,w)에 대한 쓰기 및 읽기 타이밍을 나타낸다.
Figure pat00001
수학식 1에서 mod(a,b)는 a를 b로 나누었을 때의 나머지를 나타내는 모듈로 연산을 의미한다.
본 실시예에서는 Hi-1 개의 라인을 저장하는데 이는 개수 측면에서는 종래의 경우와 같다.
그러나 싱글포트 SRAM을 사용함으로써 종래의 듀얼포트 SRAM을 사용하는 경우에 비하여 면적을 크게 줄일 수 있다.
C. MAC 유닛에 대한 입력을 저장하는 레지스터
각 컨볼루션 레이어에 대해서 ifmap 특징은 레지스터에 저장되는데 ifmap REG는 컨볼루션 동작을 위해 MAC 유닛에 제공할 입력을 위해 사용된다.
전술한 바와 같이 ifmap 특징의 일부는 이전 컨볼루션 레이어에서 제공되고 일부는 ifmap SRAM에서 읽혀진다.
ifmap REG에 저장되는 워드의 개수는 수학식 2와 같다.
Figure pat00002
도 5는 출력 특징 (4,0)을 위한 ifmap REG의 구조를 설명하는 도면이다. 이때 출력 특징 (4,0)은 푸른색 사선이 있는 박스로 표시되어 있다.
실선 화살표는 현재 열에 대한 컨볼루션 동작 순서를 나타내고, 점선 화살표는 다음 열에 대한 컨볼루션 동작 순서를 나타낸다. 이때 max(Hi), Hi, Wi는 3이다.
푸른색 박스는 3x3 컨볼루션 윈도우 내의 입력 특징을 표시하고, pdconv는 4로 선택되며 배치 크기 Mi, 및 Ni는 1이다.
회색 박스로 표시된 입력 특징은 ifmap SRAM에서 제공된 것이고 그 나머지는 이전 레이어에서 제공된 것이다.
컨볼루션 동작은 부분 수직 순서로 진행되므로 ifmap REG에 저장된 특징은 상부 왼쪽에서 하부 오른쪽 방향으로 갱신된다.
예를 들어 ifmap REG의 입력 특징 (0,0)이 무효화되고 ifmap SRAM으로부터 제공되는 입력 특징 (2,2)에 의해 대체된다.
출력 특징 (4,0)에 대한 컨볼루션 동작 이후에 ifmap REG의 (1,0) 위치의 특징이 무효화되고 입력 특징 (3,2)에 의해 대체되는데 이를 회색 바탕의 푸른색 체크 패턴으로 표시하였다.
출력 특징 (5,0)의 컨볼루션 동작을 위해 입력 특징 (6,1)이 필요하다. 입력 특징 (6,1)은 ifmap REG의 위치 (4,2)에 저장되며 이를 회색 바탕의 사선으로 표시하였다. 이는 ifmap 스트림으로부터 제공된다.
입력 특징 (7,1)은 위치 (5,2)에 저장된 ifmap 스트림으로부터 제공되고, 회색 사선 표시된 박스에 대응하며 출력 특징 (6,0)의 컨볼루션 동작에 사용된다.
한 열에 대해서 컨볼루션 동작이 완료되면 다음 열에 대해서 부분 수직 순서 컨볼루션 동작이 진행된다.
D. 최선 및 최후 컨볼루션 레이어를 위한 메모리 구조
일반적으로 입력 이미지는 래스터 스캔 순서로 수신되므로 부분 수직 순서 컨볼루션 동작을 위해서는 처리 순서를 변경할 필요가 있다.
도 6은 본 실시예에서 CNN의 최선 레이어를 위한 ifmap SRAM 구조의 일 예를 도시한다.
본 실시예에서 컨볼루션 레이어는 3x3 필터를 포함하는 것으로 가정한다.
각 SRAM 블록은 H0개의 싱글포트 SRAM 뱅크를 포함하고, 각 SRAM 블록은 입력 데이터에서 H0 - 1 + pdconv 개의 라인을 저장한다.
각 SRAM 블록에서 첫 번째 및 마지막 (H0 - 1)/2개의 뱅크에 저장되는 데이터는 컨볼루션 동작의 경계 처리를 위한 데이터이다.
따라서 한 SRAM 블록의 상부로부터 (H0 - 1)/2개의 뱅크에 대한 읽기 동작이 하부로부터 같은 개수의 뱅크에 대한 읽기 동작과 병렬적으로 수행된다.
경계 처리를 위한 이들 각각의 SRAM 뱅크는 L0 x N0 개의 워드에 대해 저장 공간을 필요로 한다.
SRAM 뱅크 (H0 - 1)/2는 pdconv x L0 x Nx 워드를 저장하고 이 SRAM은 주소를 변경하여 스트리밍 순서를 래스터 스캔 순서에서 부분 수직 순서로 변환한다.
하나의 블록에 저장된 입력 데이터에서 마지막 H0 - 1 개의 라인은 첫 번째 컨볼루션 레이어에 대한 컨볼루션 동작을 위해 또 다른 블록에도 저장된다.
최선 컨볼루션 레이어의 ifmap SRAM은 해당 레이어에서의 입력과 출력 순서의 충돌을 방지하기 위해 다수의 버퍼를 구비하는 다수의 블록을 포함한다.
최선 컨볼루션 레이어에서 ifmap SRAM의 블록 갯수는 수학식 3과 같다.
Figure pat00003
수학식 3의 우변에서 분자는 쓰기 및 읽기 동작에 필요한 클록 사이클 수를 나타내고 분모는 읽기 동작에 필요한 클록 사이클 수를 나타낸다.
싱글포트 SRAM은 쓰기 및 읽기 포트를 공유하므로 SRAM에 입력 데이터를 쓰기 위하여 (H0 -1+pdconv) x L0 개의 클록 사이클이 필요하고 SRAM에서 입력 데이터를 읽기 위하여 pdconv x L0개의 클록 사이클을 필요로 한다.
따라서 하나의 SRAM 블록은 다음 pdconv x L0개의 데이터를 쓰기 위하여 (H0 - 1 + 2 x pdconv) x L0개의 클록 사이클을 필요로 한다.
하나의 블록을 사용하는 경우, SRAM에 데이터를 쓰는데 필요한 클록 사이클 수는 데이터를 읽는데 필요한 사이클 수보다 크므로 메모리 오버플로우를 발생시킨다.
따라서 읽기 쓰루풋을 쓰기 쓰루풋 이상으로 유지하기 위해서는 다수 블록을 구비하는 SRAM이 필요하다.
최후 레이어 또한 부분 수직 처리 순서를 CNN의 최종 출력을 위한 래스터 스캔 순서로 변환하기 위하여 SRAM을 필요로 한다.
래스터라이저는 수학식 3에서 H0 및 max(Hi)를 1로 대체하여 SRAM에서 두 개의 블록을 포함한다.
각 블록은 하나의 싱글포트 SRAM 뱅크를 포함한다.
각 래스터라이저 SRAM 뱅크는 ofmap 중 pdconv 개의 라인을 저장하고 주소를 변경하여 래스터 스캔 순서로 데이터를 출력한다.
SISR(Single Image Super Resolution) 및 노이즈 제거를 CNN 구조는 입력 및 출력 순서를 래스터 스캔 순서로 동일하게 하기 위하여 래스터라이저를 적용한다.
그러나 이미지 분류를 위한 CNN의 경우 최종 컨볼루션 레이어의 ofmap이 특징 맵의 출력 순서에 관계없이 완전 연결 레이어에 입력되므로 래스터라이저를 필요로 하지 않는다.
E. 다채널 ifmap을 저장하는 온칩 SRAM
하나의 ifmap SRAM을 다채널 ifmap에 공유한다면 ifmap SRAM의 포트 갯수는 감소하고 CNN에서의 전체 SRAM 면적도 감소한다.
입력 데이터의 라인들 사이에서는 아이들 사이클이 존재하는데 이들 아이들 사이클을 사용하여 ifmap SRAM을 다채널 ifmap에 공유한다.
도 7은 최초 컨볼루션 레이어에서의 출력 특징 맵에서 채널들을 분리하는 예를 나타낸다.
도 7(a) 및 도 7(b)는 각각 입력 및 출력 순서를 예시하는데 Ki 및 Li는 각각 12와 5로 선택되었다.
배치 크기는 1, Ni는 1, Mi 는 2, Hi 및 Wi 는 3이며 제로 패딩을 가정한다.
도 7(a) 및 도 7(b)의 박스의 숫자는 처리 사이클을 나타내고 화살표는 처리 순서를 나타낸다.
도 7(c)는 클록 사이클 0에서 59까지의 동안 버퍼에서의 쓰기 및 읽기 동작을 나타낸다.
도 7(a)에서 ifmap은 래스터 스캔 순서로 입력되고, ifmap의 각 행의 사이에 Li에 대해서 동일한 5개의 아이들 사이클이 존재한다.
3x3 컨볼루션의 경계 경우를 고려하여 각 블록은 입력 특징에 대해서 6개의 라인을 저장한다.
따라서 블록 1은 (3,0)에서 (8,0)까지의 입력 특징을 저장하고, 블록 0 및 2는 데이터가 없는 경계로 인하여 입력 특징의 5개 라인을 저장한다.
도 7(a)에서 (3,0)에서 (4,4)까지의 입력 특징은 블록 0 및 1 모두에 저장되고, (7,0)에서 (8,4) 까지의 입력 데이터는 블록 1 및 2 모두에 저장된다.
두 SRAM 블록에 저장되는 입력 특징은 회색 박스로 표시하였다.
도 7(c)에서 사이클 0에서 49까지 (0,0)에서 (4,4) 까지의 입력 데이터는 ifmap SRAM에 저장된다.
이들 50개 사이클 중에서 ifmap SRAM에는 25개의 아이들 사이클이 존재하고 이는 하나의 출력 특징에 대해서 컨볼루션 처리를 위해 2개의 사이클이 가용하다는 것을 나타낸다.
사이클 46에서 59까지의 동안 (0,0)에서 (2,1)까지의 입력 특징을 최초 컨볼루션 레이어의 ifmap SRAM에서 읽는다.
ifmap SRAM의 읽기 및 아이들 상태는 교차하는 방식으로 발생하여 SRAM의 입력 및 출력 쓰루풋을 맞춘다.
(0,0)에 위치한 출력 특징은 다음과 같이 출력된다.
사이클 46에서 55까지 (0,0) 에서 (0,1)까지의 입력 데이터를 ifmap SRAM에서 읽고 이들을 ifmap REG에 저장한다.
사이클 56에서 입력 특징 (1,1)을 ifmap SRAM에서 읽고 이를 사이클 57에서 ifmap REG에 저장한다.
사이클 57에서 입력 특징 (0,0), (1,0), (0,1) 및 (1,1)이 가용하고 (0,0)에 위치한 출력 특징이 생성된다.
이 사이클에서 채널 0과 1 두 채널의 출력 특징 (0,0) 즉 (0,0)0 및 (0,0)1이 존재한다.
출력 특징의 채널 0 및 1은 채널 1에 대해서 한 사이클의 지연을 더하여 도 7(b)와 같이 구분할 수 있다.
도 8은 두 채널의 ifmap을 위해 ifmap SRAM을 공유하는 예를 설명한다.
도 8(a) 및 8(b)는 각각 입력 및 출력 순서의 예를 도시한다.
이때 Ki, Li, Hi, Wi, 배치 크기는 도 7의 예와 같으며 Mi와 Ni는 2로 가정한다.
도 8(a) 및 도 8(b)에서 박스 내부의 숫자는 처리 사이클을 나타내고 화살표는 처리 순서를 나타낸다.
도 8(c)는 클록 사이클 32에서 59까지의 동안 버퍼에서의 쓰기 및 읽기 동작을 도시한다.
버퍼는 ifmap을 저장하는데 이는 컨볼루션 레이어의 3x3 커널에 의해 필터링된다.
(3,0) 위치의 특징을 출력하는 순서는 다음과 같다.
도 8(a)에서 ifmap을 위한 채널 0 및 1이 서로 다른 클록 사이클에 입력되어 버퍼를 공유한다.
사이클 32 및 33에서 특징 (2,0)0 및 (2,0)1을 ifmap SRAM에서 읽고 이들을 사이클 33 및 34에 ifmap REG에 저장한다.
사이클 34 및 35에서 입력 특징 (3,0)0 및 (3,0)1이 ifmap REG에 저장된다.
사이클 36에서 39까지의 동안 회색 박스로 표시된 입력 특징 (2,4)0, (2,4)1, (3,4)0 및 (3,4)1이 ifmap SRAM에 저장된다.
사이클 40에서 43까지의 동안 입력 특징 (2,1)0, (2,1)1, (3,1)0 및 (3,1)1을 ifmap SRAM에서 읽고 사이클 41에서 44까지의 동안 이들을 ifmap REG에 저장한다.
사이클 48 및 49에서 이전 레이어에서 제공된 입력 특징 (4,1)0 및 (4,1)1을 ifmap REG에 저장한다.
사이클 49에서 입력 특징 (3,0) 주위의 두 채널의 모든 특징들이 가용하게 되고 컨볼루션 동작이 수행된다.
출력 특징 맵의 순서를 ifmap과 맞추기 위해 출력 특징 (3,0)1이 1 사이클 지연된다.
이에 따라 사이클 50, 51에서 출력 특징 (3,0)0 및 (3,1)1이 다음 컨볼루션 레이어로 전달된다.
사이클 51, 53 및 55에서 출력 특징 (4,0), (5,0) 및 (6,0)이 계산된다.
사이클 52에서 57까지의 동안 출력 특징 (4,0)0, (5,0)0 및 (6,0)0, (4,0)1, (5,0)1 및 (6,0)1이 다음 레이어로 전달된다.
수학식 4는 다채널 ifmap을 공유하는 ifmap SRAM의 (h,w)Ch 좌표에서의 쓰기 및 읽기 타이밍을 나타낸다. 이때 Ch는 ifmap 채널을 나타내는데 0 또는 1이 된다.
수학식 4에서 Ns는 동일한 ifmap SRAM에 저장된 ifmap의 채널 갯수를 나타낸다. 이때 pds conv 및 Ls i는 각각 pdconv와 Li에 Ns를 곱한 값이다. 또한 hCh는 Ns x h + Ch와 동일하다.
Figure pat00004
최후 컨볼루션 레이어는 출력 특징 맵을 지연을 통해 채널을 구분하지 않고 래스터라이저에 전달한다.
따라서 ifmap SRAM이 두 채널 ifmap 의해 공유되는 경우 래스터라이저의 아이들 사이클이 발생하고 아이들 사이클 개수는 래스터라이저의 쓰기 사이클 숫자와 동일하게 된다. 이를 통해 래스터라이저의 SRAM 뱅크 개수를 하나로 줄일 수 있다.
도 9는 본 발명의 효과를 나타내는 그래프이다.
도 9(a) 및 도 9(b)는 이미지 향상 및 이미지 분류를 위해 사용되는 CNN에서 요구하는 ifmap SRAM 및 ifmap REG의 면적을 나타낸다.
도 9(a)에 도시된 바와 같이 SRAM 면적은 본 실시예의 경우 종래의 기술에 비하여 평균적으로 1.84배만큼 감소하였고 ifmap REG 면적은 본 실시예의 경우 2.3배 증가하였다.
그러나 ifmap REG의 크기가 ifmap SRAM에 비하여 117.95배 정도로 매우 작으므로 전체적으로는 온칩 메모리의 면적은 크게 감소한다.
도 9(b)의 경우에도 마찬가지로 본 실시예에서 종래에 비하여 메모리 면적이 감소함을 알 수 있다.
1, 100: 하드웨어 가속기

Claims (6)

  1. 다수의 행과 다수의 열을 구비한 이미지 맵에 대해서 컨벌루션 필터링 연산을 수행하는 가속기에 관한 것으로서,
    상기 이미지 맵의 일부분을 열 순서대로 스캔하되 어느 한 열 내에서 상기 일부분에 포함된 다수의 행 중 일부 행에 대응하는 데이터를 저장하는 레지스터; 및
    상기 어느 한 열 내에서 상기 일부분에 포함된 상기 다수의 행 중 나머지 행에 대응하는 데이터를 저장하는 메모리;
    상기 레지스터에 저장된 데이터와 상기 메모리에 저장된 데이터를 이용하여 상기 컨벌루션 필터링 동작을 수행하는 가속기.
  2. 청구항 1에 있어서, 상기 이미지 맵의 일부분은 상기 이미지 맵의 전체 행 중에서 일부의 행을 포함하는 가속기.
  3. 청구항 1에 있어서, 상기 어느 한 열 내에서는 행 번호가 증가하는 방향으로 스캐닝을 하되 상기 어느 한 열에 포함된 데이터가 모두 스캔되면 상기 어느 한 열의 다음 열에 대해서 스캔 동작을 수행하여 상기 컨벌루션 필터링 동작을 수행하는 가속기.
  4. 청구항 1에 있어서, 상기 이미지 맵의 일부분에 포함된 전체 데이터가 스캔되면 상기 이미지 맵의 나머지 부분에 대해서 열 순서대로 스캔 동작을 수행하면서 상기 컨벌루션 필터링 동작을 수행하는 가속기.
  5. 청구항 1에 있어서, 상기 메모리는 싱글포트 SRAM인 가속기.
  6. 청구항 1에 있어서, 상기 일부 행은 상기 일부분의 첫 행을 포함하고, 상기 나머지 행은 상기 일부분의 마지막 행을 포함하는 가속기.


KR1020180156562A 2018-12-07 2018-12-07 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법 KR102667134B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180156562A KR102667134B1 (ko) 2018-12-07 2018-12-07 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180156562A KR102667134B1 (ko) 2018-12-07 2018-12-07 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20200069477A true KR20200069477A (ko) 2020-06-17
KR102667134B1 KR102667134B1 (ko) 2024-05-20

Family

ID=71405587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180156562A KR102667134B1 (ko) 2018-12-07 2018-12-07 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR102667134B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022045448A1 (ko) * 2020-08-25 2022-03-03 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160165238A1 (en) * 2014-12-09 2016-06-09 Vixs Systems Inc. Neighbor tile buffering for deblock filtering across tile boundaries
US20180121795A1 (en) * 2016-10-28 2018-05-03 Canon Kabushiki Kaisha Data processing apparatus, method for controlling the same, and storage medium storing program
KR20180052063A (ko) * 2016-11-07 2018-05-17 한국전자통신연구원 컨볼루션 신경망 시스템 및 그것의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160165238A1 (en) * 2014-12-09 2016-06-09 Vixs Systems Inc. Neighbor tile buffering for deblock filtering across tile boundaries
US20180121795A1 (en) * 2016-10-28 2018-05-03 Canon Kabushiki Kaisha Data processing apparatus, method for controlling the same, and storage medium storing program
KR20180052063A (ko) * 2016-11-07 2018-05-17 한국전자통신연구원 컨볼루션 신경망 시스템 및 그것의 동작 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A. Shafiee 등. "ISAAC: A Convolutional Neural Network Accelerator with In-Situ Analog Arithmetic in Crossbars". 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022045448A1 (ko) * 2020-08-25 2022-03-03 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기

Also Published As

Publication number Publication date
KR102667134B1 (ko) 2024-05-20

Similar Documents

Publication Publication Date Title
EP2446413B1 (en) Apparatus and method for displaying a warped version of a source image
US10001971B2 (en) Electronic apparatus having parallel memory banks
US20050083338A1 (en) DSP (digital signal processing) architecture with a wide memory bandwidth and a memory mapping method thereof
WO2020073801A1 (zh) 一种3d图像处理中数据读写方法及系统、存储介质及终端
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US20210042616A1 (en) Arithmetic processing device
US10225425B2 (en) Information processing apparatus and method for controlling the same
KR102667134B1 (ko) 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법
US20120327260A1 (en) Parallel operation histogramming device and microcomputer
US6307969B1 (en) Dynamic image encoding method and apparatus
EP1792482B1 (en) Memory optimization for video processing
JP6747305B2 (ja) データ処理装置及びニューラルネットワークシステム
US20240161493A1 (en) Image processing device and image processing method
CN111191780A (zh) 均值池化累加电路、装置以及方法
Lawal et al. Address generation for FPGA RAMs for efficient implementation of real-time video processing systems
EP4391376A1 (en) Performing a separable operation on a two-dimensional array of values at a processing unit comprising a memory
US20240231826A1 (en) Performing an operation on an array of values at a processing unit
US20240231913A1 (en) Performing a separable operation on a two-dimensional array of values at a processing unit comprising a memory
Kazmi et al. FPGA based compact and efficient full image buffering for neighborhood operations
US20240031704A1 (en) Hybrid addressing for imaging and vision data
US20230222621A1 (en) Information processing apparatus, image processing method and computer readable medium
JP5438390B2 (ja) 画像処理装置およびその制御方法
CN118227516A (zh) 在处理单元处对值阵列执行运算
JP4415785B2 (ja) 画像信号処理装置およびその方法
CN118227515A (zh) 在包括存储器的处理单元处对二维值阵列执行可分离运算

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant