범용적인 NPU 개발기(1) - 설계계획(1)

최현우·2023년 6월 28일
0

일단 핵심적인 부분부터 구현하고 그외의 곁가지 부분이나 추가적인 기능을 추가할 것으로 계획했기 때문에 우선적으로 구현할 부분과 추후에 추가할 부분으로 나누어져 있다.

  • 목적
    범용적인 CNN 가속기
    • input의 크기에 상관없이 convolution을 수행할 수 있을 것
    • weight의 개수에 상관없이 convolution을 수행할 수 있을 것
    • maxpooling을 수행할 수 있을 것
    • Relu를 수행할 수 있을 것
  • 우선 구현할 기능
    연산유닛
    • quantization 된 8비트 integer인 input, weight, bias에 대한 convolution 수행
    • 여러가지 필터를 가진 convolution의 효율적인 수행
    • 명령에 따라 convolution만 혹은 maxpooling만, convolution -> maxpooling, convolution -> relu, convolution -> relu -> maxpooling 중 하나를 수행할 수 있을 것
  • 추후 추가/보완할 기능
    - zero padding 수행
    • 16비트 input 혹은 weight에 대한 convolution 수행
    • 컨트롤러, 메모리 유닛 설계

본래 시스템에 탑재된다면 메모리와의 통신기능도 수행해야하지만 해당 부분은 구현하려는 시스템의 기능적인 핵심부가 아니므로 일단 제외하기로 했다.

구현하려는 기능 중에서 핵심이 되는 부분은 convolution을 수행하는 부분인데 어떤 구조를 가지게 할지 2가지 생각한게 있다. 다음 글에서 기존 구조와 내가 생각한 구조에 대해 다뤄볼 생각이다.

0개의 댓글