KR20210060024A - 신경망 처리 회로를 포함하는 메모리 장치 - Google Patents

신경망 처리 회로를 포함하는 메모리 장치 Download PDF

Info

Publication number
KR20210060024A
KR20210060024A KR1020190147555A KR20190147555A KR20210060024A KR 20210060024 A KR20210060024 A KR 20210060024A KR 1020190147555 A KR1020190147555 A KR 1020190147555A KR 20190147555 A KR20190147555 A KR 20190147555A KR 20210060024 A KR20210060024 A KR 20210060024A
Authority
KR
South Korea
Prior art keywords
data
unit
input
control unit
cell array
Prior art date
Application number
KR1020190147555A
Other languages
English (en)
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 KR1020190147555A priority Critical patent/KR20210060024A/ko
Priority to DE102020205623.4A priority patent/DE102020205623A1/de
Priority to US16/868,181 priority patent/US11501149B2/en
Priority to JP2020119606A priority patent/JP2021082246A/ja
Priority to CN202010671608.2A priority patent/CN112819134B/zh
Publication of KR20210060024A publication Critical patent/KR20210060024A/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/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/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • 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/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits

Landscapes

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

Abstract

본 기술은 내부에 신경망 연산을 수행할 수 있는 신경망 처리 회로를 포함하는 메모리 장치에 관한 것으로서, N개의 셀 어레이 영역; 연산모드 중 연산구간동안 N개의 셀 어레이 영역으로부터 N개의 신경망 처리정보를 병렬로 로딩(loading)하여 N개의 신경망 연산을 병렬로 수행하는 제1동작을 루프 형태로 M번 반복한 제2동작을 입력데이터에 대해 수행하여 연산완료 데이터를 생성하는 연산처리부; 상기 연산모드 중 입력구간에서 데이터 전달버퍼를 통해 입력되는 상기 입력데이터 및 M*N개의 신경망 처리정보를 N개의 셀 어레이 영역에 저장하며, 상기 연산모드 중 출력구간에서 상기 연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하는 데이터 동작부; 및 입력버퍼를 통해 입력되는 커맨드 및 어드레스에 응답하여 상기 입력구간과 상기 연산구간 및 상기 출력구간 각각의 진입/탈출과 상기 연산처리부 및 상기 데이터 동작부를 제어하기 위한 동작제어부를 포함한다.

Description

신경망 처리 회로를 포함하는 메모리 장치{MEMORY DEVICE INCLUDING NEURAL NETWORK PROCESSING CIRCUIT}
본 발명은 메모리 시스템에 관한 것으로서, 구체적으로 내부에 신경망 처리 회로를 포함하는 메모리 장치에 관한 것이다.
신경망 네트워크(Neural network)는 인간 뇌의 뉴런(Neuron)을 모델링하여 모방한 네트워크를 말하며, 실제 뉴런이 아닌 것을 강조하여 인공 신경망 네트워크(Artificial Neural Network, ANN)이라고도 한다.
신경망 처리(neural network processing) 동작은 머신 러닝(machine learning) 기법 중 딥 러닝(deep learning) 기술인 중첩 신경망(Convolutional Neural Network, CNN), 순환 신경망(Recurrent Neural Network, RNN) 등에 활용되는 기본 기술로, 다층 신경망(Multiple Layer Perception, MLP)을 처리하는데 활용될 수 있다.
도 1을 참조하면, 다층 신경망을 처리하기 위한 신경망 네트워크에는 다수의 레이어(1, 2, 3, 4, 5)가 포함되고, 하나의 레이어(1 or 2 or 3 or 4 or 5)에는 다수의 뉴런(Neuron)들이 포함될 수 있다. 즉, 다수의 뉴런 각각은 수학적으로 모델링이 되어 있으며, 다수의 뉴런을 원하는 알고리즘에 맞게 그룹화하여 하나의 레이어(1 or 2 or 3 or 4 or 5)로 구성할 수 있고, 다수의 레이어(1, 2, 3, 4, 5)를 원하는 알고리즘에 맞게 그룹화하여 신경망 네트워크를 구성할 수 있다.
일반적으로 시작에 있는 레이어(1)를 '입력 레이어(Input Layer)'라고 하고, 마지막 출력에 있는 레이어(5)를 '출력 레이어(Output Layer)'라고 하며, 입력 레이어(1)와 출력 레이어(5) 사이에 있는 적어도 하나 이상의 레이어들(2, 3, 4)을 '중간 레이어(Hidden Layer)'라고 할 수 있다.
이때, 서로 다른 인접한 레이어에 각각 포함된 다수의 뉴런들은 시냅스(Synapse)를 통해 다양하게 연결되며 각각의 시냅스에는 가중치(Weight)가 주어질 수 있다. 또한, 입력 레이어(1)에 포함된 다수의 뉴런들은 입력 데이터에 따라 그 값이 정해질 수 있다. 또한, 중간 레이어(2, 3, 4)와 출력 레이어(5)에 포함된 뉴런들의 값은 그 이전 레이어에 포함된 뉴런과 시냅스에 따라 값이 연산될 수 있다.
본 발명의 실시예는 내부에 신경망 연산을 수행할 수 있는 신경망 처리 회로를 포함하는 메모리 장치를 제공한다.
본 발명의 실시예에 따른 메모리 장치는, N개의 셀 어레이 영역; 연산모드 중 연산구간동안 N개의 셀 어레이 영역으로부터 N개의 신경망 처리정보를 병렬로 로딩(loading)하여 N개의 신경망 연산을 병렬로 수행하는 제1동작을 루프 형태로 M번 반복한 제2동작을 입력데이터에 대해 수행하여 연산완료 데이터를 생성하는 연산처리부; 상기 연산모드 중 입력구간에서 데이터 전달버퍼를 통해 입력되는 상기 입력데이터 및 M*N개의 신경망 처리정보를 N개의 셀 어레이 영역에 저장하며, 상기 연산모드 중 출력구간에서 상기 연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하는 데이터 동작부; 및 입력버퍼를 통해 입력되는 커맨드 및 어드레스에 응답하여 상기 입력구간과 상기 연산구간 및 상기 출력구간 각각의 진입/탈출과 상기 연산처리부 및 상기 데이터 동작부를 제어하기 위한 동작제어부를 포함하며, N과 M은 각각 2 이상의 자연수일 수 있다.
또한, 상기 데이터 동작부는, 노말모드에서 라이트 동작시 상기 데이터 전달버퍼를 통해 입력된 데이터를 N개의 셀 어레이 영역에 저장하고, 리드 동작시 N개의 셀 어레이 영역의 데이터를 리드하여 상기 데이터 전달버퍼를 통해 출력하며, 상기 동작제어부는, 상기 입력버퍼를 통해 입력되는 커맨드 및 어드레스에 응답하여 상기 노말모드의 진입/탈출과 상기 데이터 동작부를 제어할 수 있다.
또한, M*N개의 신경망 처리정보는, M*N개의 가중치 정보 및 M*N개의 연산정보를 포함하며, 상기 동작제어부는, 상기 입력구간에서 N개의 셀 어레이 영역 각각에 M개의 가중치 정보 및 M개의 연산정보가 저장되도록 상기 데이터 동작부를 제어할 수 있다.
또한, 상기 동작제어부는, 상기 입력버퍼를 통해 입력되는 연산입력커맨드에 응답하여 상기 입력구간에 진입한 뒤, 상기 입력버퍼를 통해 입력된 어드레스에 응답하여 N개의 셀 어레이 영역 각각에 상기 입력데이터와 M개의 가중치 정보 및 M개의 연산정보가 저장되도록 상기 데이터 동작부를 제어할 수 있다.
또한, 상기 동작제어부는, 상기 입력버퍼를 통해 입력되는 연산시작커맨드에 응답하여 상기 입력구간에서 탈출한 뒤 상기 연산구간에 진입하며, 상기 입력버퍼를 통해 입력된 어드레스에 응답하여 상기 제1 및 제2동작을 제어하고, 상기 연산처리부에서 전달된 연산완료신호에 응답하여 상기 연산완료 데이터를 N개의 셀 어레이 영역에 저장하도록 상기 데이터 동작부를 제어할 수 있다.
또한, 상기 동작제어부는, 상기 입력버퍼를 통해 입력되는 연산완료커맨드에 응답하여 상기 연산구간에서 탈출한 뒤 상기 출력구간에 진입하며, 상기 입력버퍼를 통해 입력된 어드레스에 응답하여 N개의 셀 어레이 영역에서 상기 연산완료 데이터를 리드하고, 리드된 상기 연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하도록 상기 데이터 동작부를 제어할 수 있다.
또한, 상기 동작제어부는, 상기 연산구간에 진입한 뒤, N개의 셀 어레이 영역에 저장된 M*N개의 가중치 정보 및 M*N개의 연산정보 중 상기 제1동작에 대응하도록 N개의 셀 어레이 영역에서 N개의 가중치 정보 및 N개의 연산정보를 병렬로 리드한 뒤, 리드된 정보들을 상기 연산처리부에 로딩되도록 상기 데이터 동작부를 제어하는 제3동작을 상기 제2동작에 대응하도록 M번 반복할 수 있다.
또한, 상기 동작제어부는, 상기 연간구간의 진입에 따라 첫 번째 상기 제3동작을 수행하고, 두 번째부터 M번째까지의 상기 제3동작 각각은 상기 연산처리부에서 중간완료신호가 전달된 것에 응답하여 수행할 수 있다.
또한, 상기 입력데이터는 N개의 제1입력데이터를 포함하고, 상기 연산완료 데이터는 N개의 제1연산완료 데이터를 포함하며, 상기 동작제어부는, 상기 입력구간에 진입한 뒤, N개의 셀 어레이 영역 각각에 한 개씩의 제1입력데이터가 저장되도록 상기 데이터 동작부를 제어할 수 있다.
또한, 상기 동작제어부는, 상기 연산구간에 진입에 따라 N개의 셀 어레이 영역에서 병렬로 리드한 N개의 제1입력데이터가 상기 연산처리부에 로딩되도록 상기 데이터 동작부를 제어하며, 상기 연산처리부에서 상기 연산완료신호 및 N개의 제1연산완료 데이터가 출력될 때 N개의 셀 어레이 영역 각각에 한 개씩의 제1연산완료 데이터가 저장되도록 상기 데이터 동작부를 제어할 수 있다.
또한, 상기 동작제어부는, 상기 출력구간에 진입에 따라 N개의 셀 어레이 영역에서 N개의 제1연산완료 데이터를 병렬로 리드하고, 리드된 N개의 제1연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하도록 상기 데이터 동작부를 제어할 수 있다.
또한, 상기 연산처리부는, 상기 연산구간의 진입에 따라 로딩한 N개의 제1입력데이터에 대해 첫 번째 상기 제1동작에 포함된 N개의 신경망 연산을 병렬로 수행하여 N개의 데이터를 생성하고, 두 번째부터 M번째까지의 상기 제1동작 각각은 앞선 동작의 수행결과로서 생성된 N개의 데이터를 뒤선 동작에서 로딩하여 N개의 신경망 연산을 병렬로 수행하며, M번째 상기 제1동작의 수행결과로서 생성된 N개의 데이터를 상기 제2동작의 수행결과인 N개의 제1연산완료 데이터로서 상기 데이터 동작부로 출력할 수 있다.
또한, 상기 연산처리부는, 상기 제1동작의 수행완료횟수를 카운팅하며, 카운팅 값이 M-1이 될 때 까지는, 카운팅 값이 1씩 증가할 때마다 상기 중간완료신호를 생성하여 상기 동작제어부로 출력하고, 카운팅 값이 M이 될 때, 상기 연산완료신호를 생성하여 상기 동작제어부로 출력할 수 있다.
또한, 상기 입력데이터는 K*N개의 제2입력데이터를 포함하고, 상기 연산완료 데이터는 K*N개의 제2연산완료 데이터를 포함하며, 상기 동작제어부는, 상기 입력구간에 진입한 뒤, N개의 셀 어레이 영역 각각에 K개씩의 제2입력데이터가 저장되도록 상기 데이터 동작부를 제어하고, 상기 연산처리부는, K*N개의 제2입력데이터 중 N개에 대해 한 번의 상기 제2동작을 수행하여 K*N개의 제2연산완료 데이터 중 N개를 생성할 수 있고, 상기 연산구간동안 상기 제2동작을 K번의 연속으로 수행하는 제4동작을 K*N개의 제2입력데이터에 대해 수행하여 K*N개의 제2연산완료 데이터를 생성하며, K는 2이상의 자연수일 수 있다.
또한, 상기 동작제어부는, 상기 연산구간에 진입한 뒤, 상기 제2동작에 대응하도록 N개의 셀 어레이 영역에서 병렬로 리드한 N개의 제2입력데이터가 상기 연산처리부에 로딩되도록 상기 데이터 동작부를 제어하는 제5동작을 상기 제4동작에 대응하도록 K번 반복하며, 상기 연산처리부에서 상기 제2동작에 대응하여 상기 연산완료신호 및 K*N개의 제2연산완료 데이터 중 N개가 출력될 때 N개의 셀 어레이 영역 각각에 한 개씩의 제2연산완료 데이터가 저장되도록 상기 데이터 동작부를 제어하는 제6동작을 상기 제4동작에 대응하도록 K번 반복할 수 있다.
또한, 상기 동작제어부는, 상기 출력구간에 진입에 따라 N개의 셀 어레이 영역에서 N개의 제2연산완료 데이터를 병렬로 리드하는 제7동작을 K번 반복하고, 상기 제7동작에 따라 리드된 N개의 제2연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하도록 상기 데이터 동작부를 제어하는 제8동작을 K번 반복할 수 있다.
또한, 상기 연산처리부는, 상기 연산구간의 진입한 뒤, K*N개의 제2입력데이터 중 로딩한 N개에 대해 첫 번째 상기 제1동작에 포함된 N개의 신경망 연산을 병렬로 수행하여 N개의 데이터를 생성하고, 두 번째부터 M번째까지의 상기 제1동작 각각은 앞선 동작의 수행결과로서 생성된 N개의 데이터를 뒤선 동작에서 로딩하여 N개의 신경망 연산을 병렬로 수행하며, M번째 상기 제1동작의 수행결과로서 생성된 N개의 데이터를 상기 제2동작의 수행결과인 N개의 제2연산완료 데이터로서 상기 데이터 동작부로 출력할 수 있다.
또한, 상기 연산처리부는, 상기 제1동작의 수행완료횟수를 카운팅하며, 카운팅 값이 M-1이 될 때 까지는, 카운팅 값이 1씩 증가할 때마다 상기 중간완료신호를 생성하여 상기 동작제어부로 출력하고, 카운팅 값이 M이 될 때, 상기 연산완료신호를 생성하여 상기 동작제어부로 출력한 뒤, 카운팅 값을 초기화할 수 있다.
또한, 상기 연산처리부는, N개의 셀 어레이 영역 각각에 대응하는 N개의 연산처리유닛을 포함하며, N개의 연산처리유닛 각각은, 상기 데이터 동작부를 통해 입력된 데이터와 내부에서 피드백(feedback)된 루프데이터 중 어느 하나의 데이터 및 상기 데이터 동작부를 통해 입력된 가중치정보와 연산정보를 로딩하기 위한 데이터 로딩부; 가중치정보 및 연산정보를 사용하여 상기 데이터 로딩부에서 로딩된 데이터 및 스스로를 제외한 나머지 N-1개의 연산처리유닛 각각에서 전달된 데이터에 대해 신경망 연산을 수행하고, 수행결과로서 결과데이터를 생성하는 연산수행부; 상기 결과데이터의 값이 기준값, 이상일 때 상기 결과데이터를 상기 루프데이터로서 상기 데이터 로딩부에 피드백하고, 이하일 때 특정값으로 고정된 상기 루프데이터를 생성하여 상기 데이터 로딩부에 피드백하는 선택전달부; 및 상기 선택전달부에서 상기 데이터 로딩부로 상기 루프데이터가 전달되는 횟수를 카운팅하며, 카운팅 값에 따라 상기 중간완료신호 또는 상기 연산완료신호를 생성하여 상기 동작제어부로 출력하는 카운팅부를 포함할 수 있다.
또한, 상기 데이터 동작부는, N개의 셀 어레이 영역 각각에 대응하는 N개의 데이터 전달유닛을 포함하며, N개의 데이터 전달유닛 각각은, 상기 동작제어부로부터 입력되는 제1제어신호에 응답하여 셀 어레이 영역에 데이터를 라이트하거나 셀 어레이 영역으로부터 데이터를 리드하기 위한 리드/라이트 동작부; 및 상기 동작제어부로부터 입력되는 제2제어신호에 응답하여 상기 리드/라이트 동작부와 상기 데이터 전달버퍼 및 상기 연산처리부 사이에서 전달되는 데이터의 경로를 선택하기 위한 경로선택부를 포함할 수 있다.
본 기술은 메모리 장치 내부에 신경망 처리 회로를 포함시킴으로써, 연산모드에 진입한 후에는 메모리 장치 스스로가 신경망 연산을 수행하도록 할 수 있다.
또한, 메모리 장치 내부에 포함된 메모리 뱅크(다수의 메모리 셀을 포함함)와 신경망 처리 회로가 데이터 입/출력 버퍼를 공유할 수 있으며, 신경망 처리 회로의 활성화 여부를 제어함으로써 메모리 장치의 사용용도를 선택할 수 있다.
도 1은 신경망 처리를 설명하기 위해 도시한 도면.
도 2는 본 발명의 실시예에 따른 메모리 장치의 블록도.
도 3은 본 발명의 실시예에 따른 신경망 처리에서 사용되는 신경망 처리정보를 설명하기 위해 도시한 도면.
도 4는 도 2에 도시된 메모리 장치의 상세한 블록도.
도 5a 내지 도 5f는 본 발명의 실시예에 따른 메모리 장치의 연산모드 동작의 일 예를 설명하기 위해 도시한 도면.
도 6a 내지 도 6c는 본 발명의 실시예에 따른 메모리 장치의 연산모드 동작의 다른 예를 설명하기 위해 도시한 도면.
도 7은 본 발명의 실시예에 다른 메모리 장치의 노말모드 동작을 설명하기 위해 도시한 도면.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 2는 본 발명의 실시예에 따른 메모리 장치의 블록도이다.
도 3은 본 발명의 실시예에 따른 신경망 처리에서 사용되는 신경망 처리정보를 설명하기 위해 도시한 도면이다.
먼저, 도 2를 참조하면, 본 발명의 실시예에 따른 메모리 장치(10)는, N개의 메모리 뱅크(101, 102, ..., 10N)와, 연산처리부(20<1:N>)와, 데이터 동작부(30<1:N>)와, 동작제어부(40<1:N>)와, 커맨드 입력버퍼(11)와, 어드레스 입력버퍼(12), 및 데이터 전달버퍼(13)를 포함할 수 있다.
구체적으로, 메모리 장치(10)는, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구현될 수 있다.
연산처리부(20<1:N>)는, 연산모드 중 연산구간동안 N개의 메모리 뱅크(101, 102, ..., 10N)로부터 N개의 신경망 처리정보를 병렬로 로딩(loading)하여 N개의 신경망 연산을 병렬로 수행하는 '제1동작'을 루프(loop)형태로 M번 반복한 '제2동작'을 입력데이터에 대해 수행하여 연산완료 데이터를 생성할 수 있다. 즉, 연산처리부(20<1:N>)는, 입력데이터에 대해 '제2동작'을 수행하여 연산완료 데이터를 생성할 수 있으며, '제2동작'은 '제1동작'이 루프형태로 M번 반복되는 것을 의미한다. 그리고, 연산처리부(20<1:N>)는, 노말모드에서 비활성화되어 아무런 동작도 수행하지 않을 수 있다.
도 1 및 도 2를 함께 참조하면, 연산처리부(20<1:N>)에서 수행되는 '제1동작'에 포함된 N개의 신경망 연산 각각은, 하나의 뉴런(Neuron)에 대응할 수 있다. 또한, 연산처리부(20<1:N>)에서 수행하는 '제1동작'은, 하나의 레이어(1 or 2 or 3 or 4 or 5)에 대응하는 동작일 수 있다. 따라서, 연산처리부(20<1:N>)에서 '제1동작'을 수행하는 것은, N개의 뉴런을 포함하는 한 개의 레이어(1 or 2 or 3 or 4 or 5)에 대한 신경망 연산동작을 수행하는 것일 수 있다. 마찬가지로, 연산처리부(20<1:N>)에서 '제2동작'을 수행하는 것은, '제2동작'에 포함된 '제1동작'을 루프형태로 M번 반복하여 수행하는 것이며, M개의 레이어를 포함하는 신경망 연산동작을 수행하는 것일 수 있다. 즉, 도 1에서와 같이 5개의 레이어(1, 2, 3, 4, 5)를 포함하는 신경망 연산동작을 예시하는 경우 M은 5가 될 수 있다. 여기서, N과 M은 각각 2보다 큰 자연수일 수 있다.
그리고, 데이터 동작부(30<1:N>)는, 연산모드 중 입력구간에서 데이터 전달버퍼(13)를 통해 입력되는 입력데이터 및 M*N개의 신경망 처리정보를 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장할 수 있다. 또한, 데이터 동작부(30<1:N>)는, 연산모드 중 출력구간에서 연산처리부(20<1:N>)에서 생성된 연산완료 데이터를 데이터 전달버퍼(13)를 통해 출력할 수 있다.
이때, 연산모드 중 입력구간은, 연산모드보다 앞서서 수행될 수 있다. 즉, 전술한 연산처리부(20<1:N>)의 동작은, 데이터 동작부(30<1:N>)를 통해 입력데이터 및 M*N개의 신경망 처리정보가 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 이후에 수행될 수 있다. 참고로, 전술한 설명에서 '제1동작'이 수행될 때마다 N개의 신경망 처리정보가 로딩되고, '제1동작'이 루프형태로 M번 반복된 '제2동작'이 입력데이터에 대해 수행될 때 연산완료 데이터가 생성되는 것을 가정한 바 있다. 따라서, 연산처리부(20<1:N>)에서 입력데이터에 대해 '제2동작'을 수행하여 연산완료 데이터를 생성하기 위해서는 M*N개의 신경망 처리정보가 필요할 수 있다.
그리고, 데이터 동작부(30<1:N>)는, 노말모드에서 라이트 동작시 데이터 전달버퍼(13)를 통해 입력된 데이터를 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장할 수 있다. 또한, 데이터 동작부(30<1:N>)는, 노말모드에서 리드 동작시 N개의 메모리 뱅크(101, 102, ..., 10N)의 데이터를 리드하여 데이터 전달버퍼(13)를 통해 출력할 수 있다.
그리고, 동작제어부(40<1:N>)는, 메모리 레지스터 셋(Memory Register Set, MRS)을 포함할 수 있다. 따라서, 동작제어부(40<1:N>)는, 커맨드 입력버퍼(11)를 통해 입력되는 커맨드 및 어드레스 입력버퍼(12)를 통해 입력되는 어드레스에 응답하여 연산모드의 입력구간과 연산구간과 출력구간 및 노말모드 각각의 진입/탈출을 제어할 수 있으며, 연산처리부(20<1:N>) 및 데이터 동작부(30<1:N>)를 제어할 수 있다. 이때, 연산모드와 노말모드는 완전히 구분되는 동작모드로서 서로 겹쳐질 수 없다.
도 2 및 도 3을 함께 참조하면, M*N개의 신경망 처리정보는, M*N개의 가중치 정보(W#<1:N/L1:LM>) 및 M*N개의 연산정보(S#<1:N/L1:LM>)를 포함할 수 있다. 즉, 하나의 신경망 처리정보는, 한 개의 가중치 정보 및 한 개의 연산정보를 포함할 수 있다.
도 1 내지 도 3을 함께 참조하면, 신경망 처리 정보에 가중치 정보가 포함되는 것은, 서로 다른 인접한 레이어에 각각 포함된 다수의 뉴런들을 연결하기 위해 사용하는 시냅스(Synapse)에 가중치(Weight)가 주어지는 것에 대응할 수 있다. 또한, 신경망 처리 정보에 연산정보가 포함되는 것은, 다수의 뉴런 각각이 수학적으로 모델링되는 것에 대응할 수 있다.
구체적으로, 동작제어부(40<1:N>)는, 연산모드 중 입력구간에서 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 M개의 가중치 정보 및 M개의 연산정보가 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
예컨대, 동작제어부(40<1:N>)는, 연산모드 중 입력구간에서 N개의 메모리 뱅크(101, 102, ..., 10N) 중 첫 번째 메모리 뱅크(101)에 첫 번째 M개의 가중치 정보(W<L1:LM>#1) 및 첫 번째 M개의 연산정보(S<L1:LM>#1)를 저장하고, 두 번째 메모리 뱅크(102)에 두 번째 M개의 가중치 정보(W<L1:LM>#2) 및 두 번째 M개의 연산정보(S<L1:LM>#2)를 저장하는 것과 같이, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 M개의 가중치 정보 및 M개의 연산정보가 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
그리고, 동작제어부(40<1:N>)는, 연산모드 중 연산구간에서 M개의 가중치 정보 및 M개의 연산정보를 N개의 메모리 뱅크(101, 102, ..., 10N) 각각으로부터 리드하여 연산처리부(20<1:N>)에 전달하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
예컨대, 동작제어부(40<1:N>)는, 연산모드 중 연산구간에서 N개의 메모리 뱅크(101, 102, ..., 10N) 중 첫 번째 메모리 뱅크(101)에 저장된 첫 번째 M개의 가중치 정보(W<L1:LM>#1) 및 첫 번째 M개의 연산정보(S<L1:LM>#1)를 리드하고, 두 번째 메모리 뱅크(102)에 저장된 두 번째 M개의 가중치 정보(W<L1:LM>#2) 및 두 번째 M개의 연산정보(S<L1:LM>#2)를 리드하는 것과 같이, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 저장된 M개의 가중치 정보 및 M개의 연산정보를 리드하여 연산처리부(20<1:N>)에 전달하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
그리고, 동작제어부(40<1:N>)는, 연산모드 중 연산구간에서 연산처리부(20<1:N>)가 신경망 연산의 수행을 완료한 후, 연산처리부(20<1:N>)로부터 연산완료신호가 전달되는 것에 응답하여 연산처리부(20<1:N>)로부터 전달되는 연산완료 데이터를 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
그리고, 동작제어부(40<1:N>)는, 연산모드 중 출력구간에서 연산완료 데이터를 N개의 메모리 뱅크(101, 102, ..., 10N)로부터 리드하여 데이터 전달버퍼(13)를 통해 출력하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
도 4는 도 2에 도시된 메모리 장치의 상세한 블록도이다.
도 4를 참조하면, 도 2에 도시된 메모리 장치(10)의 구성요소 중 동작제어부(40<1:N>)와 데이터 동작부(30<1:N>) 및 연산처리부(20<1:N>)의 구성이 상세하게 도시된 것을 알 수 있다. 이때, 도 3에 도시된 도면은, 메모리 장치(10)가 DRAM인 것을 가정하였으며, 메모리 장치(10)가 다른 종류의 메모리 장치일 경우, 상세구성이 변경될 수 있다.
구체적으로, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에는, 다수의 워드라인(Wordline, 미도시)과 다수의 비트라인(Bitline, 미도시)에 어레이(Array) 형태로 접속된 다수의 메모리 셀(Cell, 미도시)을 포함할 수 있으며, 메모리 셀 각각은 적어도 1비트의 데이터를 저장할 수 있다. 즉, N개의 메모리 뱅크(101, 102, ..., 10N) 각각은, 다수의 메모리 셀이 어레이 형태로 포함된 '셀 어레이 영역'이라고 볼 수 있다. 따라서, 'N개의 메모리 뱅크'라는 표현은 메모리 장치(10)가 DRAM인 것을 가정한 것이며, 다른 종류의 메모리 장치일 경우 'N개의 셀 어레이 영역'이라는 표현으로 대체될 수 있을 것이다.
그리고, 연산처리부(20<1:N>)는, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 대응하는 N개의 연산처리유닛(201, 202, ..., 20N)을 포함할 수 있다. 또한, 동작제어부(40<1:N>)는, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 대응하는 N개의 동작제어유닛(401, 402, ..., 40N), 및 메모리 레지스터 셋(Memory Register Set, MRS, 도 2 참조)을 포함할 수 있다. 또한, 데이터 동작부(30<1:N>)는, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 대응하는 N개의 데이터 동작유닛(301, 302, .., 30N)을 포함할 수 있다. 이때, 동작제어부(40<1:N>)에 포함되는 메모리 레지스터 셋(MRS, 도 2참조)은, N개의 동작제어유닛(401, 402, ..., 40N)과는 구분되어 포함될 수 있는 구성요소이므로, 도 3에는 도시되지 않았다.
여기서, N개의 동작제어유닛(401, 402, ..., 40N) 각각은, 모두 유사한 형태로 동작하는 회로로 구현될 수 있다. 또한, N개의 데이터 동작유닛(301, 302, .., 30N)은 모두 유사한 형태로 동작하는 회로로 구현될 수 있다. 또한, N개의 연산처리유닛(201, 202, ..., 20N) 각각은, 모두 유사한 형태로 동작하는 회로로 구현될 수 있다.
따라서, N개의 동작제어유닛(401, 402, ..., 40N) 중 첫 번째 동작제어유닛(401)과, N개의 데이터 동작유닛(301, 302, .., 30N) 중 첫 번째 데이터 동작유닛(301), 및 N개의 연산처리유닛(201, 202, ..., 20N) 중 첫 번째 연산처리유닛(201)을 대표로 선택하여 그 상세한 구성을 살펴보면 다음과 같다.
먼저, 첫 번째 동작제어유닛(401)은, 어드레스 제어부(Address Control), 및 어드레스/데이터 전달제어부(Address/Data a Flow Control)를 포함할 수 있다. 구체적으로, 첫 번째 동작제어유닛(401)은, 커맨드 입력버퍼(11) 및 어드레스 입력버퍼(12)를 통해 입력되는 커맨드 및 어드레스와, 첫 번째 연산처리유닛(201)에서 입력되는 연산처리에 관련된 신호(CF or MF)에 응답하여 첫 번째 데이터 동작유닛(301)을 제어하기 위한 여러 가지 제어신호를 생성할 수 있다.
예컨대, 첫 번째 동작제어유닛(401)에 포함된 어드레스 제어부(Address Control)는, 어드레스 입력버퍼(12)를 통해 입력되는 어드레스에 응답하여 로우 어드레스와 컬럼 어드레스를 생성할 수 있다. 또한, 첫 번째 동작제어유닛(401)에 포함된 어드레스/데이터 전달제어부(Address/Data a Flow Control)는, 커맨드 입력버퍼(11) 및 어드레스 입력버퍼(12)를 통해 입력되는 커맨드 및 어드레스에 응답하여 리드동작신호와 라이트동작신호 및 경로선택신호를 생성할 수 있다.
그리고, 첫 번째 데이터 동작유닛(301)은, 로우 디코더(Row Decoder)와, 컬럼 디코더(Column Decoder)와, 센스앰프(Sense Amp)와, 라이트 드라이버(Write Driver), 및 데이터 패스 선택부(Data Path Select)를 포함할 수 있다. 이때, 첫 번째 데이터 동작유닛(301)에 포함된 로우 디코더(Row Decoder)와 컬럼 디코더(Column Decoder)와, 센스앰프(Sense Amp), 및 라이트 드라이버(Write Driver)는, 첫 번째 메모리 뱅크(101)에 데이터를 라이트하거나 첫 번째 메모리 뱅크(101)로부터 데이터를 리드하기 위한 구성요소, 즉, 리드/라이트 동작부 일 수 있다. 예컨대, 첫 번째 데이터 동작유닛(301)에 포함된 리드/라이트 동작부는, 첫 번째 동작제어유닛(401)에서 입력되는 제1제어신호, 예컨대, 로우 어드레스와 컬럼 어드레스와 리드동작신호 및 라이트동작신호에 응답하여 첫 번째 메모리 뱅크(101)에 포함된 다수의 메모리 셀들 중 적어도 하나 이상의 셀을 선택한 뒤, 선택된 셀로부터 데이터를 리드하거나 선택된 셀에 데이터를 라이트할 수 있다.
또한, 첫 번째 데이터 동작유닛(301)에 포함된 데이터 패스 선택부(Data Path Select)는, 리드/라이트 동작부와 데이터 전달버퍼(13) 및 첫 번째 연산처리유닛(201) 사이에서 전달되는 데이터의 경로를 선택하기 위한 구성요소. 즉, 경로선택부일 수 있다. 예컨대, 첫 번째 데이터 동작유닛(301)에 포함된 경로선택부는, 첫 번째 동작제어유닛(401)에서 입력되는 제2제어신호, 예컨대, 경로선택신호에 응답하여 리드/라이트 동작부와 첫 번째 연산처리유닛(201) 및 데이터 전달버퍼(13) 사이에서 전달되는 데이터의 경로를 선택할 수 있다.
그리고, 첫 번째 연산처리유닛(201)은, 데이터 로딩부(211)와, 연산수행부(221)와, 선택전달부(231), 및 카운팅부(241)를 포함할 수 있다.
첫 번째 연산처리유닛(201)에 포함된 데이터 로딩부(211)는, 첫 번째 데이터 동작유닛(301)을 통해 입력된 입력데이터(IDT#1)와 내부에서 피드백(feedback)된 루프데이터(LDT#1) 중 어느 하나의 데이터(IDT#1 or LDT#1) 및 첫 번째 데이터 동작유닛(301)을 통해 입력된 가중치정보(W#1)와 연산정보(S#1)를 로딩할 수 있다.
첫 번째 연산처리유닛(201)에 포함된 연산수행부(221)는, 가중치정보(W#1) 및 연산정보(S#1)를 사용하여 데이터 로딩부(211)에서 로딩된 데이터(IDT#1 or LDT#1) 및 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)에 대해 신경망 연산을 수행하고, 수행결과로서 결과데이터(RDT#1)를 생성할 수 있다. 예컨대, 연산수행부(221)는, 데이터 로딩부(211)에서 로딩된 데이터(IDT#1 or LDT#1)에 가중치정보(W#1)의 값을 곱셈한 값과 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)의 값을 연산정보(S#1)에 대응하는 형태로 합산하여 결과데이터(RDT#1)를 생성할 수 있다.
전술한 첫 번째 연산처리유닛(201)에 포함된 연산수행부(221)에서 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)를 사용하여 신경망 연산을 수행하는 동작을 N개의 연산처리유닛(201, 202, ..., 20N) 각각의 동작으로 일반화시킬 경우, N개의 연산처리유닛(201, 202, ..., 20N) 각각은 스스로를 제외한 나머지 N-1개의 연산처리유닛에서 전달된 데이터를 사용하여 신경망 연산을 수행하는 동작이 될 수 있다. 예컨대, 두 번째 연산처리유닛(202)에 포함된 연산수행부(미도시)는, 첫 번째와 세 번째 내지 N번째 연산처리유닛(20<1, 3:N>)에서 전달된 데이터(TDT#<1, 3:N>)을 사용하여 신경망 연산을 수행할 수 있다. 마찬가지로, N번째 연산처리유닛(20N)에 포함된 연산수행부(미도시)는, 첫 번째 내지 N-1번째 연산처리유닛(20<1:N-1>)에서 전달된 데이터(TDT#<1:N-1>)을 사용하여 신경망 연산을 수행할 수 있다.
도 1 및 도 4를 함께 참조하면, N개의 연산처리유닛(201, 202, ..., 20N) 각각은 스스로를 제외한 나머지 N-1개의 연산처리유닛에서 전달된 데이터를 사용하여 신경망 연산을 수행하는 동작은, 다수의 뉴런들이 시냅스(Synapse)를 통해 다양하게 연결되는 동작에 대응할 수 있다.
그리고, 첫 번째 연산처리유닛(201)에 포함된 선택전달부(231)는, 연산수행부(221)에서 생성된 결과데이터(RDT#1)의 값이 기준값 이상일 때, 해당 결과데이터(RDT#1)를 루프데이터(LDT#1)로서 데이터 로딩부(211)에 피드백할 수 있다. 또한, 선택전달부(231)는, 연산수행부(221)에서 생성된 결과데이터(RDT#1)의 값이 기준값 이하일 때, 해당 결과데이터(RDT#1)를 무시하고 특정값으로 고정된 루프데이터(LDT#1)를 생성하여 데이터 로딩부(211)에 피드백할 수 있다. 여기서, N개의 연산처리유닛(201, 202, ..., 20N) 각각에 포함된 선택전달부(231)의 동작기준으로 사용되는 N개의 '기준값' 각각은, 신경망 연산의 목적에 따라 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)에 의해 미리 설정될 수 있으며, 신경망 연산을 수행할 때마다 사용자에 의해 변경될 수 있다.
그리고, 첫 번째 연산처리유닛(201)에 포함된 카운팅부(241)는, 선택전달부(231)에서 데이터 로딩부(211)로 루프데이터(LDT#1)가 전달되는 횟수를 카운팅하며, 카운팅 횟수에 따라 중간완료신호(MF#1) 또는 연산완료신호(CF#1)를 생성하여 연산처리에 관련된 신호(CF#1 or MF#1)로서 첫 번째 동작제어유닛(401)으로 출력할 수 있다. 예컨대, 첫 번째 연산처리유닛(201)에 포함된 카운팅부(241)는, 선택전달부(231)에서 데이터 로딩부(211)로 루프데이터(LDT#1)가 전달되는 횟수를 카운팅한 값이 예정된 값이 될 때까지는 중간완료신호(MF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력하고, 예정된 값이 되는 시점에서 연산완료신호(CF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력할 수 있다.
참고로, 전술한 설명에서는 연산처리유닛 각각이 메모리 뱅크에 일대일로 대응하도록 설정되어 메모리 뱅크의 개수와 연산처리유닛의 개수가 같은 것을 예시로 설명하였지만, 이는 설계자의 선택에 따라 다르게 구현될 수도 있다.
예컨대, 메모리 뱅크 중 일부 메모리 뱅크에는 연산처리유닛이 대응되지만, 나머지 메모리 뱅크는 연산처리유닛이 대응되지 않도록 설정되어 메모리 뱅크의 개수보다 연산처리유닛의 개수가 더 작은 것도 얼마든지 가능하다. 이와 같은 경우, 연산처리유닛에 대응하지 않는 나머지 메모리 뱅크는 노말모드에서만 동작가능 하도록 설정될 수 있다. 이때, 노말모드에서만 동작가능 하도록 설정된 메모리 뱅크에 대응하는 데이터 동작부에는, 데이터의 전달경로를 선택하기 위한 구성요소(Data Path Select)가 필요하지 않을 수 있다. 마찬가지로, 노말모드에서만 동작가능 하도록 설정된 메모리 뱅크에 대응하는 동작제어부는, 데이터의 전달경로를 선택하기 위한 제어동작을 수행할 필요가 없을 수 있다.
또 다른 예를 들면, 하나의 메모리 뱅크에 적어도 두 개 이상의 연산처리유닛이 대응될 수 있다. 이는, 하나의 메모리 뱅크에서 한 번에 리드될 수 있는 데이터의 크기, 즉, 가중치정보와 연산정보의 크기가 하나의 연산처리유닛에서 처리할 수 있는 데이터의 크기보다 큰 경우일 수 있다. 이때, 하나의 메모리 뱅크에 대응되는 적어도 두 개 이상의 연산처리유닛은, 하나의 메모리 뱅크에서 한 번에 리드될 수 있는 데이터를 적어도 두 개 이상으로 분할하여 병렬로 처리할 수 있다. 즉, 하나의 메모리 뱅크에 대응되는 적어도 두 개 이상의 연산처리유닛은, 물리적으로는 분리되지만, 그 동작은 앞서 설명한 하나의 연산처리유닛과 같이 동작할 수 있다.
도 5a 내지 도 5f는 본 발명의 실시예에 따른 메모리 장치의 연산모드 동작의 일 예를 설명하기 위해 도시한 도면이다.
도 2 내지 도 5f를 참조하면, N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)가 메모리 장치(10)로 입력되어 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 한 개씩 저장되는 것을 가정할 수 있다. 또한, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 한 개씩 저장된 N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)에 대해 연산처리부(20<1:N>)에서 M번의 '제1동작'을 루프형태로 반복수행, 즉, 한 번의 '제2동작'수행하여 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)를 생성하는 것을 가정할 수 있다.
도 2 내지 도 5a를 참조하면, 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)은, 커맨드 입력버퍼(11)를 통해 입력되는 연산입력커맨드(미도시)에 응답하여 연산모드의 입력구간에 진입할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산모드의 입력구간에서 어드레스 입력버퍼(12)를 통해 입력된 어드레스에 응답하여 N개의 메모리 뱅크(101, 102, ..., 10N)에 데이터 전달버퍼(13)를 통해 입력되는 N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)와 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)가 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
구체적으로, 첫 번째 동작제어유닛(401)은, 연산모드 중 입력구간에서 데이터 전달버퍼(13)를 통해 입력되는 첫 번째 입력데이터(IDT#1)와 첫 번째 M개의 가중치 정보(W<L1:LM>#1) 및 첫 번째 M개의 연산정보(S<L1:LM>#1)가 첫 번째 메모리 뱅크(101)에 저장되도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 연산모드 중 입력구간에서 데이터 전달버퍼(13)를 통해 입력되는 두 번째 입력데이터(IDT#2)와 두 번째 M개의 가중치 정보(W<L1:LM>#2) 및 두 번째 M개의 연산정보(S<L1:LM>#2)가 두 번째 메모리 뱅크(102)에 저장되도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 연산모드 중 입력구간에서 데이터 전달버퍼(13)를 통해 입력되는 세 번째 내지 N번째 입력데이터(IDT#3, ..., IDT#N) 각각과 세 번째 내지 N번째 M개의 가중치 정보(W<L1:LM>#3, ..., W<L1:LM>#N) 각각 및 세 번째 내지 N번째 M개의 연산정보(S<L1:LM>#3, ..., S<L1:LM>#N) 각각이 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장되도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다.
도 2 내지 도 5b를 참조하면, 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)은, 커맨드 입력버퍼(11)를 통해 입력되는 연산시작커맨드(미도시)에 응답하여 연산모드의 입력구간에서 탈출한 뒤 연산구간에 진입할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산모드의 연산구간에서 어드레스 입력버퍼(12)를 통해 입력된 어드레스에 응답하여 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)와 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)를 리드하여 연산처리부(20<1:N>)에 전달하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
구체적으로, 동작제어부(40<1:N>)는, 연산모드의 연산구간에 진입한 뒤, N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N) 중 연산처리부(20<1:N>)의 '제1동작'에 대응하도록 N개의 메모리 뱅크(101, 102, ..., 10N)에서 N개의 가중치 정보(W<Lx>#1, W<Lx>#2, ...,W<Lx>#N / x는 1 내지 M 중 어느 하나의 수임) 및 N개의 연산정보(S<Lx>#1, S<Lx>#2, ...,S<Lx>#N)를 병렬로 리드한 뒤, 리드된 정보들(W<Lx>#1, W<Lx>#2, ...,W<Lx>#N / S<Lx>#1, S<Lx>#2, ...,S<Lx>#N)이 연산처리부(20<1:N>)에 로딩되도록 데이터 동작부(30<1:N>)를 제어하는 '제3동작'을 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복할 수 있다.
또한, 동작제어부(40<1:N>)는, N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)를 연산모드의 연산구간에 진입에 따라 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에서 병렬로 리드한 뒤, 리드된 N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)가 연산처리부(20<1:N>)에 로딩되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 첫 번째 '제3동작'을 연산모드의 연산구간에 진입하는 것에 응답하여 수행할 수 있다. 또한, 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 두 번째 내지 M번째까지의 '제3동작' 각각을 연산처리부(20<1:N>)에서 중간완료신호(MF#<1:N>)가 전달되는 것에 응답하여 수행할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)에서 '제2동작'의 수행을 완료한 결과로서 연산완료신호(CF#<1:N>) 및 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)가 출력될 때, N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)를 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 한 개씩 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
좀 더 구체적으로, 첫 번째 동작제어유닛(401)은, 연산모드의 연산구간 진입에 따라 첫 번째 메모리 뱅크(101)에 저장된 첫 번째 입력데이터(IDT#1)와 첫 번째 제1 가중치 정보(W<L1>#1) 및 첫 번째 제1 연산정보(S<L1>#1)를 리드하여 첫 번째 연산처리유닛(201)에 전달하도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 연산모드의 연산구간 진입에 따라 두 번째 메모리 뱅크(102)에 저장된 두 번째 입력데이터(IDT#2)와 두 번째 제1 가중치 정보(W<L1>#2) 및 두 번째 제1 연산정보(S<L1>#2)를 리드하여 두 번째 연산처리유닛(202)에 전달하도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 연산모드의 연산구간 진입에 따라 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장된 세 번째 내지 N번째 입력데이터(IDT#3, ..., IDT#N) 각각과 세 번째 내지 N번째 제1 가중치 정보(W<L1>#3, ..., W<L1>#N) 각각 및 세 번째 내지 N번째 제1 연산정보(S<L1>#3, ..., S<L1>#N) 각각을 리드하여 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에 전달하도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다. 전술한 설명과 같이 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 첫 번째 '제3동작'을 연산모드의 연산구간에 진입하는 것에 응답하여 N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)에 대해 수행할 수 있다.
이어서, 첫 번째 동작제어유닛(401)은, 첫 번째 연산처리유닛(201)에서 중간완료신호(MF#1)가 전달되는 것에 따라 첫 번째 메모리 뱅크(101)에 저장된 첫 번째 제2 가중치 정보(W<L2>#1) 및 첫 번째 제2 연산정보(S<L2>#1)를 리드하여 첫 번째 연산처리유닛(201)에 전달하도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 두 번째 연산처리유닛(202)에서 중간완료신호(MF#2)가 전달되는 것에 따라 두 번째 메모리 뱅크(102)에 저장된 두 번째 제2 가중치 정보(W<L2>#2) 및 두 번째 제2 연산정보(S<L2>#2)를 리드하여 두 번째 연산처리유닛(202)에 전달하도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에서 중간완료신호(MF#<3:N>) 각각이 전달되는 것에 따라 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장된 세 번째 내지 N번째 제2 가중치 정보(W<L2>#3, ..., W<L2>#N) 각각 및 세 번째 내지 N번째 제2 연산정보(S<L2>#3, ..., S<L2>#N) 각각을 리드하여 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에 전달하도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다. 전술한 설명과 같이 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 두 번째 '제3동작'을 연산처리부(20<1:N>)에서 중간완료신호(MF#<1:N>)가 전달되는 것에 응답하여 수행할 수 있다. 이때, 세 번째 내지 M번째 '제3동작'은, 두 번째 '제3동작'과 동일한 방식으로 수행될 수 있다.
이어서, 첫 번째 동작제어유닛(401)은, 첫 번째 연산처리유닛(201)에서 연산완료신호(CF#1) 및 첫 번째 연산완료 데이터(CDT#1)가 출력될 때, 첫 번째 연산완료 데이터(CDT#1)를 첫 번째 메모리 뱅크(101)에 저장하도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 두 번째 연산처리유닛(202)에서 연산완료신호(CF#2) 및 두 번째 연산완료 데이터(CDT#2)가 출력될 때, 두 번째 연산완료 데이터(CDT#2)를 두 번째 메모리 뱅크(102)에 저장하도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에서 연산완료신호(CF#<3:N>) 각각 및 세 번째 내지 N번째 연산완료 데이터(CDT#3, ..., CDT#N)가 출력될 때, 세 번째 내지 N번째 연산완료 데이터(CDT#3, ..., CDT#N) 각각을 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장하도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다. 전술한 설명과 같이 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)에서 '제2동작'의 수행을 완료한 결과로서 연산완료신호(CF#<1:N>) 및 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)가 출력될 때, N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)를 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 한 개씩 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
도 2 내지 도 5e를 참조하면, 도 5b에서 설명된 연산모드의 연산구간에서 연산처리부(20<1:N>)의 동작을 좀 더 상세하게 알 수 있다.
도 5c를 참조하면, 연산처리부(20<1:N>)에 포함된 첫 번째 연산처리유닛(201)의 동작이 상세하게 도시된 것을 알 수 있으며, 도면에 도시되지 않았지만 두 번째 내지 N번째 연산처리유닛(202, ..., 20N)도 첫 번째 연산처리유닛(201)과 유사하게 동작하는 것을 알 수 있다.
구체적으로, 첫 번째 연산처리유닛(201)에 포함된 데이터 로딩부(211)는, 연산모드의 연산구간 진입에 따라 첫 번째 데이터 동작유닛(301)로부터 입력된 첫 번째 입력데이터(IDT#1)와 첫 번째 제1 가중치 정보(W<L1>#1) 및 첫 번째 제1 연산정보(S<L1>#1)를 로딩할 수 있다.
이어서, 첫 번째 연산처리유닛(201)에 포함된 연산수행부(221)는, 첫 번째 제1 가중치 정보(W<L1>#1) 및 첫 번째 제1 연산정보(S<L1>#1)를 사용하여 첫 번째 입력데이터(IDT#1)에 대해 신경망 연산을 수행하고, 수행결과로서 첫 번째 제1 결과데이터(RDT<L1>#1)를 생성할 수 있다. 예컨대, 첫 번째 연산수행부(221)는, 첫 번째 입력데이터(IDT#1)와 첫 번째 제1 가중치 정보(W<L1>#1)를 곱셈한 값과 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)의 값을 첫 번째 제1 연산정보(S<L1>#1)에 대응하는 형태로 합산하여 첫 번째 제1 결과데이터(RDT<L1>#1)를 생성할 수 있다. 이때, 연산처리부(20<1:N>)가 N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)에 대해 첫 번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행하는 경우이기 때문에, 첫 번째 연산처리유닛(201)에서 신경망 연산에 사용하기 위해 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)는, 두 번째 내지 N번째 입력데이터(IDT#N)일 수 있다.
이어서, 첫 번째 연산처리유닛(201)에 포함된 선택전달부(231)는, 첫 번째 연산수행부(221)에서 생성된 첫 번째 제1 결과데이터(RDT<L1>#1)의 값이 기준값 이상일 때, 첫 번째 제1 결과데이터(RDT<L1>#1)를 첫 번째 제1 루프데이터(LDT<L1>#1)로서 첫 번째 데이터 로딩부(211)에 피드백할 수 있다. 또한, 첫 번째 선택전달부(231)는, 첫 번째 연산수행부(221)에서 생성된 첫 번째 제1 결과데이터(RDT<L1>#1)의 값이 기준값 이하일 때, 첫 번째 제1 결과데이터(RDT<L1>#1)의 값을 무시하고 특정값으로 고정된 첫 번째 제1 루프데이터(LDT<L1>#1)를 생성하여 첫 번째 데이터 로딩부(211)에 피드백할 수 있다.
그리고, 첫 번째 연산처리유닛(201)에 포함된 카운팅부(241)는, 첫 번째 선택전달부(231)에서 첫 번째 데이터 로딩부(211)로 루프데이터(LDT<L1>#1)가 전달되는 횟수를 카운팅하며, 카운팅 횟수가 M보다 작은 경우 중간완료신호(MF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력하고, 카운팅 횟수가 M이 되는 경우 연산완료신호(CF#1)를 첫 번째 동작제어유닛(401)으로 출력할 수 있다. 이때, 연산처리부(20<1:N>)가 첫 번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행하는 경우이기 때문에, 카운팅 값은 '1'이고 M보다 작은 상태일 수 있다. 그에 따라, 첫 번째 카운팅부(241)는, 중간완료신호(MF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력할 수 있다.
전술한 설명과 같이 첫 번째 연산처리유닛(201)의 동작을 두 번째 내지 N번째 연산처리유닛(202, ..., 20N)의 동작으로 적용할 수 있다. 따라서, 연산처리부(20<1:N>)는, 연산모드의 연산구간의 진입에 따라 로딩된 N개의 제1입력데이터(IDT#1, IDT#2, ..., IDT#N)에 대해 N개의 제1 가중치 정보(W<L1>#<1:N>) 및 N개의 제1 연산정보(S<L1>#<1:N>)를 사용하여 N개의 신경망 연산을 병렬로 수행한 뒤, 그 결과로서 N개의 데이터(LDT<L1>#<1:N>)를 생성할 수 있다. 즉, 연산처리부(20<1:N>)는, 연산모드의 연산구간의 진입에 따라 로딩된 N개의 제1입력데이터(IDT#1, IDT#2, ..., IDT#N)에 대해 첫 번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행한 뒤, 그 결과로서 N개의 데이터(LDT<L1>#<1:N>)를 생성할 수 있다.
도 5d를 참조하면, 연산처리부(20<1:N>)에 포함된 첫 번째 연산처리유닛(201)의 동작이 상세하게 도시된 것을 알 수 있으며, 도면에 도시되지 않았지만 두 번째 내지 N번째 연산처리유닛(202, ..., 20N)도 첫 번째 연산처리유닛(201)과 유사하게 동작하는 것을 알 수 있다.
구체적으로, 첫 번째 연산처리유닛(201)에 포함된 데이터 로딩부(211)는, 첫 번째 데이터 동작유닛(301)로부터 입력된 첫 번째 제2 가중치 정보(W<L2>#1) 및 첫 번째 제2 연산정보(S<L2>#1)를 로딩할 수 있다.
이어서, 첫 번째 연산처리유닛(201)에 포함된 연산수행부(221)는, 첫 번째 제2 가중치 정보(W<L2>#1) 및 첫 번째 제2 연산정보(S<L2>#1)를 사용하여 첫 번째 제1 루프데이터(LDT<L1>#1)에 대해 신경망 연산을 수행하고, 수행결과로서 첫 번째 제2 결과데이터(RDT<L2>#1)를 생성할 수 있다. 예컨대, 첫 번째 연산수행부(221)는, 첫 번째 제1 루프데이터(LDT<L1>#1)와 첫 번째 제2 가중치 정보(W<L2>#1)를 곱셈한 값과 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)의 값을 첫 번째 제2 연산정보(S<L2>#1)에 대응하는 형태로 합산하여 첫 번째 제2 결과데이터(RDT<L2>#1)를 생성할 수 있다. 이때, 연산처리부(20<1:N>)가 첫 번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행한 후, 그 결과로서 생성된 N개의 데이터(LDT<L1>#<1:N>)에 대해 두 번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행하는 경우이기 때문에, 첫 번째 연산처리유닛(201)에서 신경망 연산에 사용하기 위해 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)는, 두 번째 내지 N번째 제1 루프데이터(LDT<L1>#<2:N>)일 수 있다.
이어서, 첫 번째 연산처리유닛(201)에 포함된 선택전달부(231)는, 첫 번째 연산수행부(221)에서 생성된 첫 번째 제2 결과데이터(RDT<L2>#1)의 값이 기준값 이상일 때, 첫 번째 제2 결과데이터(RDT<L2>#1)를 첫 번째 제2 루프데이터(LDT<L2>#1)로서 첫 번째 데이터 로딩부(211)에 피드백할 수 있다. 또한, 첫 번째 선택전달부(231)는, 첫 번째 연산수행부(221)에서 생성된 첫 번째 제2 결과데이터(RDT<L2>#1)의 값이 기준값 이하일 때, 첫 번째 제2 결과데이터(RDT<L2>#1)의 값을 무시하고 특정값으로 고정된 첫 번째 제2 루프데이터(LDT<L2>#1)를 생성하여 첫 번째 데이터 로딩부(211)에 피드백할 수 있다.
그리고, 첫 번째 연산처리유닛(201)에 포함된 카운팅부(241)는, 첫 번째 선택전달부(231)에서 첫 번째 데이터 로딩부(211)로 루프데이터(LDT<L2>#1)가 전달되는 횟수를 카운팅하며, 카운팅 횟수가 M보다 작은 경우 중간완료신호(MF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력하고, 카운팅 횟수가 M이 되는 경우 연산완료신호(CF#1)를 첫 번째 동작제어유닛(401)으로 출력할 수 있다. 이때, 연산처리부(20<1:N>)가 두 번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행하는 경우이기 때문에, 카운팅 값은 '2'이고 M보다 작은 상태일 수 있다. 그에 따라, 첫 번째 카운팅부(241)는, 중간완료신호(MF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력할 수 있다.
전술한 설명과 같이 첫 번째 연산처리유닛(201)의 동작을 두 번째 내지 N번째 연산처리유닛(202, ..., 20N)의 동작으로 적용할 수 있다. 따라서, 연산처리부(20<1:N>)는, 앞선 '제1동작'의 수행결과로서 생성된 N개의 데이터(LDT<L1>#1)에 대해 N개의 제2 가중치 정보(W<L2>#<1:N>) 및 N개의 제2 연산정보(S<L2>#<1:N>)를 사용하여 N개의 신경망 연산을 병렬로 수행한 뒤, 그 결과로서 N개의 데이터(LDT<L2>#<1:N>)를 생성할 수 있다. 즉, 연산처리부(20<1:N>)는, 첫 번째 '제1동작'의 수행결과로서 생성된 N개의 데이터(LDT<L1>#1)에 대해 두 번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행한 뒤, 그 결과로서 N개의 데이터(LDT<L1>#<1:N>)를 생성할 수 있다.
도 5d에서 설명된 것과 같은 방식으로, 연산처리부(20<1:N>)는, 세 번째부터 M번째까지의 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행한 뒤, 그 결과로서 N개의 데이터(LDT<L1>#<1:N>)를 생성할 수 있다. 정리하면, 연산처리부(20<1:N>)는, 첫 번째부터 M번째까지의 '제1동작' 각각을 수행할 때, 앞선 '제1동작'의 수행결과로서 생성된 N개의 데이터를 뒤선 '제1동작'에서 로딩하여 N개의 신경망 연산을 병렬로 수행하는데 사용할 수 있다.
도 5e를 참조하면, 연산처리부(20<1:N>)에 포함된 첫 번째 연산처리유닛(201)의 동작이 상세하게 도시된 것을 알 수 있으며, 도면에 도시되지 않았지만 두 번째 내지 N번째 연산처리유닛(202, ..., 20N)도 첫 번째 연산처리유닛(201)과 유사하게 동작하는 것을 알 수 있다.
구체적으로, 첫 번째 연산처리유닛(201)에 포함된 데이터 로딩부(211)는, 첫 번째 데이터 동작유닛(301)로부터 입력된 첫 번째 제M 가중치 정보(W<LM>#1) 및 첫 번째 제M 연산정보(S<LM>#1)를 로딩할 수 있다.
이어서, 첫 번째 연산처리유닛(201)에 포함된 연산수행부(221)는, 첫 번째 제M 가중치 정보(W<LM>#1) 및 첫 번째 제2 연산정보(S<LM>#1)를 사용하여 첫 번째 제M-1 루프데이터(LDT<LM-1>#1)에 대해 신경망 연산을 수행하고, 수행결과로서 첫 번째 제M 결과데이터(RDT<LM>#1)를 생성할 수 있다. 예컨대, 첫 번째 연산수행부(221)는, 첫 번째 제M-1 루프데이터(LDT<LM-1>#1)와 첫 번째 제M 가중치 정보(W<LM>#1)를 곱셈한 값과 첫 번째 내지 N-1번째 연산처리유닛(20<1:N-1>)에서 전달된 데이터(TDT#<1:N-1>)의 값을 첫 번째 제M 연산정보(S<LM>#1)에 대응하는 형태로 합산하여 첫 번째 제M 결과데이터(RDT<LM>#1)를 생성할 수 있다. 이때, 연산처리부(20<1:N>)가 M-1번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행한 후, 그 결과로서 생성된 N개의 데이터(LDT<LM-1>#<1:N>)에 대해 M번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행하는 경우이기 때문에, 첫 번째 연산처리유닛(201)에서 신경망 연산에 사용하기 위해 두 번째 내지 N번째 연산처리유닛(20<2:N>)에서 전달된 데이터(TDT#<2:N>)는, 두 번째 내지 N번째 제M-1 루프데이터(LDT<LM-1>#<2:N>)일 수 있다.
이어서, 첫 번째 연산처리유닛(201)에 포함된 선택전달부(231)는, 첫 번째 연산수행부(221)에서 생성된 첫 번째 제M 결과데이터(RDT<LM>#1)의 값이 기준값 이상일 때, 첫 번째 제M 결과데이터(RDT<LM>#1)를 첫 번째 제M 루프데이터(LDT<LM>#1)로서 첫 번째 데이터 로딩부(211)에 피드백할 수 있다. 또한, 첫 번째 선택전달부(231)는, 첫 번째 연산수행부(221)에서 생성된 첫 번째 제M 결과데이터(RDT<LM>#1)의 값이 기준값 이하일 때, 첫 번째 제M 결과데이터(RDT<LM>#1)의 값을 무시하고 특정값으로 고정된 첫 번째 제M 루프데이터(LDT<LM>#1)를 생성하여 첫 번째 데이터 로딩부(211)에 피드백할 수 있다.
그리고, 첫 번째 연산처리유닛(201)에 포함된 카운팅부(241)는, 첫 번째 선택전달부(231)에서 첫 번째 데이터 로딩부(211)로 루프데이터(LDT<LM>#1)가 전달되는 횟수를 카운팅하며, 카운팅 횟수가 M보다 작은 경우 중간완료신호(MF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력하고, 카운팅 횟수가 M이 되는 경우 연산완료신호(CF#1)를 첫 번째 동작제어유닛(401)으로 출력할 수 있다. 이때, 연산처리부(20<1:N>)가 M번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행하는 경우이기 때문에, 카운팅 값은 'M'이 될 수 있다. 그에 따라, 첫 번째 카운팅부(241)는, 연산완료신호(CF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력할 수 있다.
이렇게, 첫 번째 카운팅부(241)에서 연산완료신호(CF#1)를 생성하여 첫 번째 동작제어유닛(401)으로 출력하였기 때문에, 첫 번째 동작제어유닛(401)은, 첫 번째 데이터 로딩부(211)로 피드백된 데이터(LDT<LM>#1)가 첫 번째 연산완료 데이터(CDT#1)인 것을 알 수 있다. 따라서, 첫 번째 동작제어유닛(401)은, 첫 번째 데이터 로딩부(211)로 피드백된 데이터(LDT<LM>#1)를 첫 번째 연산완료 데이터(CDT#1)로서 전달받을 수 있다.
전술한 설명과 같이 첫 번째 연산처리유닛(201)의 동작을 두 번째 내지 N번째 연산처리유닛(202, ..., 20N)의 동작으로 적용할 수 있다. 따라서, 연산처리부(20<1:N>)는, M-1번째 '제1동작'의 수행결과로서 생성된 N개의 데이터(LDT<LM-1>#1)에 대해 N개의 제M 가중치 정보(W<LM>#<1:N>) 및 N개의 제M 연산정보(S<LM>#<1:N>)를 사용하여 N개의 신경망 연산을 병렬로 수행한 뒤, 그 결과로서 N개의 데이터(LDT<LM>#<1:N>)를 생성할 수 있다. 또한, 연산처리부(20<1:N>)는, 연산완료신호(CF#1)를 생성하여 동작제어부(40<1:N>)로 출력함으로써, 연산처리부(20<1:N>)에서 생성된 N개의 데이터(LDT<LM>#<1:N>)를 동작제어부(40<1:N>)가 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)로서 가져가도록 할 수 있다. 즉, 연산처리부(20<1:N>)는, M-1번째 '제1동작'의 수행결과로서 생성된 N개의 데이터(LDT<LM-1>#1)에 대해 M번째 '제1동작'에 포함된 N개의 신경망 연산을 병렬로 수행한 뒤, 그 결과로서 생성된 N개의 데이터(LDT<L1>#<1:N>)를 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)로서 출력할 수 있다.
정리하면, 연산처리부(20<1:N>)는, N개의 입력데이터(IDT#1, IDT#2, ..., IDT#N)에 대해 M번의 '제1동작'을 루프형태로 반복수행, 즉, 한 번의 '제2동작'을 수행한 뒤, 그 결과로서 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)를 출력할 수 있다.
따라서, 동작제어부(40<1:N>)는, 어드레스 입력버퍼(12)를 통해 입력된 어드레스 및 연산처리부(20<1:N>)로부터 연산완료신호(CF#<1:N>)가 전달되는 것에 응답하여 연산처리부(20<1:N>)로부터 전달되는 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)를 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
도 2 내지 도 5f를 참조하면, 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)은, 커맨드 입력버퍼(11)를 통해 입력되는 연산완료커맨드(미도시)에 응답하여 연산모드의 연산구간에서 탈출한 뒤 출력구간에 진입할 수 있다.
구체적으로, 동작제어부(40<1:N>)는, 연산모드의 출력구간에서 어드레스 입력버퍼(12)를 통해 입력된 어드레스에 응답하여 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 N개의 연산완료 데이터(CDT#1, CDT#2, ..., CDT#N)를 리드하여 데이터 전달버퍼(13)를 통해 출력하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
도 6a 내지 도 6c는 본 발명의 실시예에 따른 메모리 장치의 연산모드 동작의 다른 예를 설명하기 위해 도시한 도면이다.
도 2 내지 도 4 및 도 6a 내지 도 6c를 참조하면, K*N개의 입력데이터(IDT<1:K>#1, IDT<1:K>#2, ..., IDT<1:K>#N)가 메모리 장치(10)로 입력되어 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 K개씩 저장되는 것을 가정할 수 있다. 또한, N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 K개씩 저장된 N개의 입력데이터(IDT<1:K>#1, IDT<1:K>#2, ..., IDT<1:K>#N)를 N개씩 K번(IDT<1>#1, IDT<1>#2, ..., IDT<1>#N, ..., IDT<2>#1, IDT<2>#2, ..., IDT<2>#N, ..., IDT<1>#1, IDT<K>#2, ..., IDT<K>#N) 반복적으로 병렬리드하되, 입력데이터가 N개 리드될 때마다 연산처리부(20<1:N>)에서 M번의 '제1동작'을 루프형태로 반복수행, 즉, 한 번의 '제2동작'수행하여 N개의 연산완료 데이터를 생성하며, 연산처리부(20<1:N>)에서'제2동작'을 연속으로 K번 수행하는 '제4동작'을 수행하여 K*N개의 연산완료 데이터(CDT<1:K>#1, CDT<1:K>#2, ..., CDT<1:K>#N)를 생성하는 것을 가정할 수 있다.
도 2 내지 도 4 및 도 6a를 참조하면, 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)은, 커맨드 입력버퍼(11)를 통해 입력되는 연산입력커맨드(미도시)에 응답하여 연산모드의 입력구간에 진입할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산모드의 입력구간에서 어드레스 입력버퍼(12)를 통해 입력된 어드레스에 응답하여 N개의 메모리 뱅크(101, 102, ..., 10N)에 데이터 전달버퍼(13)를 통해 입력되는 K*N개의 입력데이터(IDT<1:K>#1, IDT<1:K>#2, ..., IDT<1:K>#N)와 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)가 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
구체적으로, 첫 번째 동작제어유닛(401)은, 연산모드 중 입력구간에서 데이터 전달버퍼(13)를 통해 입력되는 첫 번째 K개의 입력데이터(IDT<1:K>#1)와 첫 번째 M개의 가중치 정보(W<L1:LM>#1) 및 첫 번째 M개의 연산정보(S<L1:LM>#1)가 첫 번째 메모리 뱅크(101)에 저장되도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 연산모드 중 입력구간에서 데이터 전달버퍼(13)를 통해 입력되는 두 번째 K개의 입력데이터(IDT<1:K>#2)와 두 번째 M개의 가중치 정보(W<L1:LM>#2) 및 두 번째 M개의 연산정보(S<L1:LM>#2)가 두 번째 메모리 뱅크(102)에 저장되도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 연산모드 중 입력구간에서 데이터 전달버퍼(13)를 통해 입력되는 세 번째 내지 N번째 K개의 입력데이터(IDT<1:K>#3, ..., IDT<1:K>#N) 각각과 세 번째 내지 N번째 M개의 가중치 정보(W<L1:LM>#3, ..., W<L1:LM>#N) 각각 및 세 번째 내지 N번째 M개의 연산정보(S<L1:LM>#3, ..., S<L1:LM>#N) 각각이 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장되도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다.
도 2 내지 도 4 및 도 6b를 참조하면, 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)은, 커맨드 입력버퍼(11)를 통해 입력되는 연산시작커맨드(미도시)에 응답하여 연산모드의 입력구간에서 탈출한 뒤 연산구간에 진입할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산모드의 연산구간에서 어드레스 입력버퍼(12)를 통해 입력된 어드레스에 응답하여 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 K*N개의 입력데이터(IDT<1:K>#1, IDT<1:K>#2, ..., IDT<1:K>#N)와 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)를 리드하여 연산처리부(20<1:N>)에 전달하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
구체적으로, 동작제어부(40<1:N>)는, 연산모드의 연산구간에 진입한 뒤, N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N) 중 연산처리부(20<1:N>)의 '제1동작'에 대응하도록 N개의 메모리 뱅크(101, 102, ..., 10N)에서 N개의 가중치 정보(W<Lx>#1, W<Lx>#2, ...,W<Lx>#N / x는 1 내지 M 중 어느 하나의 수임) 및 N개의 연산정보(S<Lx>#1, S<Lx>#2, ...,S<Lx>#N)를 병렬로 리드한 뒤, 리드된 정보들(W<Lx>#1, W<Lx>#2, ...,W<Lx>#N / S<Lx>#1, S<Lx>#2, ...,S<Lx>#N)이 연산처리부(20<1:N>)에 로딩되도록 데이터 동작부(30<1:N>)를 제어하는 '제3동작'을 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산모드의 연산구간에 진입한 뒤, N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 K*N개의 입력데이터(IDT<1:K>#1, IDT<1:K>#2, ..., IDT<1:K>#N) 중 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에서 병렬로 리드한 N개의 입력데이터(IDT<x>#1, IDT<x>#2, ..., IDT<x>#N)가 연산처리부(20<1:N>)에 로딩되도록 데이터 동작부(30<1:N>)를 제어하는 '제5동작'을 연산처리부(20<1:N>)의 '제4동작'에 대응하도록 K번 반복할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 첫 번째 '제3동작'을 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에서 N개의 입력데이터(IDT<x>#1, IDT<x>#2, ..., IDT<x>#N)를 병렬로 리드하는 것에 응답하여 수행할 수 있다. 또한, 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 두 번째 내지 M번째까지의 '제3동작' 각각을 연산처리부(20<1:N>)에서 중간완료신호(MF#<1:N>)가 전달되는 것에 응답하여 수행할 수 있다.
또한, 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)에서 '제2동작'의 수행을 완료한 결과로서 연산완료신호(CF#<1:N>) 및 N개의 연산완료 데이터(CDT<x>#1, CDT<x>#2, ..., CDT<x>#N)가 출력될 때, N개의 연산완료 데이터(CDT<x>#1, CDT<x>#2, ..., CDT<x>#N)를 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 한 개씩 저장되도록 데이터 동작부(30<1:N>)를 제어하는 '제6동작'을 '제4동작'에 대응하도록 K번 반복하여 수행할 수 있다. 이를 통해, 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)에서 '제2동작'이 K번 반복적으로 수행을 완료한 결과, 즉, 한 번의 '제4동작'의 수행을 완료한 결과인 K*N개의 연산완료 데이터(CDT<1:K>#1, CDT<1:K>#2, ..., CDT<1:K>#N)가 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 K개씩 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
좀 더 구체적으로, 첫 번째 동작제어유닛(401)은, 연산모드의 연산구간에 진입한 후, 첫 번째 메모리 뱅크(101)에 저장된 첫 번째 제1 입력데이터(IDT<1>#1)와 첫 번째 제1 가중치 정보(W<L1>#1) 및 첫 번째 제1 연산정보(S<L1>#1)를 리드하여 첫 번째 연산처리유닛(201)에 전달하도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 연산모드의 연산구간 진입에 따라 두 번째 메모리 뱅크(102)에 저장된 두 번째 제1 입력데이터(IDT<1>#2)와 두 번째 제1 가중치 정보(W<L1>#2) 및 두 번째 제1 연산정보(S<L1>#2)를 리드하여 두 번째 연산처리유닛(202)에 전달하도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 연산모드의 연산구간 진입에 따라 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장된 세 번째 내지 N번째 제1 입력데이터(IDT<1>#3, ..., IDT<1>#N) 각각과 세 번째 내지 N번째 제1 가중치 정보(W<L1>#3, ..., W<L1>#N) 각각 및 세 번째 내지 N번째 제1 연산정보(S<L1>#3, ..., S<L1>#N) 각각을 리드하여 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에 전달하도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다. 전술한 설명과 같이 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 첫 번째 '제3동작'을 연산모드의 연산구간에 진입하는 것에 응답하여 N개의 제1 입력데이터(IDT<1>#1, IDT<1>#2, ..., IDT<1>#N)에 대해 수행할 수 있다.
이어서, 첫 번째 동작제어유닛(401)은, 첫 번째 연산처리유닛(201)에서 중간완료신호(MF#1)가 전달되는 것에 따라 첫 번째 메모리 뱅크(101)에 저장된 첫 번째 제2 가중치 정보(W<L2>#1) 및 첫 번째 제2 연산정보(S<L2>#1)를 리드하여 첫 번째 연산처리유닛(201)에 전달하도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 두 번째 연산처리유닛(202)에서 중간완료신호(MF#2)가 전달되는 것에 따라 두 번째 메모리 뱅크(102)에 저장된 두 번째 제2 가중치 정보(W<L2>#2) 및 두 번째 제2 연산정보(S<L2>#2)를 리드하여 두 번째 연산처리유닛(202)에 전달하도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에서 중간완료신호(MF#<3:N>) 각각이 전달되는 것에 따라 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장된 세 번째 내지 N번째 제2 가중치 정보(W<L2>#3, ..., W<L2>#N) 각각 및 세 번째 내지 N번째 제2 연산정보(S<L2>#3, ..., S<L2>#N) 각각을 리드하여 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에 전달하도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다. 전술한 설명과 같이 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)의 '제2동작'에 대응하도록 M번 반복되는 '제3동작' 중 두 번째 '제3동작'을 연산처리부(20<1:N>)에서 중간완료신호(MF#<1:N>)가 전달되는 것에 응답하여 수행할 수 있다. 이때, 세 번째 내지 M번째 '제3동작'은, 두 번째 '제3동작'과 동일한 방식으로 수행될 수 있다.
이어서, 첫 번째 동작제어유닛(401)은, 첫 번째 연산처리유닛(201)에서 연산완료신호(CF#1) 및 첫 번째 제1 연산완료 데이터(CDT<1>#1)가 출력될 때, 첫 번째 제1 연산완료 데이터(CDT<1>#1)를 첫 번째 메모리 뱅크(101)에 저장하도록 첫 번째 데이터 동작유닛(301)을 제어할 수 있다. 마찬가지로, 두 번째 동작제어유닛(402)은, 두 번째 연산처리유닛(202)에서 연산완료신호(CF#2) 및 두 번째 제1 연산완료 데이터(CDT<1>#2)가 출력될 때, 두 번째 제1 연산완료 데이터(CDT<1>#2)를 두 번째 메모리 뱅크(102)에 저장하도록 두 번째 데이터 동작유닛(302)을 제어할 수 있다. 이와 같은 방식으로, 세 번째 내지 N번째 동작제어유닛(403, ..., 40N) 각각은, 세 번째 내지 N번째 연산처리유닛(203, ..., 20N)에서 연산완료신호(CF#<3:N>) 각각 및 세 번째 내지 N번째 제1 연산완료 데이터(CDT<1>#3, ..., CDT<1>#N)가 출력될 때, 세 번째 내지 N번째 제1 연산완료 데이터(CDT<1>#3, ..., CDT<1>#N) 각각을 세 번째 내지 N번째 메모리 뱅크(103, ..., 10N) 각각에 저장하도록 세 번째 내지 N번째 데이터 동작유닛(303, ..., 30N) 각각을 제어할 수 있다. 전술한 설명과 같이 동작제어부(40<1:N>)는, 연산처리부(20<1:N>)에서 '제2동작'의 수행을 완료한 결과로서 연산완료신호(CF#<1:N>) 및 N개의 제1 연산완료 데이터(CDT<1>#1, CDT<1>#2, ..., CDT<1>#N)가 출력될 때, N개의 제1 연산완료 데이터(CDT<1>#1, CDT<1>#2, ..., CDT<1>#N)를 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에 한 개씩 저장되도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
전술한 연산처리부(20<1:N>)의 '제2동작'은, 동작제어부(40<1:N>)에서 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 K*N개의 입력데이터(IDT<1:K>#1, IDT<1:K>#2, ..., IDT<1:K>#N) 중 N개의 메모리 뱅크(101, 102, ..., 10N) 각각에서 N개의 입력데이터(IDT<x>#1, IDT<x>#2, ..., IDT<x>#N)를 병렬로 리드하는 '제5동작'을 수행할 때마다 반복되어 K번 수행될 수 있다. 즉, 연산처리부(20<1:N>)는, '제2동작'을 K번 반복 수행하여 한 번의 '제4동작'을 수행할 수 있다. 이때, 연산처리부(20<1:N>)는, K번 반복되는 '제2동작' 각각에서 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)를 중복으로 사용할 수 있다. 예컨대, 연산처리부(20<1:N>)는, 첫 번째 '제2동작'에서 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)를 사용하여 신경망 연산을 수행한 뒤, 이어지는 두 번째 '제2동작'에서도 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)를 중복으로 사용할 수 있다. 이와 같은 방식으로, 연산처리부(20<1:N>)는, K번째 '제2동작'까지 모두 N*M개의 가중치 정보(W<L1:LM>#1, W<L1:LM>#2, ...,W<L1:LM>#N) 및 N*M개의 연산정보(S<L1:LM>#1, S<L1:LM>#2, ...,S<L1:LM>#N)를 중복으로 사용하여 신경망 연산을 수행할 수 있다.
도 2 내지 도 4 및 도 6c를 참조하면, 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)은, 커맨드 입력버퍼(11)를 통해 입력되는 연산완료커맨드(미도시)에 응답하여 연산모드의 연산구간에서 탈출한 뒤 출력구간에 진입할 수 있다.
구체적으로, 동작제어부(40<1:N>)는, 연산모드의 출력구간에서 어드레스 입력버퍼(12)를 통해 입력된 어드레스에 응답하여 N개의 메모리 뱅크(101, 102, ..., 10N)에 저장된 K*N개의 연산완료 데이터(CDT<1:K>#1, CDT<1:K>#2, ..., CDT<1:K>#N)를 N개씩 병렬리드하는 '제7동작'을 K번 반복(CDT<1>#1, CDT<1>#2, ..., CDT<1>#N, ..., CDT<2>#1, CDT<2>#2, ..., CDT<2>#N, ..., CDT<1>#1, CDT<K>#2, ..., CDT<K>#N)하고, '제7동작'에 따라 리드된 N개의 연산완료 데이터(CDT<x>#1, CDT<x>#2, ..., CDT<x>#N)를 데이터 전달버퍼(13)를 통해 출력하도록 데이터 동작부(30<1:N>)를 제어하는 '제8동작'을 K번 반복(CDT<1>#1, CDT<1>#2, ..., CDT<1>#N, ..., CDT<2>#1, CDT<2>#2, ..., CDT<2>#N, ..., CDT<1>#1, CDT<K>#2, ..., CDT<K>#N)할 수 있다.
도 7은 본 발명의 실시예에 다른 메모리 장치의 노말모드 동작을 설명하기 위해 도시한 도면이다.
도 7을 참조하면, 동작제어부(40<1:N>)에 포함된 메모리 레지스터 셋(MRS)은, 커맨드 입력버퍼(11)를 통해 입력되는 노말시작커맨드(미도시)에 응답하여 연산모드에서 탈출한 뒤 노말모드에 진입할 수 있다.
구체적으로, 동작제어부(40<1:N>)는, 노말모드에서 커맨드 입력버퍼(11)를 통해 라이트 커맨드가 입력되고, 어드레스 입력버퍼(12)를 통해 입력된 라이트 어드레스가 입력되며, 데이터 전달버퍼(13)를 통해 라이트 데이터(NDT#<1:N>)가 입력되는 경우, N개의 메모리 뱅크(101, 102, ..., 10N) 중 라이트 어드레스에 대응하는 메모리 셀에 라이트 데이터(NDT#<1:N>)를 저장하는 라이트 동작을 수행하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
또한, 동작제어부(40<1:N>)는, 노말모드에서 커맨드 입력버퍼(11)를 통해 리드 커맨드가 입력되고, 어드레스 입력버퍼(12)를 통해 입력된 리드 어드레스가 입력되는 경우, N개의 메모리 뱅크(101, 102, ..., 10N) 중 리드 어드레스에 대응하는 메모리 셀에 저장된 데이터(NDT#<1:N>)를 리드하여 데이터 전달버퍼(13)를 통해 출력하도록 데이터 동작부(30<1:N>)를 제어할 수 있다.
한편, 동작제어부(40<1:N>)는, 노말모드에서 연산처리부(20<1:N>)에 어떠한 데이터 입/출력도 수행되지 않도록 데이터 동작부(30<1:N>)를 제어할 수 있다. 이를 통해, 연산처리부(20<1:N>)는, 노말모드에서 비활성화되어 아무런 동작도 수행하지 않을 수 있다.
이상에서 살펴본 바와 같이 본 발명의 실시예를 적용하면, 메모리 장치 내부에 신경망 처리 회로를 포함시킴으로써, 연산모드에 진입한 후에는 호스트 또는 메모리 컨트롤러의 개입 없이도 메모리 장치 스스로가 신경망 연산을 수행하도록 할 수 있다.
또한, 메모리 장치 내부에 포함된 메모리 뱅크(다수의 메모리 셀을 포함함)와 신경망 처리 회로가 데이터 입/출력 버퍼를 공유하기 때문에, 신경망 처리 회로의 활성화 여부를 제어하는 동작을 통해 메모리 장치의 사용용도를 선택할 수 있다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.

Claims (20)

  1. N개의 셀 어레이 영역;
    연산모드 중 연산구간동안 N개의 셀 어레이 영역으로부터 N개의 신경망 처리정보를 병렬로 로딩(loading)하여 N개의 신경망 연산을 병렬로 수행하는 제1동작을 루프 형태로 M번 반복한 제2동작을 입력데이터에 대해 수행하여 연산완료 데이터를 생성하는 연산처리부;
    상기 연산모드 중 입력구간에서 데이터 전달버퍼를 통해 입력되는 상기 입력데이터 및 M*N개의 신경망 처리정보를 N개의 셀 어레이 영역에 저장하며, 상기 연산모드 중 출력구간에서 상기 연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하는 데이터 동작부; 및
    입력버퍼를 통해 입력되는 커맨드 및 어드레스에 응답하여 상기 입력구간과 상기 연산구간 및 상기 출력구간 각각의 진입/탈출과 상기 연산처리부 및 상기 데이터 동작부를 제어하기 위한 동작제어부
    를 포함하며, N과 M은 각각 2 이상의 자연수인 메모리 장치.
  2. 제1항에 있어서,
    상기 데이터 동작부는, 노말모드에서 라이트 동작시 상기 데이터 전달버퍼를 통해 입력된 데이터를 N개의 셀 어레이 영역에 저장하고, 리드 동작시 N개의 셀 어레이 영역의 데이터를 리드하여 상기 데이터 전달버퍼를 통해 출력하며,
    상기 동작제어부는, 상기 입력버퍼를 통해 입력되는 커맨드 및 어드레스에 응답하여 상기 노말모드의 진입/탈출과 상기 데이터 동작부를 제어하는 메모리 장치.
  3. 제1항에 있어서,
    M*N개의 신경망 처리정보는, M*N개의 가중치 정보 및 M*N개의 연산정보를 포함하며,
    상기 동작제어부는, 상기 입력구간에서 N개의 셀 어레이 영역 각각에 M개의 가중치 정보 및 M개의 연산정보가 저장되도록 상기 데이터 동작부를 제어하는 메모리 장치.
  4. 제3항에 있어서,
    상기 동작제어부는,
    상기 입력버퍼를 통해 입력되는 연산입력커맨드에 응답하여 상기 입력구간에 진입한 뒤, 상기 입력버퍼를 통해 입력된 어드레스에 응답하여 N개의 셀 어레이 영역 각각에 상기 입력데이터와 M개의 가중치 정보 및 M개의 연산정보가 저장되도록 상기 데이터 동작부를 제어하는 메모리 장치.
  5. 제4항에 있어서,
    상기 동작제어부는,
    상기 입력버퍼를 통해 입력되는 연산시작커맨드에 응답하여 상기 입력구간에서 탈출한 뒤 상기 연산구간에 진입하며, 상기 입력버퍼를 통해 입력된 어드레스에 응답하여 상기 제1 및 제2동작을 제어하고, 상기 연산처리부에서 전달된 연산완료신호에 응답하여 상기 연산완료 데이터를 N개의 셀 어레이 영역에 저장하도록 상기 데이터 동작부를 제어하는 메모리 장치.
  6. 제5항에 있어서,
    상기 동작제어부는,
    상기 입력버퍼를 통해 입력되는 연산완료커맨드에 응답하여 상기 연산구간에서 탈출한 뒤 상기 출력구간에 진입하며, 상기 입력버퍼를 통해 입력된 어드레스에 응답하여 N개의 셀 어레이 영역에서 상기 연산완료 데이터를 리드하고, 리드된 상기 연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하도록 상기 데이터 동작부를 제어하는 메모리 장치.
  7. 제6항에 있어서,
    상기 동작제어부는,
    상기 연산구간에 진입한 뒤, N개의 셀 어레이 영역에 저장된 M*N개의 가중치 정보 및 M*N개의 연산정보 중 상기 제1동작에 대응하도록 N개의 셀 어레이 영역에서 N개의 가중치 정보 및 N개의 연산정보를 병렬로 리드한 뒤, 리드된 정보들을 상기 연산처리부에 로딩되도록 상기 데이터 동작부를 제어하는 제3동작을 상기 제2동작에 대응하도록 M번 반복하는 메모리 장치.
  8. 제7항에 있어서,
    상기 동작제어부는,
    상기 연간구간의 진입에 따라 첫 번째 상기 제3동작을 수행하고, 두 번째부터 M번째까지의 상기 제3동작 각각은 상기 연산처리부에서 중간완료신호가 전달된 것에 응답하여 수행하는 메모리 장치.
  9. 제8항에 있어서,
    상기 입력데이터는 N개의 제1입력데이터를 포함하고, 상기 연산완료 데이터는 N개의 제1연산완료 데이터를 포함하며,
    상기 동작제어부는,
    상기 입력구간에 진입한 뒤, N개의 셀 어레이 영역 각각에 한 개씩의 제1입력데이터가 저장되도록 상기 데이터 동작부를 제어하는 메모리 장치.
  10. 제9항에 있어서,
    상기 동작제어부는,
    상기 연산구간에 진입에 따라 N개의 셀 어레이 영역에서 병렬로 리드한 N개의 제1입력데이터가 상기 연산처리부에 로딩되도록 상기 데이터 동작부를 제어하며, 상기 연산처리부에서 상기 연산완료신호 및 N개의 제1연산완료 데이터가 출력될 때 N개의 셀 어레이 영역 각각에 한 개씩의 제1연산완료 데이터가 저장되도록 상기 데이터 동작부를 제어하는 메모리 장치.
  11. 제10항에 있어서,
    상기 동작제어부는,
    상기 출력구간에 진입에 따라 N개의 셀 어레이 영역에서 N개의 제1연산완료 데이터를 병렬로 리드하고, 리드된 N개의 제1연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하도록 상기 데이터 동작부를 제어하는 메모리 장치.
  12. 제10항에 있어서,
    상기 연산처리부는,
    상기 연산구간의 진입에 따라 로딩한 N개의 제1입력데이터에 대해 첫 번째 상기 제1동작에 포함된 N개의 신경망 연산을 병렬로 수행하여 N개의 데이터를 생성하고,
    두 번째부터 M번째까지의 상기 제1동작 각각은 앞선 동작의 수행결과로서 생성된 N개의 데이터를 뒤선 동작에서 로딩하여 N개의 신경망 연산을 병렬로 수행하며,
    M번째 상기 제1동작의 수행결과로서 생성된 N개의 데이터를 상기 제2동작의 수행결과인 N개의 제1연산완료 데이터로서 상기 데이터 동작부로 출력하는 메모리 장치.
  13. 제12항에 있어서,
    상기 연산처리부는,
    상기 제1동작의 수행완료횟수를 카운팅하며,
    카운팅 값이 M-1이 될 때 까지는, 카운팅 값이 1씩 증가할 때마다 상기 중간완료신호를 생성하여 상기 동작제어부로 출력하고,
    카운팅 값이 M이 될 때, 상기 연산완료신호를 생성하여 상기 동작제어부로 출력하는 메모리 장치.
  14. 제8항에 있어서,
    상기 입력데이터는 K*N개의 제2입력데이터를 포함하고, 상기 연산완료 데이터는 K*N개의 제2연산완료 데이터를 포함하며,
    상기 동작제어부는, 상기 입력구간에 진입한 뒤, N개의 셀 어레이 영역 각각에 K개씩의 제2입력데이터가 저장되도록 상기 데이터 동작부를 제어하고,
    상기 연산처리부는, K*N개의 제2입력데이터 중 N개에 대해 한 번의 상기 제2동작을 수행하여 K*N개의 제2연산완료 데이터 중 N개를 생성할 수 있고, 상기 연산구간동안 상기 제2동작을 K번의 연속으로 수행하는 제4동작을 K*N개의 제2입력데이터에 대해 수행하여 K*N개의 제2연산완료 데이터를 생성하며, K는 2이상의 자연수인 메모리 장치.
  15. 제14항에 있어서,
    상기 동작제어부는,
    상기 연산구간에 진입한 뒤, 상기 제2동작에 대응하도록 N개의 셀 어레이 영역에서 병렬로 리드한 N개의 제2입력데이터가 상기 연산처리부에 로딩되도록 상기 데이터 동작부를 제어하는 제5동작을 상기 제4동작에 대응하도록 K번 반복하며,
    상기 연산처리부에서 상기 제2동작에 대응하여 상기 연산완료신호 및 K*N개의 제2연산완료 데이터 중 N개가 출력될 때 N개의 셀 어레이 영역 각각에 한 개씩의 제2연산완료 데이터가 저장되도록 상기 데이터 동작부를 제어하는 제6동작을 상기 제4동작에 대응하도록 K번 반복하는 메모리 장치.
  16. 제15항에 있어서,
    상기 동작제어부는,
    상기 출력구간에 진입에 따라 N개의 셀 어레이 영역에서 N개의 제2연산완료 데이터를 병렬로 리드하는 제7동작을 K번 반복하고, 상기 제7동작에 따라 리드된 N개의 제2연산완료 데이터를 상기 데이터 전달버퍼를 통해 출력하도록 상기 데이터 동작부를 제어하는 제8동작을 K번 반복하는 메모리 장치.
  17. 제14항에 있어서,
    상기 연산처리부는,
    상기 연산구간의 진입한 뒤, K*N개의 제2입력데이터 중 로딩한 N개에 대해 첫 번째 상기 제1동작에 포함된 N개의 신경망 연산을 병렬로 수행하여 N개의 데이터를 생성하고,
    두 번째부터 M번째까지의 상기 제1동작 각각은 앞선 동작의 수행결과로서 생성된 N개의 데이터를 뒤선 동작에서 로딩하여 N개의 신경망 연산을 병렬로 수행하며,
    M번째 상기 제1동작의 수행결과로서 생성된 N개의 데이터를 상기 제2동작의 수행결과인 N개의 제2연산완료 데이터로서 상기 데이터 동작부로 출력하는 메모리 장치.
  18. 제17항에 있어서,
    상기 연산처리부는,
    상기 제1동작의 수행완료횟수를 카운팅하며,
    카운팅 값이 M-1이 될 때 까지는, 카운팅 값이 1씩 증가할 때마다 상기 중간완료신호를 생성하여 상기 동작제어부로 출력하고,
    카운팅 값이 M이 될 때, 상기 연산완료신호를 생성하여 상기 동작제어부로 출력한 뒤, 카운팅 값을 초기화하는 메모리 장치.
  19. 제8항에 있어서,
    상기 연산처리부는, N개의 셀 어레이 영역 각각에 대응하는 N개의 연산처리유닛을 포함하며,
    N개의 연산처리유닛 각각은,
    상기 데이터 동작부를 통해 입력된 데이터와 내부에서 피드백(feedback)된 루프데이터 중 어느 하나의 데이터 및 상기 데이터 동작부를 통해 입력된 가중치정보와 연산정보를 로딩하기 위한 데이터 로딩부;
    가중치정보 및 연산정보를 사용하여 상기 데이터 로딩부에서 로딩된 데이터 및 스스로를 제외한 나머지 N-1개의 연산처리유닛 각각에서 전달된 데이터에 대해 신경망 연산을 수행하고, 수행결과로서 결과데이터를 생성하는 연산수행부;
    상기 결과데이터의 값이 기준값, 이상일 때 상기 결과데이터를 상기 루프데이터로서 상기 데이터 로딩부에 피드백하고, 이하일 때 특정값으로 고정된 상기 루프데이터를 생성하여 상기 데이터 로딩부에 피드백하는 선택전달부; 및
    상기 선택전달부에서 상기 데이터 로딩부로 상기 루프데이터가 전달되는 횟수를 카운팅하며, 카운팅 값에 따라 상기 중간완료신호 또는 상기 연산완료신호를 생성하여 상기 동작제어부로 출력하는 카운팅부를 포함하는 메모리 장치.
  20. 제1항에 있어서,
    상기 데이터 동작부는, N개의 셀 어레이 영역 각각에 대응하는 N개의 데이터 전달유닛을 포함하며,
    N개의 데이터 전달유닛 각각은,
    상기 동작제어부로부터 입력되는 제1제어신호에 응답하여 셀 어레이 영역에 데이터를 라이트하거나 셀 어레이 영역으로부터 데이터를 리드하기 위한 리드/라이트 동작부; 및
    상기 동작제어부로부터 입력되는 제2제어신호에 응답하여 상기 리드/라이트 동작부와 상기 데이터 전달버퍼 및 상기 연산처리부 사이에서 전달되는 데이터의 경로를 선택하기 위한 경로선택부를 포함하는 메모리 장치.
KR1020190147555A 2019-11-18 2019-11-18 신경망 처리 회로를 포함하는 메모리 장치 KR20210060024A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190147555A KR20210060024A (ko) 2019-11-18 2019-11-18 신경망 처리 회로를 포함하는 메모리 장치
DE102020205623.4A DE102020205623A1 (de) 2019-11-18 2020-05-05 Speichervorrichtung mit neuronaler netzwerk-verarbeitungsschaltung
US16/868,181 US11501149B2 (en) 2019-11-18 2020-05-06 Memory device including neural network processing circuit
JP2020119606A JP2021082246A (ja) 2019-11-18 2020-07-13 ニューラルネットワーク処理回路を含むメモリ装置
CN202010671608.2A CN112819134B (zh) 2019-11-18 2020-07-14 包括神经网络处理电路的存储器装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190147555A KR20210060024A (ko) 2019-11-18 2019-11-18 신경망 처리 회로를 포함하는 메모리 장치

Publications (1)

Publication Number Publication Date
KR20210060024A true KR20210060024A (ko) 2021-05-26

Family

ID=75683895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190147555A KR20210060024A (ko) 2019-11-18 2019-11-18 신경망 처리 회로를 포함하는 메모리 장치

Country Status (5)

Country Link
US (1) US11501149B2 (ko)
JP (1) JP2021082246A (ko)
KR (1) KR20210060024A (ko)
CN (1) CN112819134B (ko)
DE (1) DE102020205623A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372585B2 (en) * 2020-05-05 2022-06-28 Micron Technology, Inc. Asynchronous process topology in a memory device
TWI773106B (zh) * 2021-01-28 2022-08-01 華邦電子股份有限公司 具有運算功能的記憶體裝置及其操作方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014235A (en) * 1987-12-15 1991-05-07 Steven G. Morton Convolution memory
JP3260357B2 (ja) * 1990-01-24 2002-02-25 株式会社日立製作所 情報処理装置
JPH06195322A (ja) * 1992-10-29 1994-07-15 Hitachi Ltd 汎用型ニューロコンピュータとして用いられる情報処理装置
US9747546B2 (en) * 2015-05-21 2017-08-29 Google Inc. Neural network processor
CN105007012B (zh) * 2015-07-16 2017-12-15 湖北三江航天万峰科技发展有限公司 一种车载转台控制系统及方法
KR101803409B1 (ko) * 2015-08-24 2017-12-28 (주)뉴로컴즈 다중 계층 신경망 컴퓨팅 장치 및 방법
US10664751B2 (en) 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
US10395165B2 (en) 2016-12-01 2019-08-27 Via Alliance Semiconductor Co., Ltd Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory
US10387298B2 (en) * 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
KR102534917B1 (ko) 2017-08-16 2023-05-19 에스케이하이닉스 주식회사 신경망 처리 회로를 구비하는 메모리 장치 및 이를 포함하는 메모리 시스템
CN107578098B (zh) * 2017-09-01 2020-10-30 中国科学院计算技术研究所 基于脉动阵列的神经网络处理器
KR102312178B1 (ko) * 2017-10-30 2021-10-14 에스케이하이닉스 주식회사 트윈 셀 모드를 가지는 메모리 장치 및 그의 리프레쉬 방법
CN107977704B (zh) * 2017-11-10 2020-07-31 中国科学院计算技术研究所 权重数据存储方法和基于该方法的神经网络处理器
US20190180183A1 (en) 2017-12-12 2019-06-13 Amazon Technologies, Inc. On-chip computational network
KR102408858B1 (ko) * 2017-12-19 2022-06-14 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 동작 방법
KR102530072B1 (ko) * 2018-01-10 2023-05-08 삼성전자주식회사 이미지 센서, 촬상 장치 및 이미지 센서 칩 패키지의 제조 방법
US11340936B2 (en) * 2018-05-04 2022-05-24 Apple Inc. Compiling and scheduling transactions in neural network processor
US10970205B2 (en) * 2018-05-31 2021-04-06 Micron Technology, Inc. Logical-to-physical data structures for tracking logical block addresses indicative of a collision

Also Published As

Publication number Publication date
DE102020205623A1 (de) 2021-05-20
CN112819134A (zh) 2021-05-18
JP2021082246A (ja) 2021-05-27
CN112819134B (zh) 2024-04-05
US20210150318A1 (en) 2021-05-20
US11501149B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
KR102458885B1 (ko) 인메모리 행렬 곱셈 및 뉴럴 네트워크에서 그것의 사용
KR102608248B1 (ko) 신경망 하드웨어 가속기 아키텍처 및 그 동작 방법
JP6477924B2 (ja) メモリスタ神経形態学的回路及びメモリスタ神経形態学的回路をトレーニングするための方法
US10740671B2 (en) Convolutional neural networks using resistive processing unit array
JP6858870B2 (ja) 不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路
US10360971B1 (en) Artificial neural network functionality within dynamic random-access memory
JP6956191B2 (ja) 不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路
US10460237B2 (en) Neuron-centric local learning rate for artificial neural networks to increase performance, learning rate margin, and reduce power consumption
CN110892480A (zh) 采用nvm矩阵电路以执行矩阵计算的非易失性(nv)存储器(nvm)矩阵电路
CN110729011B (zh) 用于类神经网路的存储器内运算装置
US11620504B2 (en) Neuromorphic device based on memory
WO1991018350A1 (en) A learning machine synapse processor system apparatus
CN112825153A (zh) 神经网络系统中数据处理的方法、神经网络系统
KR102099242B1 (ko) 재구성 가능한 뉴로모픽 시스템 및 이의 신경망 구성 방법
KR20210060024A (ko) 신경망 처리 회로를 포함하는 메모리 장치
WO2019049686A1 (ja) 半導体記憶素子を用いたニューラルネットワーク演算回路及び動作方法
US20190122102A1 (en) Memory configuration for implementing a neural network
US11727253B2 (en) Neural network system including gate circuit for controlling memristor array circuit
KR20200024419A (ko) 3차원 크로스바 메모리 구조를 이용한 뉴로 모픽 소자
Lu et al. NVMLearn: a simulation platform for non-volatile-memory-based deep learning hardware
US20220101142A1 (en) Neural network accelerators resilient to conductance drift
KR20230005309A (ko) 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑
US20210064963A1 (en) Spiking neural unit
US20220027712A1 (en) Neural mosaic logic unit
Mayoraz Benchmark of some learning algorithms for single layer and Hopfield networks

Legal Events

Date Code Title Description
A201 Request for examination