KR102633139B1 - 데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치 - Google Patents

데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치 Download PDF

Info

Publication number
KR102633139B1
KR102633139B1 KR1020180107391A KR20180107391A KR102633139B1 KR 102633139 B1 KR102633139 B1 KR 102633139B1 KR 1020180107391 A KR1020180107391 A KR 1020180107391A KR 20180107391 A KR20180107391 A KR 20180107391A KR 102633139 B1 KR102633139 B1 KR 102633139B1
Authority
KR
South Korea
Prior art keywords
data
neural network
feature
circuit
feature map
Prior art date
Application number
KR1020180107391A
Other languages
English (en)
Other versions
KR20200028791A (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 KR1020180107391A priority Critical patent/KR102633139B1/ko
Priority to CN201910620693.7A priority patent/CN110889498A/zh
Priority to US16/511,073 priority patent/US11694074B2/en
Priority to TW108130337A priority patent/TW202029065A/zh
Publication of KR20200028791A publication Critical patent/KR20200028791A/ko
Priority to US18/319,140 priority patent/US20230289601A1/en
Application granted granted Critical
Publication of KR102633139B1 publication Critical patent/KR102633139B1/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/08Learning methods
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • 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
    • G06N3/045Combinations of networks
    • 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
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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
    • G06N3/047Probabilistic or stochastic networks

Landscapes

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

Abstract

본 개시에 따르면, 뉴럴 네트워크 연산을 수행하는 장치에 포함되는 집적 회로는, 뉴럴 네트워크 연산에 이용되는 피처 맵 데이터를, 적어도 하나의 피처를 포함하는 셀 단위로 저장하도록 구성되는 버퍼 및 버퍼로부터 피처 맵 데이터를 수신하고, 수신된 피처 맵 데이터에 포함된 복수의 셀들 내 동일 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써, 추출 데이터를 출력하도록 구성되는 다중화 회로를 포함할 수 있다.

Description

데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치{INTEGRATED CIRCUIT EXTRACTING DATA, NEURAL NETWORK PROCESSOR INCLUDING THE SAME AND NEURAL NETWORK DEVICE}
본 개시의 기술적 사상은 집적 회로, 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치에 관한 것으로서, 자세하게는 뉴럴 네트워크 연산에 필요한 데이터를 추출하기 위한 집적 회로, 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 하나 이상의 뉴럴 네트워크 모델을 이용한 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 따라서, 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
한편, 뉴럴 네트워크 장치는 복잡한 입력 데이터에 연산을 수행해야 하므로, 복잡하고 방대한 입력 데이터로부터 연산에 필요한 데이터를 적은 리소스들 및 적은 전력 소모를 이용해 효과적으로 추출해내는 방법 및 이를 위한 장치가 요구되고 있다.
본 개시의 기술적 사상은 집적 회로, 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치에 있어서, 적은 리소스들을 이용해 연산에 필요한 데이터를 효율적으로 추출해내기 위한 방법 및 장치를 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 연산을 수행하는 장치에 포함되는 집적 회로는, 뉴럴 네트워크 연산에 이용되는 피처 맵 데이터를, 적어도 하나의 피처를 포함하는 셀 단위로 저장하도록 구성되는 버퍼 및 버퍼로부터 피처 맵 데이터를 수신하고, 수신된 피처 맵 데이터에 포함된 복수의 셀들 내 동일 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써, 추출 데이터를 출력하도록 구성되는 다중화 회로를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 프로세서는, 뉴럴 네트워크 프로세서의 외부로부터 외부 데이터를 수신하고, 외부 데이터를 기초로 데이터 및/또는 웨이트를 저장하는 내부 메모리, 내부 메모리로부터 데이터를 수신하고, 수신된 데이터를 피처 맵 데이터로서 셀 단위로 저장하고, 피처 맵 데이터에 포함된 피처들을 복수의 그룹들로 그룹화 하되, 복수의 그룹들 각각은 피처 맵 데이터에 포함된 복수의 셀들 내 동일 좌표 값에 대응되는 피처들을 포함하는 것을 특징으로 하고, 복수의 그룹들 각각으로부터 하나의 피처의 피처 데이터를 추출해냄으로써 추출 데이터(extracted data)를 출력하는 데이터 추출 회로 및 데이터 추출 회로로부터 제공되는 추출 데이터를 이용해 뉴럴 네트워크 연산을 수행하도록 구성되는 연산 회로(arithmetic circuit)를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 프로세서의 데이터 처리 방법은, 뉴럴 네트워크 연산에 필요한 피처 맵 데이터를 버퍼에 적어도 하나의 피처를 포함하는 셀 단위로 저장하는 단계, 피처 맵 데이터에 포함된 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 복수의 좌표 값들에 대해 추출함으로써 매트릭스 형태의 제1 데이터를 생성하는 단계, 제1 데이터의 행(row)들 및/또는 열(column)들을 재배열함으로써 뉴럴 네트워크 연산에 이용되는 추출 데이터를 생성하는 단계 및 연산 회로가 추출 데이터를 이용해 뉴럴 네트워크 연산을 수행하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 장치는, 적어도 하나의 IP 블록 및 시스템 버스를 통해 적어도 하나의 IP 블록과 통신하고, 적어도 하나의 IP 블록으로부터 제공되는 입력 데이터를 기초로 컨볼루션 연산을 포함하는 뉴럴 네트워크 연산을 수행함으로써 정보 신호를 출력하도록 구성되는 뉴럴 네트워크 프로세서를 포함할 수 있고, 뉴럴 네트워크 프로세서는, 입력 데이터를 입력 피처 맵으로서 복수의 셀들로 나누어 저장하고, 복수의 셀들 내 제1 셀 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출함으로써 컨볼루션 연산에 이용되는 추출 데이터를 생성 수 있다.
본 개시의 기술적 사상의 일측면에 따른 피처 맵 데이터로부터 추출된 추출 데이터를 이용해 뉴럴 네트워크 연산을 수행하는 장치에 포함된 집적 회로는, 피처 맵 데이터를, 적어도 하나의 피처를 포함하는 셀 단위로 저장하도록 구성되는 버퍼, 하나의 셀에 포함된 피처들의 개수 이하 개수의 다중화기들을 이용해 피처 맵 데이터로부터 제1 데이터를 추출하되, 제1 데이터는 추출 데이터에 포함되는 모든 피처 데이터들을 포함하는 것을 특징으로 하는 제1 다중화 회로 및 제1 데이터의 행 개수 및 열 개수를 더한 개수 이하 개수의 다중화기들을 이용해, 제1 데이터의 행 및/또는 열을 재배열함으로써 추출 데이터를 생성하는 제2 다중화 회로를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 집적 회로, 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치에 의하면, 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 작은 크기의 다중화기들을 이용해 연산에 필요한 데이터를 추출해낼 수 있고, 뿐만 아니라 데이터 추출 속도가 빨라지거나 데이터 추출에 소모되는 전력이 감소할 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치를 나타낸다.
도 2는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치를 나타낸다.
도 3은 뉴럴 네트워크 구조의 일 예로서, 컨볼루션 뉴럴 네트워크의 구조를 나타낸다.
도 4a 및 도 4b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면이다.
도 5는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 집적 회로를 나타낸다.
도 6은 본 개시의 예시적 실시 예에 따른 데이터 추출 회로를 나타낸다.
도 7a는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 피처 맵 데이터 및 추출 데이터를 나타낸다.
도 7b는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 셀의 좌표 값들을 나타낸다.
도 7c는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 셀들 및 제1 다중화 회로를 나타낸다.
도 8a 및 도 8b는 제1 데이터의 회전 과정을 설명하기 위한 매트릭스 형태의 데이터들을 나타낸다.
도 9a 및 도 9b는 본 개시의 예시적 실시 예에 따른 제2 다중화 회로를 나타낸다.
도 10은 본 개시의 예시적 실시 예에 따른 제2 다중화 회로를 나타낸다.
도 11은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치의 데이터 처리 방법의 순서도를 나타낸다.
도 12는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 피처 맵 데이터 및 추출 데이터를 나타낸다.
도 13a 내지 도 13c는 본 개시의 예시적 실시 예에 따른 다중화 회로를 나타낸다.
도 14a 내지 도 14c는 본 개시의 예시적 실시 예에 따른 도 13a 내지 도 13c의 다중화 회로의 데이터 선택 및 추출 방법을 설명하기 위한 매트릭스 형태의 데이터들을 나타낸다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치(10)를 나타낸다. 뉴럴 네트워크 장치(10)는 적어도 하나의 IP 블록(Intellectual Property) 및 뉴럴 네트워크 집적 회로(100)를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(10)는 제1 IP 블록(IP1) 내지 제3 IP 블록(IP3) 및 뉴럴 네트워크 집적 회로(100)를 포함할 수 있다. 뉴럴 네트워크 장치(10)는 반도체 시스템에서 다양한 기능을 수행하도록 설계될 수 있으며, 예컨대 뉴럴 네트워크 장치(10)는 어플리케이션 프로세서(Application Processor)일 수 있다. 뉴럴 네트워크 장치(10)는 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황을 판단하거나 IP 블록들 중 적어도 하나를 제어할 수 있다. 예를 들어, 뉴럴 네트워크 장치(10)는 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT(Internet of Things) 디바이스 등에 적용될 수 있으며, 이외에도 다양한 종류의 전자 장치들 중 적어도 하나에 적용될 수 있다.
뉴럴 네트워크 장치(10)는 다양한 종류의 IP 블록들을 포함할 수 있다. 예를 들어, IP 블록들은 프로세싱 유닛(processing unit), 프로세싱 유닛에 포함된 복수의 코어들(cores), MFC(Multi-Format Codec), 비디오 모듈(예컨대, 카메라 인터페이스, JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서, 또는 믹서 등), 3D 그래픽 코어, 오디오 시스템, 드라이버, 디스플레이 드라이버, 휘발성 메모리, 비휘발성 메모리(non-volatile memory), 메모리 컨트롤러(memory controller), 입출력 인터페이스 블록(input and output interface block), 또는 캐시 메모리(cache memory) 등을 포함할 수 있다. 제1 IP 블록(IP1) 내지 제3 IP 블록(IP3) 각각은 다양한 종류의 IP 블록들 중 적어도 하나를 포함할 수 있다.
IP들을 연결하기 위한 기술로 시스템 버스(System Bus)를 기반으로 한 연결방식이 있다. 예를 들어, 표준 버스 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 전술된 버스 타입들 중 AXI는 IP들 사이의 인터페이스 프로토콜로서, 다중 아웃스탠딩 어드레스(multiple outstanding address) 기능과 데이터 인터리빙(data interleaving) 기능 등을 제공할 수 있다. 이외에도, 소닉사(SONICs Inc.)의 uNetwork 나 IBM사의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 시스템 버스에 적용되어도 무방할 것이다.
뉴럴 네트워크 집적 회로(100)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 수신되는 입력 데이터를 기초로 연산을 수행하고, 수행 결과를 기초로 정보 신호(information signal)를 생성하거나, 또는 뉴럴 네트워크를 재훈련(retrain)할 수 있다. 뉴럴 네트워크의 모델들은 GoogleNet, AlexNet, VGG Network 등과 같은 CNN(Convolution Neural Network), R-CNN(Region with Convolution Neural Network), RPN(Region Proposal Network), RNN(Recurrent Neural Network), S-DNN(Stacking-based deep Neural Network), S-SDNN(State-Space Dynamic Neural Network), Deconvolution Network, DBN(Deep Belief Network), RBM(Restrcted Boltzman Machine), Fully Convolutional Network, LSTM(Long Short-Term Memory) Network, Classification Network 등 다양한 종류의 모델들을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 집적 회로(100)는 뉴럴 네트워크의 모델들에 따른 연산을 수행하기 위한 하나 이상의 프로세서를 포함할 수 있다. 또한, 뉴럴 네트워크 집적 회로(100)는 뉴럴 네트워크의 모델들에 대응되는 프로그램들을 저장하기 위한 별도의 메모리(미도시)를 포함할 수도 있다. 뉴럴 네트워크 집적 회로(100)는 뉴럴 네트워크 처리 장치(neural network processing device), 뉴럴 네트워크 프로세서(neural network processor) 또는 뉴럴 네트워크 처리 유닛(Neural network Processing Unit; NPU) 등으로 호칭될 수 있다.
뉴럴 네트워크 집적 회로(100)는 시스템 버스를 통해 적어도 하나의 IP 블록으로부터 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터를 기초로 정보 신호를 생성할 수 있다. 예를 들어, 뉴럴 네트워크 집적 회로(100)는 입력 데이터에 뉴럴 네트워크 연산을 수행함으로써 정보 신호를 생성해낼 수 있으며, 뉴럴 네트워크 연산은 컨볼루션 연산을 포함할 수 있다. 뉴럴 네트워크 집적 회로(100)의 컨볼루션 연산에 관해서는 도 4a 및 도 4b를 참조해 보다 자세히 설명된다. 뉴럴 네트워크 집적 회로(100)가 생성하는 정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 집적 회로(100)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 하지만, 이에 제한되는 것은 아니며, 뉴럴 네트워크 집적 회로(100)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치(10)에 의하면, 뉴럴 네트워크 집적 회로(100)는 적어도 하나의 IP 블록으로부터 제공되는 입력 데이터를 기초로 입력 피처 맵 데이터(input feature map data)를 버퍼에 셀 단위로 저장할 수 있다. 여기서, 하나의 셀은 적어도 하나의 피처를 포함할 수 있다. 뉴럴 네트워크 집적 회로(100)는 입력 피처 맵 데이터에 포함된 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 입력 추출 데이터를 생성해낼 수 있다. 다시 말해, 뉴럴 네트워크 집적 회로(100)는 복수의 셀들 내 제1 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 입력 추출 데이터의 제1 좌표 값에 대응되는 값을 생성해낼 수 있다. 일 실시 예에서, 뉴럴 네트워크 집적 회로(100)는 상기 추출된 피처 데이터를 기초로 제1 데이터를 생성하고, 제1 데이터를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 입력 추출 데이터를 생성할 수 있다. 뉴럴 네트워크 집적 회로(100)는 입력 추출 데이터와 웨이트 값을 곱셈 연산함으로써 컨볼루션 연산을 수행할 수 있다. 위와 같이, 뉴럴 네트워크 집적 회로(100)는 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 작은 크기의 다중화기들을 이용해 연산에 필요한 데이터를 추출해낼 수 있다. 이로써, 뉴럴 네트워크 집적 회로(100)의 데이터 추출 속도가 빨라지고 데이터 추출에 소모되는 전력이 감소할 수 있다. 이는 나아가, 뉴럴 네트워크 장치(10)의 동작 속도를 향상시키거나 뉴럴 네트워크 장치(10)의 소모 전력을 감소시킬 수 있다. 또한 구체적으로는, 뉴럴 네트워크 집적 회로(100)의 구현에 종래에 비해 적은 개수의 다중화기가 필요하기 때문에, 뉴럴 네트워크 집적 회로(100)를 칩(chip)으로 구현함에 있어 다중화기의 면적을 줄일 수 있어 설계상 이점을 누릴 수도 있다.
도 2는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치(10)를 나타낸다. 특히, 도 2는 도 1에 개시된 뉴럴 네트워크 장치(10)의 보다 구체적인 예시적 실시 예를 나타낸다. 도 2의 뉴럴 네트워크 장치(10)에 관해 도 1과 중복되는 설명은 생략한다.
뉴럴 네트워크 장치(10)는 RAM(Random Access Memory; 200), 프로세서(300), 메모리(400) 및 센서 모듈(500)을 포함할 수 있다.
일 실시 예에서, 뉴럴 네트워크 집적 회로(100)는 뉴럴 네트워크 처리 유닛(NPU; Neural network Processing Unit)일 수 있다.
RAM(200)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(400)에 저장된 프로그램들 및/또는 데이터는 프로세서(300)의 제어 또는 부팅 코드에 따라 RAM(200)에 일시적으로 로딩될 수 있다. RAM(200)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리를 이용해 구현될 수 있다.
프로세서(300)는 뉴럴 네트워크 장치(10)의 전반적인 동작을 제어할 수 있으며, 일 예로서 프로세서(300)는 중앙 프로세싱 유닛(Central Processing Unit; CPU)일 수 있다. 프로세서(300)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(300)는 RAM(200) 및 메모리(400)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예를 들어, 프로세서(300)는 메모리(400)에 저장된 프로그램들을 실행함으로써 뉴럴 네트워크 장치(10)의 기능들을 제어할 수 있다.
메모리(400)는 데이터를 저장하기 위한 저장 장소로서, 예를 들어, OS(Operating System), 각종 프로그램들 및 각종 데이터를 저장할 수 있다. 메모리(400)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(400)는 휘발성 메모리(volatile memory) 또는 비휘발성 메모리(non-volatile memory) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함할 수 있다. 휘발성 메모리는 DRAM(Dynamic RAM), SRAM(Static RAM), SDRAM(Synchronous DRAM), PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FeRAM(Ferroelectric RAM) 등을 포함할 수 있다. 또한 일 실시 예에 있어서, 메모리(400)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수도 있다.
센서 모듈(500)은 뉴럴 네트워크 장치(10) 주변의 정보를 수집할 수 있다. 센서 모듈(500)은 뉴럴 네트워크 장치(10) 외부로부터 이미지 신호를 센싱 또는 수신할 수 있고, 센싱 또는 수신된 이미지 신호를 이미지 데이터, 즉 이미지 프레임으로 변환할 수 있다. 이를 위해, 센서 모듈(500)은 센싱 장치, 예컨대 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서 등 다양한 종류의 센싱 장치들 중 적어도 하나를 포함하거나, 또는 상기 장치로부터 센싱 신호를 수신할 수 있다. 일 실시 예에서, 센서 모듈(500)은 이미지 프레임을 뉴럴 네트워크 집적 회로(100)에 제공할 수 있다. 예를 들어, 센서 모듈(500)은 이미지 센서를 포함할 수 있으며, 뉴럴 네트워크 장치(10)의 외부 환경을 촬영함으로써 비디오 스트림을 생성하고, 비디오 스트림의 연속되는 이미지 프레임들을 뉴럴 네트워크 집적 회로(100)에 순차적으로 제공할 수 있다.
본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치(10)에 의하면, 뉴럴 네트워크 집적 회로(100)는 적어도 하나의 IP 블록으로부터 제공되는 입력 데이터를 기초로 입력 피처 맵 데이터(input feature map data)를 버퍼에 셀 단위로 저장할 수 있다. 여기서, 하나의 셀은 적어도 하나의 피처를 포함할 수 있다. 뉴럴 네트워크 집적 회로(100)는 입력 피처 맵 데이터에 포함된 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 입력 추출 데이터를 생성해낼 수 있다. 다시 말해, 뉴럴 네트워크 집적 회로(100)는 복수의 셀들 내 제1 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 입력 추출 데이터의 제1 좌표 값에 대응되는 값을 생성해낼 수 있다. 일 실시 예에서, 뉴럴 네트워크 집적 회로(100)는 상기 추출된 피처 데이터를 기초로 제1 데이터를 생성하고, 제1 데이터를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 입력 추출 데이터를 생성할 수 있다. 뉴럴 네트워크 집적 회로(100)는 입력 추출 데이터와 웨이트 값들을 곱셈 연산함으로써 컨볼루션 연산을 수행할 수 있다. 위와 같이, 뉴럴 네트워크 집적 회로(100)는 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 작은 크기의 다중화기들을 이용해 연산에 필요한 데이터를 추출해낼 수 있다. 이로써, 뉴럴 네트워크 집적 회로(100)의 데이터 추출 속도가 빨라지고 데이터 추출에 소모되는 전력이 감소할 수 있다. 이는 나아가, 뉴럴 네트워크 장치(10)의 동작 속도를 향상시키거나 뉴럴 네트워크 장치(10)의 소모 전력을 감소시킬 수 있다. 또한 구체적으로는, 뉴럴 네트워크 집적 회로(100)의 구현에 종래에 비해 적은 개수의 다중화기가 필요하기 때문에, 뉴럴 네트워크 집적 회로(100)를 칩(chip)으로 구현함에 있어 다중화기의 면적을 줄일 수 있어 설계상 이점을 누릴 수도 있다.
도 3은 뉴럴 네트워크 구조의 일 예로서, 컨볼루션 뉴럴 네트워크의 구조를 나타낸다. 뉴럴 네트워크(NN)는 복수의 레이어들(L1 내지 Ln)을 포함할 수 있다. 복수의 레이어들(L1 내지 Ln) 각각은 선형 레이어 또는 비선형 레이어일 수 있으며, 일 실시 예에 있어서, 적어도 하나의 레이어 및 적어도 하나의 비선형 레이어가 결합되어 하나의 레이어로 지칭될 수도 있다. 예시적으로, 선형 레이어는 컨볼루션 레이어(convolution layer) 및 풀리 커넥티드 레이어(fully connected layer)를 포함할 수 있으며, 비선형 레이어는 풀링(pooling layer) 및 활성 레이어(activation layer)를 포함할 수 있다.
예시적으로, 제1 레이어(L1)는 컨볼루션 레이어이고, 제2 레이어(L2)는 풀링 레이어이고, 제n 레이어(Ln)는 출력 레이어로서 풀리 커넥티드 레이어일 수 있다. 뉴럴 네트워크(NN)는 활성 레이어를 더 포함할 수 있으며, 다른 종류의 연산을 수행하는 레이어를 더 포함할 수 있다.
복수의 레이어들(L1 내지 Ln) 각각은 입력되는 데이터(예컨대, 이미지 프레임) 또는 이전 레이어에서 생성된 피처 맵을 입력 피처 맵으로서 수신하고, 입력 피처 맵을 연산함으로써 출력 피처 맵 또는 인식 신호(REC)를 생성할 수 있다. 이 때, 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터를 의미한다. 피처 맵들(FM1, FM2, FMn)은 예컨대 2차원 매트릭스 또는 3차원 매트릭스(또는 텐서(tensor)) 형태를 가질 수 있다. 피처 맵들(FM1, FM2, FMn)은 너비(W)(또는 칼럼), 높이(H)(또는 로우) 및 깊이(D)를 가지며, 이는 좌표상의 x축, y축 및 z축에 각각 대응될 수 있다. 이 때, 깊이(D)는 채널 수로 지칭될 수 있다.
제1 레이어(L1)는 제1 피처 맵(FM1)을 웨이트 맵(WM)과 컨볼루션함으로써 제2 피처 맵(FM2)을 생성할 수 있다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 필터링할 수 있으며, 필터 또는 커널로도 지칭될 수 있다. 웨이트 맵(WM)의 깊이, 즉 채널 개수는 제1 피처 맵(FM1)의 깊이, 즉 채널 개수와 동일하며, 웨이트 맵(WM)과 제1 피처 맵(FM1)의 동일한 채널끼리 컨볼루션 될 수 있다. 웨이트 맵(WM)이 제1 피처 맵(FM1)을 슬라이딩 윈도우로 하여 횡단하는 방식으로 시프트 될 수 있다. 시프트되는 양은 "스트라이드(stride) 길이" 또는 "스트라이드"로 지칭될 수 있다. 각 시프트 동안, 웨이트 맵(WM)에 포함되는 웨이트 값들 각각이 제1 피처 맵(FM1)과 중첩되는 영역에서의 모든 피처 데이터들과 곱해지고 더해질 수 있다. 웨이트 맵(WM)에 포함되는 웨이트 값들 각각이 제1 피처 맵(FM1)과 중첩되는 영역에서의 제1 피처 맵(FM1)의 데이터들을 추출 데이터라 칭할 수 있다. 제1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션 됨에 따라, 제2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다. 도 3에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수의 웨이트 맵들이 제1 피처 맵(FM1)과 컨볼루션 되어, 제2 피처 맵(FM2)의 복수의 채널들이 생성될 수 있다. 다시 말해, 제2 피처 맵(FM2)의 채널의 수는 웨이트 맵의 개수에 대응될 수 있다.
제2 레이어(L2)는 풀링을 통해 제2 피처 맵(FM2)의 공간적 크기(spatial size)를 변경함으로써, 제3 피처 맵(FM3)을 생성할 수 있다. 풀링은 샘플링 또는 다운-샘플링으로 지칭될 수 있다. 2차원의 풀링 윈도우(PW)가 풀링 윈도우(PW)의 사이즈 단위로 제2 피처 맵(FM2) 상에서 시프트 되고, 풀링 윈도우(PW)와 중첩되는 영역의 피처 데이터들 중 최대값(또는 피처 데이터들의 평균값)이 선택될 수 있다. 이에 따라, 제2 피처 맵(FM2)으로부터 공간적 사이즈가 변경된 제3 피처 맵(FM3)이 생성될 수 있다. 제3 피처 맵(FM3)의 채널과 제2 피처 맵(FM2)의 채널 개수는 동일하다.
제n 레이어(Ln)는 제n 피처 맵(FMn)의 피처들을 조합함으로써 입력 데이터의 클래스(class)(CL)를 분류할 수 있다. 또한, 제n 레이어(Ln)는 클래스에 대응되는 인식 신호(REC)를 생성할 수 있다. 실시 예에 있어서, 입력 데이터는 비디오 스트림(video stream)에 포함되는 프레임 데이터에 대응될 수 있으며, 제n 레이어(Ln)는 이전 레이어로부터 제공되는 제n 피처 맵(FMn)을 기초로 프레임 데이터가 나타내는 이미지에 포함되는 사물에 해당하는 클래스를 추출함으로써, 사물을 인식하고, 인식된 사물에 상응하는 인식 신호(REC)를 생성할 수 있다.
도 4a 및 도 4b는 뉴럴 네트워크의 컨볼루션 연산을 설명하기 위한 도면이다.
도 4a를 참조하면, 입력 피처 맵들(201)은 D개의 채널들을 포함하고, 각 채널의 입력 피처 맵은 H행 W열의 크기를 가질 수 있다(D, H, W는 자연수). 커널들(202) 각각은 R행 S열의 크기를 갖고, 커널들(202)은 입력 피처 맵들(201)의 채널 수(또는 깊이)(D) 에 대응되는 개수의 채널들을 포함할 수 있다(R, S는 자연수). 출력 피처 맵들(203)은 입력 피처 맵들(201)과 커널들(202) 간의 3차원 컨볼루션 연산을 통해 생성될 수 있고, 컨볼루션 연산에 따라 Y개의 채널들을 포함할 수 있다.
하나의 입력 피처 맵과 하나의 커널 간의 컨볼루션 연산을 통해 출력 피처 맵이 생성되는 과정은 도 4b를 참조해 설명될 수 있으며, 도 4b에서 설명되는 2차원 컨볼루션 연산이 전체 채널들의 입력 피처 맵들(201)과 전체 채널들의 커널들(202) 간에 수행됨으로써, 전체 채널들의 출력 피처 맵들(203)이 생성될 수 있다.
도 4b를 참조하면, 설명의 편의를 위해, 입력 피처 맵(210)은 6x6 크기(size)를 가지고, 원본 커널(220)은 3x3 크기를 가지고, 출력 피처 맵(230)은 4x4 크기인 것으로 가정하나, 이에 제한되지 않으며 뉴럴 네트워크는 다양한 크기의 피처 맵들 및 커널들로 구현될 수 있다. 또한, 입력 피처 맵(210), 원본 커널(220) 및 출력 피처 맵(230)에 정의된 값들은 모두 예시적인 값들일 뿐이고, 본 개시에 따른 실시 예들이 이에 제한되지 않는다.
원본 커널(220)은 입력 피처 맵(210)에서 3x3 크기의 윈도우 단위로 슬라이딩하면서 컨볼루션 연산을 수행할 수 있다. 컨볼루션 연산은 입력 피처 맵(210)의 어느 윈도우의 각 피처 데이터 및 원본 커널(220)에서 대응되는 위치의 각 웨이트 값들 간의 곱셈을 함으로써 획득된 값들을 모두 합산함에 따라 출력 피처 맵(230)의 각 피처 데이터를 구하는 연산을 나타낼 수 있다. 웨이트 값들과 곱해지는 상기 입력 피처 맵(210)의 윈도우에 포함된 데이터들을 입력 피처 맵(210)으로부터 추출된 추출 데이터라 칭할 수 있다. 구체적으로, 원본 커널(220)은 먼저 입력 피처 맵(210)의 제1 추출 데이터(211)와 컨볼루션 연산을 수행할 수 있다. 즉, 제1 추출 데이터(211)의 각 피처 데이터 1, 2, 3, 4, 5, 6, 7, 8, 9는 각각 대응되는 원본 커널(220)의 웨이트 값인 -1, -3, 4, 7, -2, -1, -5, 3, 1과 곱해지고, 그 결과로서 -1, -6, 12, 28, -10, -6, -35, 24, 9가 획득될 수 있다. 다음으로, 획득된 값들 -1, -6, 12, 28, -10, -6, -35, 24, 9를 모두 더한 결과인 15가 계산되고, 출력 피처 맵(230)의 1행 1열의 피처 데이터(231)는 15로 결정될 수 있다. 여기서 출력 피처 맵(230)의 1행 1열의 피처 데이터(231)는 제1 추출 데이터(211)에 대응된다. 마찬가지 방식으로, 입력 피처 맵(210)의 제2 추출 데이터(212)와 원본 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처 맵(230)의 1행 2열의 피처 데이터(232)인 4가 결정될 수 있다. 최종적으로, 입력 피처 맵(210)의 마지막 추출 데이터인 제16 추출 데이터(213)와 원본 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처 맵(230)의 4행 4열의 피처 데이터(233)인 11이 결정될 수 있다.
다시 말해, 하나의 입력 피처 맵(210)과 하나의 원본 커널(220) 간의 컨볼루션 연산은 입력 피처 맵(210)의 추출 데이터 및 원본 커널(220)의 대응되는 웨이트 값들의 곱셈 및 곱셈 결과들의 합산을 반복적으로 수행함으로써 처리될 수 있고, 컨볼루션 연산의 결과로서 출력 피처 맵(230)이 생성될 수 있다.
도 1을 함께 참조하면, 뉴럴 네트워크 집적 회로(100)는 적어도 하나의 IP 블록으로부터 수신되는 입력 데이터를 기초로 입력 피처 맵을 생성할 수 있고, 입력 피처 맵으로부터 웨이트 값들과 직접적으로 곱해지는 데이터를 추출할 수 있다. 이를 위해, 뉴럴 네트워크 집적 회로(100)는 적어도 하나의 다중화기(multiplexer; MUX)를 포함할 수 있고, 적어도 하나의 다중화기를 이용해 입력 피처 맵에 포함된 입력 피처 맵 데이터들 중 웨이트 값들과 직접적으로 곱해지는 데이터를 추출해낼 수 있다. 상기 웨이트 값들과 직접적으로 곱해지는 데이터를 추출 데이터라 칭할 수 있다. 설명의 편의를 위해, 피처 맵에 포함된 복수의 피처들이 갖는 값들 각각을 피처 데이터라 칭하기로 하고, 피처 맵에 포함된 복수의 피처 데이터들을 일컬어 피처 맵 데이터라 칭하기로 한다. 또한, 피처의 피처 데이터라는 표현은 피처가 갖는 피처 값을 의미하는 것으로 본다. 본 개시의 예시적 실시 예에 따라 피처 맵 또는 피처 맵 데이터로부터 직접적으로 연산에 이용되는 추출 데이터를 추출해내기 위한 장치 및 방법이 이하의 도면들을 통해 구체적으로 설명된다.
도 5는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 집적 회로(100)를 나타낸다. 뉴럴 네트워크 집적 회로(100)는 내부 메모리(120), 데이터 추출 회로(140) 및 연산 회로(160)를 포함할 수 있다. 도 5의 뉴럴 네트워크 집적 회로(100)에 관해 도 1 및 도 2와 중복되는 설명은 생략한다.
내부 메모리(120)는 뉴럴 네트워크 집적 회로(100)의 외부로부터 수신되는 외부 데이터를 수신할 수 있다. 외부 데이터는 입력 데이터라 칭해질 수도 있다. 내부 메모리(120)는 외부 데이터, 연산에 필요한 각종 데이터 및 웨이트 값들을 저장할 수 있다. 이를 위해, 내부 메모리(120)는 각종 데이터를 저장하는 데이터 메모리(122) 및 웨이트 값들을 저장하는 웨이트 메모리(124)를 포함할 수 있다. 데이터 메모리(122) 및 웨이트 메모리(124)는 별개의 하드웨어로 구성될 수도 있으나, 이에 제한되지는 않는다. 예를 들어, 데이터 메모리(122) 및 웨이트 메모리(124)는 하나의 하드웨어 내에서 다른 영역에 대응되는 메모리를 나타낼 수 있다. 데이터 메모리(122) 및 웨이트 메모리(124) 각각은 DRAM(Dynamic RAM), SRAM(Static RAM), SDRAM(Synchronous RAM)과 같은 다양한 종류의 메모리로서 구현될 수 있다.
데이터 추출 회로(140)는 데이터 메모리(122)에 저장된 데이터(Data)를 기초로 추출 데이터(Data_ext)를 생성할 수 있다. 데이터(Data)는 피처 맵 데이터를 나타낼 수 있으며, 추출 데이터(Data_ext)는 피처 맵 데이터에 포함된 데이터 중 연산에 필요한 데이터를 나타낼 수 있다. 데이터 추출 회로(140)는 데이터(Data)를 피처 맵 데이터로서 셀 단위로 저장할 수 있다. 예를 들어, 데이터 추출 회로(140)는 데이터(Data)를 피처 맵 데이터로서 셀 단위로 저장하는 버퍼를 포함할 수 있다. 셀은 적어도 하나의 피처를 포함할 수 있다. 비제한적인 예시로서, 하나의 셀은 4피처x4피처 사이즈를 가질 수 있다. 데이터 추출 회로(140)는 피처 맵 데이터에 포함된 복수의 셀들 내 동일 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써 추출 데이터(Data_ext)를 생성할 수 있다. 다시 말해, 데이터 추출 회로(140)는 복수의 셀들 내 제1 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출할 수 있고, 데이터 추출 회로(140)는 모든 좌표 값들에 대응되는 피터 데이터들을 추출해냄으로써 제1 데이터를 생성해낼 수 있다. 일 실시 예에서, 데이터 추출 회로(140)는 제1 데이터를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다. 예를 들어, 데이터 추출 회로(140)는 제1 데이터의 행(row)들의 순서를 적어도 일부 변경함으로써 제1 데이터를 수직 방향으로 회전시킬 수 있고, 제1 데이터의 열(column)들의 순서를 적어도 일부 변경함으로써 제1 데이터를 수평 방향으로 회전시킬 수 있다. 수직 방향 및/또는 수평 방향으로의 데이터 회전 양은 피처 맵 데이터 상에서 추출 데이터(Data_ext)의 위치에 기초하여 결정될 수 있다. 다시 말해, 추출 데이터(Data_ext)가 피처 맵 데이터 상에서 나타내는 위치에 따라, 데이터 추출 회로(140)는 제1 데이터의 행(row)들 및 열(column)들의 순서를 변경하지 않는 경우가 있을 수도 있다. 데이터 추출 회로(140)는 추출 데이터(Data_ext)를 연산 회로(160)에 제공할 수 있다.
연산 회로(160)는 데이터 추출 회로(140)로부터 추출 데이터(Data_ext)를 수신할 수 있고, 추출 데이터(Data_ext)를 기반으로 연산 동작을 수행할 수 있다. 연산 동작은 곱셈 연산, 덧셈 연산, XOR 연산과 같은 다양한 종류의 연산 중 적어도 하나를 포함할 수 있다. 일 실시 예에서, 연산 회로(160)는 웨이트 메모리(124)에 저장된 웨이트 값들 및 이와 대응되는 추출 데이터(Data_ext)를 곱셈한 뒤, 곱셈한 결과물들을 모두 합산함으로써 뉴럴 네트워크 집적 회로(100)의 컨볼루션 연산을 수행할 수 있다. 연산 회로(160)는 적어도 하나의 연산 동작을 통해 정보 신호(IS)를 뉴럴 네트워크 집적 회로(100)의 외부로 출력할 수 있다.
도 6은 본 개시의 예시적 실시 예에 따른 데이터 추출 회로(140)를 나타낸다. 데이터 추출 회로(140)는 데이터 버퍼(141), 다중화 회로(142) 및 추출 제어기(149)를 포함할 수 있다. 도 6의 데이터 추출 회로(140)에 관해 도 5와 중복되는 설명은 생략한다.
데이터 버퍼(141)는 데이터 추출 회로(140)의 외부로부터 입력되는 데이터(Data)를 기초로 피처 맵 데이터(Feature Map Data; D_FM)를 저장할 수 있다. 일 실시 예에서, 데이터 버퍼(141)는 피처 맵 데이터(D_FM)를 적어도 하나의 피처를 포함하는 셀 단위로 저장할 수 있다. 다시 말해, 데이터 버퍼(141)는 피처 맵 데이터(D_FM)를 복수의 셀들로 구분할 수 있고, 피처 맵 데이터(D_FM)를 복수의 셀들로서 저장할 수 있다. 일 실시 예에서, 데이터 추출 회로(140)는 프로세서 및 메모리(미도시)를 더 포함할 수 있고, 메모리에 저장된 인스트럭션들을 프로세서가 실행함으로써 데이터 추출 회로(140)는 소정의 동작을 수행할 수 있다. 예를 들어, 데이터 추출 회로(140)는 피처 맵 데이터에 포함된 복수의 셀들 각각의 어드레스 정보를 메모리에 저장할 수 있고, 메모리에 저장된 어드레스 정보를 기초로 복수의 셀들 각각에 접근함으로써 복수의 셀들에 포함된 피처 데이터들을 얻어낼 수 있다.
다중화 회로(142)는 데이터 버퍼(141)에 저장된 피처 맵 데이터(D_FM)로 부터 연산에 필요한 데이터들을 추출해냄으로써 추출 데이터(Data_ext)를 출력할 수 있다. 이를 위해, 다중화 회로(142)는 적어도 하나의 다중화기(multiplexer; MUX)를 포함할 수 있다. 또한, 일 실시 예에서, 다중화 회로(142)는 제1 다중화 회로(143) 및 제2 다중화 회로(144)를 포함할 수 있다.
제1 다중화 회로(143)는 피처 맵 데이터(D_FM)에 포함된 복수의 셀들의 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해낼 수 있고, 모든 좌표 값들에 대응되는 피처 데이터들을 추출해냄에 따라 제1 데이터(D1)를 생성할 수 있다. 제1 다중화 회로(143)의 제1 데이터(D1) 생성 동작을 데이터 추출 동작이라 칭할 수 있으며, 데이터 추출 동작은 도 7a 내지 도 7c를 참조해 보다 자세히 설명될 수 있다. 일 실시 예에서, 제1 다중화 회로(143)는 각각이 피처 맵 데이터(D_FM)에 포함된 셀들의 수에 대응되는 수의 입력 신호들 중 하나의 신호를 선택하는 복수의 다중화기들을 포함할 수 있다. 예를 들어, 피처 맵 데이터(D_FM)가 N개(N은 자연수)의 셀들을 포함하는 경우, 제1 다중화 회로(143)는 복수의 N:1 다중화기들을 포함할 수 있다. 또한 일 실시 예에서, 제1 다중화 회로(143)는 상기 다중화기들을 하나의 셀에 포함된 피처들의 수에 대응되는 개수 만큼 포함할 수 있다. 예를 들어, 하나의 셀이 M개(M은 자연수)의 피처들을 포함하는 경우, 제1 다중화 회로(143)는 M개의 다중화기들을 포함할 수 있다. 다시 말해, 일 실시 예에서, 피처 맵 데이터(D_FM)가 N개의 셀들을 포함하고, 각각의 셀이 M개의 피처들을 포함하는 경우, 제1 다중화 회로(143)는 M개의 N:1 다중화기들을 포함할 수 있다.
일 실시 예에서, 제1 다중화 회로(143)는 피처 맵 데이터(D_FM)에 포함된 피처들을 복수의 그룹들로 그룹화 할 수 있다. 이 때, 복수의 그룹들 각각은 피처 맵 데이터(D_FM)에 포함된 복수의 셀들 내 동일 좌표 값에 대응되는 피처들을 포함할 수 있다. 제1 다중화 회로(143)는 복수의 그룹들 각각으로부터 하나의 피처의 피처 데이터를 추출해낼 수 있고, 추출된 피처 데이터들을 기초로 제1 데이터(D1)를 생성할 수 있다. 일 실시 예에서, 제1 데이터(D1)는 매트릭스(matrix) 형태의 데이터일 수 있다.
제2 다중화 회로(144)는 제1 다중화 회로(143)로부터 제공된 제1 데이터(D1)를 기초로 추출 데이터(Data_ext)를 생성할 수 있다. 구체적으로, 제2 다중화 회로(144)는 제1 데이터(D1)를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다. 예를 들어, 제2 다중화 회로(144)는 제1 데이터(D1)의 행(row)들의 순서를 변경함으로써 제1 데이터(D1)를 수직 방향으로 회전시킬 수 있으며, 제1 데이터(D1)의 열(column)들의 순서를 변경함으로써 제1 데이터(D1)를 수평 방향으로 회전시킬 수 있다. 일 실시 예에서, 제2 다중화 회로(144)는 제1 데이터(D1)를 수직 방향으로 회전시킨 뒤, 수직 회전된 제1 데이터를 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다. 하지만 이에 제한 되지는 않으며, 일 실시 예에서, 제2 다중화 회로(144)는 제1 데이터(D1)를 수평 방향으로 회전시킨 뒤, 수평 회전된 제1 데이터를 수직 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수도 있다. 또한 일 실시 예에서는, 제2 다중화 회로(144)는 제1 데이터를 수직 방향 및 수평 방향으로 회전시키는 하나의 하드웨어로서 구현될 수 있다. 제1 데이터(D1)를 기초로 추출 데이터(Data_ext)를 생성하는 동작을 데이터 회전 동작이라 칭할 수 있으며, 데이터 회전 동작은 도 8a 내지 도 10을 참조해 보다 자세히 설명될 수 있다. 일 실시 예에서, 제2 다중화 회로(144)는 제1 데이터(D1)의 행들의 수 및 제1 데이터(D1)의 열들의 수를 합산한 값에 대응되는 개수 만큼 다중화기들을 포함할 수 있다. 예를 들어, 제1 데이터(D1)가 KxL(K 및 L은 자연수) 매트릭스 형태를 나타내는 경우, 제2 다중화 회로(144)는 (K+L)개의 다중화기들을 포함할 수 있다. 구체적으로, 제2 다중화 회로(144)는 수직 방향 회전 동작을 위한 K개의 다중화기들 및 수평 방향 회전 동작을 위한 L개의 다중화기들을 포함할 수 있다.
추출 제어기(149)는 다중화 회로(142)에 포함된 적어도 하나의 다중화기를 제어하기 위한 적어도 하나의 다중화기 제어 신호(CTRL_Mul)를 생성하고, 다중화기 제어 신호(CTRL_Mul)를 다중화 회로(142)에 제공할 수 있다. 다중화 회로(142)에 포함된 적어도 하나의 다중화기는 다중화기 제어 신호(CTRL_Mul)를 기초로 복수의 입력 신호들 중 하나의 신호를 선택할 수 있다. 추출 제어기(149)는 아날로그 회로와 같은 별도의 하드웨어 구성으로 구현될 수도 있으며, 또는 데이터 추출 회로(140)에 포함된 프로세서에 의해 추출 제어기(149)의 동작이 수행될 수도 있다.
도 7a는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 피처 맵 데이터(D_FM) 및 추출 데이터(Data_ext)를 나타낸다. 설명의 편의를 위해, 도 7a는 피처 맵 데이터(D_FM)가 16개의 셀을 포함하고, 각각의 셀들은 16개의 피처들을 포함하는 실시 예를 도시하지만, 구체적인 셀의 개수 및 피처의 개수는 예시적인 것일 뿐 기술적 사상이 이에 한정되는 것으로 해석 되어서는 안 된다. 도 7a는 도 5 및 도 6을 함께 참조해 설명된다.
뉴럴 네트워크 집적 회로(100)가 데이터 피처 맵을 기초로 뉴럴 네트워크 연산(예컨대, 컨볼루션 연산)을 수행함에 있어서, 연산 회로(160)는 피처 맵 데이터(D_FM) 중 추출 데이터(Data_ext)가 필요할 수 있다. 이 때, 데이터 추출 회로(140)는 피처 맵 데이터(D_FM)로부터 추출 데이터(Data_ext)를 추출해낼 수 있다. 일 실시 예에서, 추출 데이터(Data_ext)의 크기(size)는 셀의 크기와 같거나 셀의 크기보다 작을 수 있다.
피처 맵 데이터(D_FM)는 제1 셀(Cell_1) 내지 제16 셀(Cell_16)을 포함할 수 있다. 피처 맵 데이터(D_FM)는 제1 셀(Cell_1) 내지 제16 셀(Cell_16)로서 데이터 버퍼(141)에 저장될 수 있다. 연산에 필요한 추출 데이터(Data_ext)는 일부는 제1 셀(Cell_1)에 포함되어 있고, 또한 일부는 제2 셀(Cell_2)에 포함되어 있고, 또한 일부는 제5 셀(Cell_5)에 포함되어 있고, 또한 일부는 제6 셀(Cell_6)에 포함되어 있다. 도 7a에 개시된 추출 데이터(Data_ext)를 피처 맵 데이터(D_FM)로부터 추출해내는 과정에 대해 이하의 도 7b 및 도 7c를 참조해 설명된다.
도 7b는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 셀(Cell_i)의 좌표 값을 나타낸다. 셀(Cell_i)은 도 7a의 제1 셀(Cell_1) 내지 제16 셀(Cell_16)을 대표적으로 나타낸다. 설명의 편의를 위해, 도 7b는 셀(Cell_i)이 16개의 피처들을 포함하는 실시 예를 도시하지만, 이에 한정되는 것으로 해석 되어서는 안 된다.
셀(Cell_i)은 복수의 행(row)들과 복수의 열(column)들을 포함하는 매트릭스 형태의 데이터일 수 있다. 셀(Cell_i)은 하나의 행 및 하나의 열에 기초해 결정되는 좌표 값에 대응되는 복수의 피처들을 포함할 수 있다. 이 때, 설명의 편의를 위해, 셀(Cell_i) 내에서 i행 j열에 있는 피처의 좌표 값을 (i,j)로 표현하기로 한다. (i 및 j는 4 이하의 자연수) 셀(Cell_i)이 16개의 피처들을 포함하기 때문에, 셀(Cell_i)은 총 16개의 다른 좌표 값들에 대응되는 피처들을 포함할 수 있다.
도 7c는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 셀들 및 제1 다중화 회로(143)를 나타낸다. 특히, 도 7c는 도 7a와 같은 예시적 실시 예에 따른 피처 맵 데이터(D_FM)로부터 추출 데이터(Data_ext)를 추출해내는 제1 다중화 회로(143)를 나타낸다. 도 7c는 도 7a를 함께 참조하여 설명된다.
피처 맵 데이터(D_FM)에 포함된 피처들은 복수의 그룹들로 그룹화 될 수 있다. 예를 들어, (1,1) 그룹은 제1 셀(Cell_1) 내지 제16 셀(Cell_16) 내 (1,1) 좌표 값에 대응되는 피처들을 포함할 수 있다. 또한 예를 들어, (1,2) 그룹은 제1 셀(Cell_1) 내지 제16 셀(Cell_16) 내 (1,2) 좌표 값에 대응되는 피처들을 포함할 수 있다. 또한 예를 들어, (4,4) 그룹은 제1 셀(Cell_1) 내지 제16 셀(Cell_16) 내 (4,4) 좌표 값에 대응되는 피처들을 포함할 수 있다.
제1 다중화 회로(143)는 상기 복수의 그룹들 각각으로부터 하나의 데이터를 추출함으로써 제1 데이터를 생성할 수 있다. 이를 위해, 제1 다중화 회로(143)는 복수의 그룹들 각각에 대응되는 복수의 다중화기들을 포함할 수 있다. 일 실시 예에서, 복수의 다중화기들 각각은 피처 맵 데이터(D_FM)에 포함된 셀들의 개수에 대응되는 수의 입력 신호들 중 하나의 신호를 선택하는 다중화기일 수 있다. 또한 일 실시 예에서, 제1 다중화 회로(143)는 다중화기들을 하나의 셀에 포함된 피처들의 수에 대응되는 개수 만큼 포함할 수 있다. 예를 들어, 도 7a와 같은 실시 예에서, 제1 다중화 회로(143)는 16개의 16:1 다중화기를 포함할 수 있다. 일 실시 예에서, 복수의 다중화기들 각각은, 피처 맵 데이터(D_FM) 상에서 추출 데이터(Data_ext)의 위치에 기초하여, 복수의 셀들 중 하나의 셀로부터 데이터를 추출할 수 있다.
다중화기(MUX11)는 제어 신호(CTRL_11)를 기초로 (1,1) 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출함으로써 (1,1) 좌표 값에 대응되는 제1 데이터(D1_11)를 출력할 수 있다. 특히, 도 7a의 실시 예에서, 다중화기(MUX11)는 (1,1) 좌표 값에 대응되는 피처들 중 제6 셀(Cell_6)에 포함된 피처의 피처 데이터를 추출함으로써 (1,1) 좌표 값에 대응되는 제1 데이터(D1_11)를 출력할 수 있다. 이때, 제어 신호(CTRL_11)는, 피처 맵 데이터(D_FM) 상에서 추출 데이터(Data_ext)의 위치에 기초하여 결정된 것일 수 있다. 마찬가지로, 다중화기(MUX12)는 제어 신호(CTRL_12)를 기초로 (1,2) 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출함으로써 (1,2) 좌표 값에 대응되는 제1 데이터(D1_12)를 출력할 수 있다. 특히, 도 7a의 실시 예에서, 다중화기(MUX12)는 (1,2) 좌표 값에 대응되는 피처들 중 제5 셀(Cell_5)에 포함된 피처의 피처 데이터를 추출함으로써 (1,2) 좌표 값에 대응되는 제1 데이터(D1_12)를 출력할 수 있다. 이때, 제어 신호(CTRL_12)는, 피처 맵 데이터(D_FM) 상에서 추출 데이터(Data_ext)의 위치에 기초하여 결정된 것일 수 있다. 제어 신호들(CTRL_11, CTRL_12, …, CTRL_44)은 도 6의 추출 제어기(149)에 의해 제공될 수 있다. 예를 들어, 제어 신호들(CTRL_11, CTRL_12, …, CTRL_44)은 도 6의 다중화기 제어 신호(CTRL_Mul)에 포함될 수 있다.
제1 다중화 회로(143)는 추출된 데이터들(D1_11, D1_12, …, D1_44)를 기초로 제1 데이터를 출력할 수 있다.
도 8a 및 도 8b는 제1 데이터(D1)의 회전 과정을 설명하기 위한 매트릭스(matrix) 형태의 데이터들을 나타낸다. 설명의 편의를 위해, 도 8a 및 도 8b는 도 7a의 실시 예에 대응되는 데이터들을 나타낸다. 도 8a 및 도 8b는 도 6을 함께 참조해 설명된다.
도 8a를 참조하면, 제1 다중화 회로(143)에 의해 생성된 제1 데이터(D1)는 연산에 필요한 추출 데이터(Data_ext)에 포함된 모든 피처 데이터들을 포함하지만, 제1 데이터(D1)의 행과 열의 순서는 추출 데이터(Data_ext)의 행과 열의 순서와 상이할 수 있다. 따라서, 제2 다중화 회로(144)는 매트릭스 형태의 제1 데이터(D1)의 행들 및/또는 열들을 재배열함으로써 추출 데이터(Data_ext)를 생성할 수 있다. 이를, 제2 다중화 회로(144)가 제1 데이터(D1)를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성한다고 달리 표현할 수도 있다.
도 8b를 참조하면, 제1 데이터(D1)는 수직 회전 및 수평 회전을 거쳐 추출 데이터(Data_ext)가 될 수 있다. 설명의 편의를 위해, 도 8b는 수직 회전 이후 수평 회전이 수행되는 것을 도시하지만, 그 순서는 이에 제한되지 않는다. 예를 들어, 도 8b와 달리 수평 회전 이후 수직 회전이 수행될 수 있다. 제2 다중화 회로(144)는 제1 데이터(D1)를 수직 방향으로 회전시킴으로써 수직 회전된 제1 데이터(D1_VR)를 생성할 수 있다. 다시 말해, 제2 다중화 회로(144)는 제1 데이터(D1)의 행들의 순서를 변경함으로써 수직 회전된 제1 데이터(D1_VR)를 생성할 수 있다. 이후, 제2 다중화 회로(144)는 수직 회전된 제1 데이터(D1_VR)를 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다. 다시 말해, 제2 다중화 회로(144)는 수직 회전된 제1 데이터(D1_VR)의 열들의 순서를 변경함으로써 추출 데이터(Data_ext)를 생성할 수 있다. 수직 회전 및/또는 수평 회전 수행을 위해, 제2 다중화 회로(144)는 적어도 하나의 다중화기를 포함할 수 있다. 제2 다중화 회로(144)의 구성에 관한 실시 예들은 도 9a 및 도 9b, 및 도 10을 참조해 설명된다.
도 9a 및 도 9b는 본 개시의 예시적 실시 예에 따른 제2 다중화 회로(144a, 144b)를 나타낸다.
도 9a를 참조하면, 제2 다중화 회로(144a)는 수직 회전 회로(145a) 및 수평 회전 회로(146a)를 포함할 수 있다. 수직 회전 회로(145a)는 제1 데이터(D1)를 수직 방향으로 회전시킴으로써 수직 회전된 제1 데이터(D1_VR)를 생성할 수 있고, 수평 회전 회로(146a)는 수직 회전된 제1 데이터(D1_VR)를 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다. 이를 위해, 수직 회전 회로(145a) 및 수평 회전 회로(146a) 각각은 적어도 하나의 다중화기를 포함할 수 있다.
도 9b를 참조하면, 제2 다중화 회로(144b)는 수평 회전 회로(146b) 및 수직 회전 회로(145b)를 포함할 수 있다. 수평 회전 회로(146b)는 제1 데이터(D1)를 수평 방향으로 회전시킴으로써 수평 회전된 제1 데이터(D1_HR)를 생성할 수 있고, 수직 회전 회로(145b)는 수평 회전된 제1 데이터(D1_HR)를 수직 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다. 이를 위해, 수평 회전 회로(146b) 및 수직 회전 회로(145b) 각각은 적어도 하나의 다중화기를 포함할 수 있다.
일 실시 예에서, 도 6의 제2 다중화 회로(144)는 도 9a의 제2 다중화 회로(144a)와 같이 구현될 수도 있고, 도 9b의 제2 다중화 회로(144b)와 같이 구현될 수도 있다. 하지만 도 6을 참조해 설명되었듯이, 도 6의 제2 다중화 회로(144)가 도 9a 또는 도 9b의 실시 예에 한정되는 것은 아니며, 예를 들어, 도 6의 제2 다중화 회로(144)는 제1 데이터(D1)를 수직 방향 및 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성하는 하나의 하드웨어로서 구현될 수도 있다.
도 10은 본 개시의 예시적 실시 예에 따른 제2 다중화 회로(144)를 나타낸다. 특히, 도 10은 도 9a에 개시된 실시 예에 따른 제2 다중화 회로(144)의 보다 구체적인 구성을 예시적으로 도시한다. 동일한 방식이 도 9b에 개시된 실시 예에도 적용될 수 있음은 물론이다. 도 10은 도 7a 및 도 9a의 실시 예를 참조해 설명된다.
수직 회전 회로(145)는 제1 데이터(D1)의 행들의 순서를 변경함으로써 수직 회전된 제1 데이터(D1_VR)를 생성할 수 있다. 이를 위해, 수직 회전 회로(145)는 제1 데이터(D1)의 행들의 수에 대응되는 개수 만큼 다중화기들을 포함할 수 있다. 다중화기(MUX_R1)는 제어 신호(CTRL_R1)에 기초해 제1 데이터(D1)의 행들 중 하나의 행을 선택함으로써 수직 회전된 제1 데이터(D1_VR)의 첫 번째 행을 출력할 수 있다. 도 7a의 실시 예를 참고하면, 다중화기(MUX_R1)는 제1 데이터(D1)의 행들 중 두 번째 행에 해당하는 데이터들(D1[2, 1:4])을 선택함으로써 수직 회전된 제1 데이터(D1_VR)의 첫 번째 행을 출력할 수 있다. 마찬가지로, 다중화기(MUX_R4)는 제어 신호(CTRL_R4)에 기초해 제1 데이터(D1)의 행들 중 하나의 행을 선택함으로써 수직 회전된 제1 데이터(D1_VR)의 네 번째 행을 출력할 수 있다. 도 7a의 실시 예를 참고하면, 다중화기(MUX_R4)는 제1 데이터(D1)의 행들 중 첫 번째 행에 해당하는 데이터들(D1[1, 1:4])을 선택함으로써 수직 회전된 제1 데이터(D1_VR)의 네 번째 행을 출력할 수 있다. 수직 회전 회로(145)는 다중화기들(MUX_R1~MUX_R4)에 의해 출력된 데이터들을 기초로 수직 회전된 제1 데이터(D1_VR)를 수평 회전 회로(146)에 제공할 수 있다.
수평 회전 회로(146)는 수직 회전된 제1 데이터(D1_VR)의 열들의 순서를 변경함으로써 추출 데이터(Data_ext)를 생성할 수 있다. 이를 위해, 수평 회전 회로(146)는 제1 데이터(D1)의 열들의 수에 대응되는 개수 만큼 다중화기들을 포함할 수 있다. 다중화기(MUX_C1)는 제어 신호(CTRL_C1)에 기초해 수직 회전된 제1 데이터(D1_VR)의 열들 중 하나의 열을 선택함으로써 추출 데이터(Data_ext)의 첫 번째 열을 출력할수 있다. 도 7a의 실시 예를 참고하면, 다중화기(MUX_C1)는 수직 회전된 제1 데이터(D1_VR)의 열들 중 두 번째 열에 해당하는 데이터들(D1_VR[1:4, 2])을 선택함으로써 추출 데이터(Data_ext)의 첫 번째 열을 출력할 수 있다. 마찬가지로, 다중화기(MUX_C4)는 제어 신호(CTRL_C4)에 기초해 수직 회전된 제1 데이터(D1_VR)의 열들 중 하나의 열을 선택함으로써 추출 데이터(Data_ext)의 네 번째 열을 선택할 수 있다. 도 7a의 실시 예를 참고하면, 다중화기(MUX_C4)는 수직 회전된 제1 데이터(D1_VR)의 열들 중 첫 번째 열에 해당하는 데이터들(D1[1:4, 1])을 선택함으로써 추출 데이터(Data_ext)의 네 번째 열을 출력할 수 있다. 수평 회전 회로(146)는 다중화기들(MUX_C1~MUX_C4)에 의해 선택된 데이터들을 기초로 추출 데이터(Data_ext)를 출력할 수 있다.
도 11은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 장치의 데이터 처리 방법의 순서도를 나타낸다. 도 11은 도 5 및 도 6을 함께 참조해 설명된다.
뉴럴 네트워크 장치(10)에 포함된 뉴럴 네트워크 집적 회로(100)는, 데이터 버퍼(141)에 피처 맵 데이터(D_FM)를 셀 단위로 저장할 수 있다(S100). 셀은 적어도 하나의 피처를 포함할 수 있다.
뉴럴 네트워크 집적 회로(100)는, 피처 맵 데이터(D_FM)에 포함된 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출함으로써 제1 데이터(D1)를 생성할 수 있다(S200). 예를 들어, 다중화 회로(142)에 포함된, 제1 다중화 회로(143)는 적어도 하나의 다중화기를 이용해 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출할 수 있다.
뉴럴 네트워크 집적 회로(100)는, 제1 데이터(D1)의 행들 및/또는 열들을 재배열함으로써 추출 데이터(Data_ext)를 생성할 수 있다(S300). 예를 들어, 다중화 회로(142)에 포함된 제2 다중화 회로(144)는 적어도 하나의 다중화기를 이용해 제1 데이터(D1)를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다.
뉴럴 네트워크 집적 회로(100)는, 추출 데이터(Data_ext)를 이용해 뉴럴 네트워크 연산을 수행할 수 있다(S400). 예를 들어, 연산 회로(160)는 추출 데이터(Data_ext)를 대응되는 웨이트 값들과 곱셈 연산을 한뒤, 곱셈 연산의 결과들을 합산함으로써 컨볼루션 연산을 수행할 수 있다.
도 12는 본 개시의 예시적 실시 예에 따른 데이터 추출 과정을 설명하기 위한 피처 맵 데이터(D_FM) 및 추출 데이터(Data_ext)를 나타낸다. 특히, 도 12는 연산에 필요한 윈도우 사이즈가 셀의 사이즈보다 작은 경우의 실시 예를 설명하기 위한 데이터들을 나타낸다. 설명의 편의를 위해, 도 12는 피처 맵 데이터(D_FM)가 16개의 셀을 포함하고, 각각의 셀들은 16개의 피처들을 포함하고, 연산에 필요한 윈도우 사이즈가 3x2 크기인 실시 예를 도시하지만, 구체적인 셀의 개수, 피처의 개수 및 윈도우 사이즈는 예시적인 것일 뿐 기술적 사상이 이에 한정되는 것으로 해석 되어서는 안 된다. 도 12는 도 5 및 도 6을 함께 참조해 설명된다.
뉴럴 네트워크 집적 회로(100)가 데이터 피처 맵을 기초로 뉴럴 네트워크 연산(예컨대, 컨볼루션 연산)을 수행함에 있어서, 연산 회로(160)는 피처 맵 데이터(D_FM) 중 추출 데이터(Data_ext)가 필요할 수 있다. 이 때, 데이터 추출 회로(140)는 피처 맵 데이터(D_FM)로부터 추출 데이터(Data_ext)를 추출해낼 수 있다.
피처 맵 데이터(D_FM)는 제1 셀(Cell_1) 내지 제16 셀(Cell_16)을 포함할 수 있다. 피처 맵 데이터(D_FM)는 제1 셀(Cell_1) 내지 제16 셀(Cell_16)로서 데이터 버퍼(141)에 저장될 수 있다. 연산에 필요한 추출 데이터(Data_ext)는 일부는 제1 셀(Cell_1)에 포함되어 있고, 또한 일부는 제2 셀(Cell_2)에 포함되어 있고, 또한 일부는 제5 셀(Cell_5)에 포함되어 있고, 또한 일부는 제6 셀(Cell_6)에 포함되어 있다. 도 7a에 개시된 추출 데이터(Data_ext)를 피처 맵 데이터(D_FM)로부터 추출해내는 과정에 대해 이하의 도 14a 내지 도 14c를 참조해 설명된다.
도 13a 내지 도 13c는 본 개시의 예시적 실시 예에 따른 다중화 회로(142a, 142b, 142c)를 나타낸다.
도 13a를 참조하면, 다중화 회로(142a)는 제1 다중화 회로(143a), 제2 다중화 회로(144a) 및 데이터 선택 회로(147a)를 포함할 수 있다. 제1 다중화 회로(143a) 및 제2 다중화 회로(144a)는 앞선 도면들을 통해 설명된 제1 다중화 회로(143) 및 제2 다중화 회로(144)와 실질적으로 동일할 수 있다. 제1 다중화 회로(143a)는 피처 맵 데이터(D_FM)로부터 데이터를 추출함으로써 제1 데이터(D1)를 생성할 수 있다. 데이터 선택 회로(147a)는 제1 데이터(D1)에서 연산에 필요하지 않은 데이터를 제외시키고, 필요한 데이터만을 선택함으로써 선택된 제1 데이터(D1_SEL)를 생성할 수 있다. 제2 다중화 회로(144a)는 선택된 제1 데이터(D1_SEL)를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 추출 데이터(Data_ext)를 출력할 수 있다. 도 13a의 실시 예에 대응되는 데이터들은 도 14a에 도시된다.
도 13b를 참조하면, 다중화 회로(142b)는 제1 다중화 회로(143b) 및 제2 다중화 회로(144b)를 포함할 수 있고, 제2 다중화 회로(144b)는 수직 회전 회로(145b), 수평 회전 회로(146b), 제1 데이터 선택 회로(147b) 및 제2 데이터 선택 회로(148b)를 포함할 수 있다. 제1 다중화 회로(143b), 수직 회전 회로(145b) 및 수평 회전 회로(146b) 는 앞선 도면들을 통해 설명된 제1 다중화 회로(143), 수직 회전 회로(145) 및 수평 회전 회로(146)와 실질적으로 동일할 수 있다. 제1 다중화 회로(143a)는 피처 맵 데이터(D_FM)로부터 데이터를 추출함으로써 제1 데이터(D1)를 생성할 수 있다. 수직 회전 회로(145b)는 제1 데이터(D1)를 수직 방향으로 회전시킴으로써 수직 회전된 제1 데이터(D1_VR)를 생성할 수 있다. 제1 데이터 선택 회로(147b)는 수직 회전된 제1 데이터(D1_VR)로부터 연산에 필요하지 않은 행을 제외시키고, 필요한 행들 만을 선택함으로써 선택된 제1 데이터(D1_SEL)를 생성할 수 있다. 수평 회전 회로(146b)는 선택된 제1 데이터(D1_SEL)를 수평 방향으로 회전시킴으로써 수평 회전된 제1 데이터(D1_HR)를 생성할 수 있다. 제2 데이터 선택 회로(148b)는 수평 회전된 제1 데이터(D1_HR)로부터 연산에 필요하지 않은 열을 제외시키고, 필요한 열들 만을 선택함으로써 추출 데이터(Data_ext)를 출력할 수 있다. 도 13b의 실시 예에 대응되는 데이터들은 도 14b에 도시된다.
도 13c를 참조하면, 다중화 회로(142c)는 제1 다중화 회로(143c), 제2 다중화 회로(144c) 및 데이터 선택 회로(147c)를 포함할 수 있다. 제1 다중화 회로(143c) 및 제2 다중화 회로(144c)는 앞선 도면들을 통해 설명된 제1 다중화 회로(143) 및 제2 다중화 회로(144)와 실질적으로 동일할 수 있다. 제1 다중화 회로(143c)는 피처 맵 데이터(D_FM)로부터 데이터를 추출함으로써 제1 데이터(D1)를 생성할 수 있다. 제2 다중화 회로(144c)는 제1 데이터(D1)를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 회전된 제1 데이터(D1_R)를 생성할 수 있다. 데이터 선택 회로(147c)는 회전된 제1 데이터(D1_R)에서 연산에 필요하지 않은 데이터를 제외시키고, 필요한 데이터만을 선택함으로써 추출 데이터(Data_ext)를 생성할 수 있다. 도 13c의 실시 예에 대응되는 데이터들은 도 14c에 도시된다.
도 14a 내지 도 14c는 본 개시의 예시적 실시 예에 따른 도 13a 내지 도 13c의 다중화 회로(142a, 142b, 142c)의 데이터 선택 및 추출 방법을 설명하기 위한 매트릭스(matrix) 형태의 데이터들을 나타낸다.
도 14a는 도 13a를 함께 참조하여 설명된다. 제1 다중화 회로(142a)에 의해 생성된 제1 데이터(D1)는 연산에 불필요한 데이터들(음영 없는 부분)을 포함할 수 있다. 데이터 선택 회로(147a)는 제1 데이터(D1)로부터 연산에 필요하지 않은 데이터들(D12, D13, D21, D22, D23, D24, D32, D33, D42, D43)을 제외시키고, 필요한 데이터들(D11, D14, D31, D34, D41, D44) 만을 선택함으로써 추출 데이터(Data_ext)를 생성할 수 있다.
도 14b는 도 13b를 함께 참조하여 설명된다. 제1 다중화 회로(142b)에 의해 생성된 제1 데이터(D1)는 연산에 불필요한 데이터들(음영 없는 부분)을 포함할 수 있다. 수직 회전 회로(145b)는 제1 데이터(D1)를 수직 방향으로 회전시킴으로써 수직 회전된 제1 데이터(D1_VR)를 생성할 수 있다. 제1 데이터 선택 회로(147b)는 수직 회전된 제1 데이터(D1_VR)로부터 연산에 필요하지 않은 첫 번째 행을 제외시킴으로써 선택된 제1 데이터(D1_SEL)를 생성할 수 있다. 수평 회전 회로(146b)는 선택된 제1 데이터(D1_SEL)를 수평 방향으로 회전시킴으로써 수평 회전된 제1 데이터(D1_HR)를 생성할 수 있다. 제2 데이터 선택 회로(148b)는 수평 회전된 제1 데이터(D1_HR)로부터 연산에 필요하지 않은 두 번째 및 세 번째 열을 제외시킴으로써 추출 데이터(Data_ext)를 생성할 수 있다.
도 14c는 도 13c를 함께 참조하여 설명된다. 제1 다중화 회로(142c)에 의해 생성된 제1 데이터(D1)는 연산에 불필요한 데이터들(음영 없는 부분)을 포함할 수 있다. 제2 다중화 회로(143c)는 제1 데이터(D1)를 수직 방향 및/또는 수평 방향으로 회전시킴으로써 회전된 제1 데이터(D1_R)를 생성할 수 있다. 데이터 선택 회로(147c)는 회전된 제1 데이터(D1_R)로부터 연산에 필요하지 않은 데이터들(D12, D13, D21, D22, D23, D24, D32, D33, D42, D43)을 제외시키고, 필요한 데이터들(D11, D14, D31, D34, D41, D44) 만을 선택함으로써 추출 데이터(Data_ext)를 생성할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 뉴럴 네트워크 연산을 수행하는 장치에 포함된 집적 회로에 있어서,
    상기 뉴럴 네트워크 연산에 이용되는 피처 맵 데이터를, 적어도 하나의 피처를 포함하는 셀 단위로 저장하도록 구성되는 버퍼(buffer); 및
    상기 버퍼로부터 상기 피처 맵 데이터를 수신하고, 수신된 상기 피처 맵 데이터에 포함된 복수의 셀들 내 동일 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출해냄으로써, 추출 데이터(extracted data)를 출력하도록 구성되는 다중화 회로(multiplexing circuit)를 포함하고,
    상기 다중화 회로는,
    제1 데이터를 생성하되, 상기 제1 데이터의 모든 좌표 값들에 대응되는 피처 데이터들을 상기 복수의 셀들로부터 추출함으로써 상기 제1 데이터를 생성하고, 상기 제1 데이터를 수직 방향 및 수평 방향 중 적어도 하나의 방향으로 회전(rotate)시킴으로써 상기 추출 데이터를 생성하도록 구성되는 것을 특징으로 하는 집적 회로.
  2. 삭제
  3. 제1항에 있어서,
    상기 다중화 회로는,
    상기 복수의 셀들 내 제1 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출하는 다중화기(Multiplexer)를 포함하고, 상기 추출된 피처 데이터를 기초로 제1 데이터를 출력하는 제1 다중화 회로; 및
    상기 제1 다중화 회로로부터 상기 제1 데이터를 수신하고, 수신된 상기 제1 데이터를 수직 방향 또는 수평 방향으로 회전시키기 위한 복수의 다중화기들을 포함하는 제2 다중화 회로를 포함하는 것을 특징으로 하는 집적 회로.
  4. 제3항에 있어서,
    상기 제1 다중화 회로는,
    상기 피처 맵 데이터에 포함된 셀들의 수에 대응되는 수의 입력 신호들 중 하나의 신호를 선택하도록 구성되는 복수의 다중화기들을 포함하는 것을 특징으로 하는 집적 회로.
  5. 제4항에 있어서,
    상기 제1 다중화 회로는,
    상기 복수의 다중화기들을 하나의 셀에 포함된 피처들의 수에 대응되는 개수 만큼 포함하는 것을 특징으로 하는 집적 회로.
  6. 제3항에 있어서,
    상기 제2 다중화 회로는,
    매트릭스(matrix) 형태의 상기 제1 데이터의 행(row)들의 순서를 변경함으로써 상기 제1 데이터를 수직 방향으로 회전시키고, 수직 회전된 제1 데이터를 생성하도록 구성되는 수직 회전 회로(vertical rotation circuit); 및
    상기 수직 회전된 제1 데이터의 열(column)들의 순서를 변경함으로써 상기 수직 회전된 제1 데이터를 수평 방향으로 회전시키고, 상기 추출 데이터를 생성하도록 구성되는 수평 회전 회로(horizontal rotation circuit)를 포함하는 것을 특징으로 하는 집적 회로.
  7. 제6항에 있어서,
    상기 수직 회전 회로는,
    상기 제1 데이터의 행들의 수에 대응되는 개수 만큼 다중화기들을 포함하고,
    상기 수평 회전 회로는,
    상기 제1 데이터의 열들의 수에 대응되는 개수 만큼 다중화기들을 포함하는 것을 특징으로 하는 집적 회로.
  8. 제7항에 있어서,
    상기 수직 회전 회로에 포함된 다중화기들 각각은,
    상기 제1 데이터의 행들 중 서로 다른 행을 선택하고,
    상기 수평 회전 회로에 포함된 다중화기들 각각은,
    상기 수직 회전된 제1 데이터의 열들 중 서로 다른 열을 선택하도록 구성되는 것을 특징으로 하는 집적 회로.
  9. 제1항에 있어서,
    상기 뉴럴 네트워크 연산은, 컨볼루션(convolution) 연산을 포함하고,
    상기 피처 맵 데이터는, 상기 컨볼루션 연산의 대상이 되는 입력 피처 맵 데이터이고,
    상기 추출 데이터는, 상기 컨볼루션 연산에서 직접적으로 웨이트와 곱셈 연산되는 데이터인 것을 특징으로 하는 집적 회로.
  10. 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 프로세서에 있어서,
    상기 뉴럴 네트워크 프로세서의 외부로부터 외부 데이터를 수신하고, 상기 외부 데이터를 기초로 데이터 및/또는 웨이트를 저장하는 내부 메모리;
    상기 내부 메모리로부터 데이터를 수신하고, 상기 수신된 데이터를 피처 맵 데이터로서 셀 단위로 저장하고, 상기 피처 맵 데이터에 포함된 피처들을 복수의 그룹들로 그룹화 하되, 상기 복수의 그룹들 각각은 상기 피처 맵 데이터에 포함된 복수의 셀들 내 동일 좌표 값에 대응되는 피처들을 포함하는 것을 특징으로 하고, 상기 복수의 그룹들 각각으로부터 하나의 피처의 피처 데이터를 추출해냄으로써 추출 데이터(extracted data)를 출력하는 데이터 추출 회로; 및
    상기 데이터 추출 회로로부터 제공되는 상기 추출 데이터를 이용해 상기 뉴럴 네트워크 연산을 수행하도록 구성되는 연산 회로(arithmetic circuit)를 포함하고,
    상기 데이터 추출 회로는,
    상기 수신된 데이터를 상기 피처 맵 데이터로서 셀 단위로 저장하는 버퍼; 및
    상기 버퍼로부터 수신되는 상기 피처 맵 데이터로부터 상기 뉴럴 네트워크 연산에 필요한 데이터를 추출함으로써 상기 추출 데이터를 출력하는 다중화 회로를 포함하고,
    상기 다중화 회로는,
    제1 데이터를 생성하되, 상기 제1 데이터의 모든 좌표 값들에 대응되는 피처 데이터들을 상기 복수의 셀들로부터 추출함으로써 상기 제1 데이터를 생성하고, 상기 제1 데이터를 수직 방향 및 수평 방향 중 적어도 하나의 방향으로 회전(rotate)시킴으로써 상기 추출 데이터를 생성하도록 구성되는 것을 특징으로 하는 뉴럴 네트워크 프로세서.
  11. 제10항에 있어서,
    상기 연산 회로는,
    상기 내부 메모리로부터 제공되는 웨이트를 상기 추출 데이터에 곱셈함으로써 상기 피처 맵 데이터에 대한 컨볼루션 연산을 수행하는 것을 특징으로 하는 뉴럴 네트워크 프로세서.
  12. 삭제
  13. 제10항에 있어서,
    상기 다중화 회로는,
    상기 복수의 그룹들 각각에 대응되고, 상기 복수의 그룹들 각각으로부터 하나의 피처의 피처 데이터를 추출하도록 구성되는 복수의 다중화기(Multiplexer)들을 포함하는 제1 다중화 회로를 포함하는 것을 특징으로 하는 뉴럴 네트워크 프로세서.
  14. 제13항에 있어서,
    상기 제1 다중화 회로는,
    상기 복수의 다중화기들에 의해 추출된 피처 데이터들을 기초로 제1 데이터를 출력하는 것을 특징으로 하고,
    상기 다중화 회로는,
    상기 제1 다중화 회로로부터 수신되는 상기 제1 데이터를 수평 및/또는 수직 방향으로 재정렬시킴으로써 상기 추출 데이터를 생성하도록 구성되는 제2 다중화 회로를 더 포함하는 것을 특징으로 하는 뉴럴 네트워크 프로세서.
  15. 제13항에 있어서,
    상기 제1 다중화 회로는,
    상기 복수의 다중화기들에 의해 추출된 피처 데이터들을 기초로 제1 데이터를 출력하는 것을 특징으로 하고,
    상기 다중화 회로는,
    상기 제1 데이터의 행(row)들의 순서를 변경하도록 구성되고, 매트릭스(matrix) 형태의 상기 제1 데이터의 행의 개수에 대응되는 개수 만큼 다중화기들을 포함하는 수직 회전 회로; 및
    상기 제1 데이터의 열(column)들의 순서를 변경하도록 구성되고, 상기 제1 데이터의 열의 개수에 대응되는 개수 만큼 다중화기들을 포함하는 수평 회전 회로를 더 포함하는 것을 특징으로 하는 뉴럴 네트워크 프로세서.
  16. 제10항에 있어서,
    상기 추출 데이터의 크기(size)는 상기 셀의 크기와 같거나 상기 셀의 크기보다 작은 것을 특징으로 하는 뉴럴 네트워크 프로세서.
  17. 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 프로세서의 데이터 처리 방법에 있어서,
    상기 뉴럴 네트워크 연산에 필요한 피처 맵 데이터를 버퍼에 적어도 하나의 피처를 포함하는 셀 단위로 저장하는 단계;
    상기 피처 맵 데이터에 포함된 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 복수의 좌표 값들에 대해 추출함으로써 매트릭스 형태의 제1 데이터를 생성하는 단계;
    상기 제1 데이터의 행(row)들 및/또는 열(column)들을 재배열함으로써 상기 뉴럴 네트워크 연산에 이용되는 추출 데이터를 생성하는 단계; 및
    연산 회로가 상기 추출 데이터를 이용해 상기 뉴럴 네트워크 연산을 수행하는 단계를 포함하는 뉴럴 네트워크 장치의 데이터 처리 방법.
  18. 제17항에 있어서,
    상기 제1 데이터를 생성하는 단계는,
    상기 복수의 좌표 값들 각각에 대응되는 복수의 다중화기들을 이용해 상기 피처 데이터를 추출함으로써 상기 제1 데이터를 생성하는 것을 특징으로 하는 뉴럴 네트워크 장치의 데이터 처리 방법.
  19. 제17항에 있어서,
    상기 추출 데이터를 출력하는 단계는,
    복수의 다중화기들을 이용해 상기 제1 데이터의 행(row)들의 순서를 변경함으로써 상기 제1 데이터를 수직 방향으로 회전시키는 단계; 및
    복수의 다중화기들을 이용해 수직 회전된 제1 데이터의 열(column)들의 순서를 변경함으로써 상기 수직 회전된 제1 데이터를 수평 방향으로 회전시킴으로써 상기 추출 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 뉴럴 네트워크 장치의 데이터 처리 방법.
  20. 제17항에 있어서,
    상기 제1 데이터를 생성하는 단계는,
    상기 뉴럴 네트워크 연산에 필요한 상기 추출 데이터의 상기 피처 맵 데이터 상에서의 위치에 기초하여 상기 복수의 셀들 내 동일한 좌표 값에 대응되는 피처들 중 하나의 피처의 피처 데이터를 추출하는 것을 특징으로 하는 뉴럴 네트워크 장치의 데이터 처리 방법.
KR1020180107391A 2018-09-07 2018-09-07 데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치 KR102633139B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180107391A KR102633139B1 (ko) 2018-09-07 2018-09-07 데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치
CN201910620693.7A CN110889498A (zh) 2018-09-07 2019-07-10 集成电路、神经网络处理器与装置以及数据处理方法
US16/511,073 US11694074B2 (en) 2018-09-07 2019-07-15 Integrated circuit that extracts data, neural network processor including the integrated circuit, and neural network device
TW108130337A TW202029065A (zh) 2018-09-07 2019-08-23 積體電路、神經網路處理器與裝置以及資料處理方法
US18/319,140 US20230289601A1 (en) 2018-09-07 2023-05-17 Integrated circuit that extracts data, neural network processor including the integrated circuit, and neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180107391A KR102633139B1 (ko) 2018-09-07 2018-09-07 데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치

Publications (2)

Publication Number Publication Date
KR20200028791A KR20200028791A (ko) 2020-03-17
KR102633139B1 true KR102633139B1 (ko) 2024-02-02

Family

ID=69719918

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180107391A KR102633139B1 (ko) 2018-09-07 2018-09-07 데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치

Country Status (4)

Country Link
US (2) US11694074B2 (ko)
KR (1) KR102633139B1 (ko)
CN (1) CN110889498A (ko)
TW (1) TW202029065A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240031691A1 (en) * 2020-09-14 2024-01-25 Sony Semiconductor Solutions Corporation Imaging element and imaging device
US20220230064A1 (en) * 2021-01-20 2022-07-21 Mediatek Singapore Pte. Ltd. Calibration of analog circuits for neural network computing
US11886973B2 (en) 2022-05-30 2024-01-30 Deepx Co., Ltd. Neural processing unit including variable internal memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015177268A1 (en) * 2014-05-23 2015-11-26 Ventana Medical Systems, Inc. Systems and methods for detection of biological structures and/or patterns in images
US20180157940A1 (en) * 2016-10-10 2018-06-07 Gyrfalcon Technology Inc. Convolution Layers Used Directly For Feature Extraction With A CNN Based Integrated Circuit

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1709587B1 (de) 2004-01-30 2007-11-07 Baumer Optronic GmbH Bildverarbeitungssystem
US7747070B2 (en) 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
US9805303B2 (en) 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US10614354B2 (en) 2015-10-07 2020-04-07 Altera Corporation Method and apparatus for implementing layers on a convolutional neural network accelerator
US11475269B2 (en) 2015-12-15 2022-10-18 Analog Devices, Inc. Convolutional neural network
US9665799B1 (en) 2016-01-29 2017-05-30 Fotonation Limited Convolutional neural network
GB201607713D0 (en) 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
CN106250103A (zh) 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的系统
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10515302B2 (en) 2016-12-08 2019-12-24 Via Alliance Semiconductor Co., Ltd. Neural network unit with mixed data and weight size computation capability
KR20180073314A (ko) 2016-12-22 2018-07-02 삼성전자주식회사 컨볼루션 신경망 시스템 및 그것의 동작 방법
CN107240102A (zh) * 2017-04-20 2017-10-10 合肥工业大学 基于深度学习算法的恶性肿瘤计算机辅助早期诊断方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015177268A1 (en) * 2014-05-23 2015-11-26 Ventana Medical Systems, Inc. Systems and methods for detection of biological structures and/or patterns in images
US20180157940A1 (en) * 2016-10-10 2018-06-07 Gyrfalcon Technology Inc. Convolution Layers Used Directly For Feature Extraction With A CNN Based Integrated Circuit

Also Published As

Publication number Publication date
TW202029065A (zh) 2020-08-01
KR20200028791A (ko) 2020-03-17
US20200082253A1 (en) 2020-03-12
CN110889498A (zh) 2020-03-17
US20230289601A1 (en) 2023-09-14
US11694074B2 (en) 2023-07-04

Similar Documents

Publication Publication Date Title
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
KR102499396B1 (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US20200234124A1 (en) Winograd transform convolution operations for neural networks
KR102637733B1 (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
US20230289601A1 (en) Integrated circuit that extracts data, neural network processor including the integrated circuit, and neural network
US11562046B2 (en) Neural network processor using dyadic weight matrix and operation method thereof
CN111258495A (zh) 半导体存储器设备和操作该半导体存储器设备的方法
US20200118249A1 (en) Device configured to perform neural network operation and method of operating same
US11651201B2 (en) Memory device including arithmetic circuit and neural network system including the same
CN111465943A (zh) 芯片上计算网络
US11664818B2 (en) Neural network processor for compressing featuremap data and computing system including the same
KR20200062014A (ko) 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법
US20220188612A1 (en) Npu device performing convolution operation based on the number of channels and operating method thereof
TWI834729B (zh) 神經網路處理器及其卷積操作方法
US11842273B2 (en) Neural network processing
KR20200132660A (ko) 가우시안 가치 분포에 기초하여 현재 상태에 대한 행동을 선택하는 뉴럴 네트워크 장치 및 이를 이용하는 행동 선택 방법
KR20220147412A (ko) 이미지 센서 모듈, 이미지 처리 시스템 및 이미지 센서 모듈의 동작 방법
KR20240025827A (ko) Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법
KR20210124883A (ko) 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서
KR20210082970A (ko) 컨볼루션 연산을 수행하는 방법 및 장치

Legal Events

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