KR102420362B1 - 뉴로모픽 연산 장치 - Google Patents

뉴로모픽 연산 장치 Download PDF

Info

Publication number
KR102420362B1
KR102420362B1 KR1020170088008A KR20170088008A KR102420362B1 KR 102420362 B1 KR102420362 B1 KR 102420362B1 KR 1020170088008 A KR1020170088008 A KR 1020170088008A KR 20170088008 A KR20170088008 A KR 20170088008A KR 102420362 B1 KR102420362 B1 KR 102420362B1
Authority
KR
South Korea
Prior art keywords
data
counting
signal
pulse width
synaptic
Prior art date
Application number
KR1020170088008A
Other languages
English (en)
Other versions
KR20190007143A (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 KR1020170088008A priority Critical patent/KR102420362B1/ko
Publication of KR20190007143A publication Critical patent/KR20190007143A/ko
Application granted granted Critical
Publication of KR102420362B1 publication Critical patent/KR102420362B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs

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)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Amplifiers (AREA)

Abstract

본 발명은 뉴로모픽 연산 장치에 관한 것이다. 본 발명의 실시예에 따른 뉴로모픽 연산 장치는 펄스폭 변조기, 시냅스 어레이, 발진기, 카운터, 및 보상기를 포함한다. 펄스폭 변조기는 입력 데이터 값에 근거하여 펄스폭 변조 신호를 생성한다. 시냅스 어레이는 펄스폭 변조 신호 및 가중치의 곱셈 연산에 근거하여 시냅스 연산 신호를 생성한다. 발진기는 시냅스 연산 신호의 크기에 의존하는 출력 주파수를 갖는 발진 신호를 생성한다. 카운터는 발진 신호에 포함된 펄스의 개수를 카운팅하여 카운팅 데이터를 생성한다. 보상기는 선형적으로 증가하는 값을 갖는 기준 데이터가 저장된 메모리를 포함한다. 보상기는 기준 데이터와 카운팅 데이터를 비교하여 카운팅 데이터 값을 보상한다. 본 발명에 따른 뉴로모픽 연산 장치는 저전력으로 작은 면적으로 구현되고, 선형성을 확보할 수 있다.

Description

뉴로모픽 연산 장치{NEUROMORPHIC ARITHMETIC DEVICE}
본 발명은 뉴로모픽 연산 장치에 관한 것으로, 좀 더 구체적으로 아날로그 기반의 시냅스 어레이로 구현된 뉴로모픽 연산 장치에 관한 것이다.
뇌는 수천억 개의 신경 세포, 즉 뉴런을 포함한다. 뉴런은 수천 개의 다른 뉴런과 신호를 주고 받는 시냅스를 통하여 정보를 학습하고, 기억할 수 있다. 뉴로모픽 연산 장치는 이러한 뉴런 및 시냅스를 모방하여 정보를 처리하는 장치이다. 뉴로모픽 연산 장치는 생물학적 뉴런의 구성 요소와 동일하게, 축색 돌기(axon), 수상 돌기(dendrite), 및 세포의 몸체(soma)에 해당하는 회로로 구성될 수 있다. 특히, 뉴로모픽 연산 장치는 뉴런과 뉴런 사이를 연결하는 시냅스 회로에서 연산을 수행할 수 있다.
중앙 처리 장치와 메모리가 분리되어 상호간에 데이터를 주고 받는 폰노이만 구조를 기반의 연산 장치와 비교하여, 뉴로모픽 연산 장치는 입력된 정보를 병렬적으로 처리할 수 있는 장점을 갖는다. 뉴로모픽 연산 장치는 정보 처리 중에 새롭게 발생한 다른 정보를 처리할 수 있다. 뉴로모픽 연산 장치는 불특정한 환경에 스스로 적응할 수 있는 지능화된 시스템을 구현하는 데 효과적일 수 있다. 따라서, 음성 인식, 위험 인지, 보안 및 감시, 자율 주행, 및 실시간 고속 신호 처리 등을 효과적으로 수행하기 위한 뉴로모픽 연산 장치에 대한 연구가 진행되고 있다.
뉴로모픽 연산 장치의 정확성 또는 안정성은 뉴런 회로들 사이의 연결 구조 및 연결 강도(synaptic weight)에 의하여 결정될 수 있다. 이 때, 공정 상의 이유 등으로 인하여 뉴런 회로들 사이의 물리적 또는 전기적 불일치가 발생할 수 있다. 특히, 아날로그 기반으로 구현된 뉴로모픽 연산 장치의 동작 중에 회로의 내부 요인 등에 근거하여 오동작이 유발될 수 있다. 특히, 복수의 뉴런 그룹 중 특정 뉴런을 선택하는 승자 독식(WTA: winner take all) 방식에서 이러한 불일치는 치명적인 오류를 초래할 수 있다. 따라서, 뉴로모픽 연산 장치의 오류를 개선하기 위한 방안이 요구되고 있다.
본 발명은 아날로그 방식으로 구현된 시냅스 어레이의 선형성을 개선하면서, 보다 작은 면적으로 구현 가능한 뉴로모픽 연산 장치를 제공할 수 있다.
본 발명의 실시예에 따른 뉴로모픽 연산 장치는 펄스폭 변조기, 시냅스 어레이, 발진기, 카운터, 및 보상기를 포함한다. 펄스폭 변조기는 입력 데이터 값에 근거하여 펄스폭 변조 신호를 생성할 수 있다. 시냅스 어레이는 각각이 펄스폭 변조 신호 및 가중치의 곱셈 연산을 수행하여 전류 신호를 출력하는 복수의 시냅스 회로들을 포함한다. 시냅스 어레이는 전류 신호에 근거하여 시냅스 연산 신호를 생성한다. 발진기는 발진 신호를 생성한다. 발진 신호는 시냅스 연산 신호의 크기에 의존하는 출력 주파수를 갖는다.
카운터는 발진 신호에 포함된 펄스의 개수를 카운팅하여 카운팅 데이터를 생성한다. 보상기는 메모리를 포함한다. 메모리는 복수의 시냅스 회로들 중 전류 신호를 출력하는 시냅스 회로의 개수의 증가에 따라 선형적으로 증가하는 값을 갖는 기준 데이터를 저장한다. 보상기는 기준 데이터와 카운팅 데이터를 비교하여 카운팅 데이터 값을 보상할 수 있다.
본 발명의 실시예에 따른 뉴로모픽 연산 장치는 아날로그 방식으로 구현된 시냅스 어레이의 오류를 디지털 방식으로 보정하여 효과적으로 선형성을 확보할 수 있고, 저전력으로 보다 작은 면적을 갖도록 구현될 수 있다.
도 1은 본 발명의 실시예에 따른 뉴로모픽 연산 장치의 블록도이다.
도 2는 본 발명의 실시예에 따른 펄스폭 변조기의 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 발진기의 회로도이다.
도 4는 본 발명의 실시예에 따른 보상기의 블록도이다.
도 5는 보상 전 카운팅 데이터와 보상 후 출력 데이터의 변화를 나타내기 위한 그래프이다.
도 6은 본 발명의 실시예에 따른 뉴로모픽 연산 장치의 구동 방법의 순서도이다.
도 7은 본 발명의 실시예에 따른 출력 데이터를 생성하는 방법의 순서도이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재된다.
도 1은 본 발명의 실시예에 따른 뉴로모픽 연산 장치의 블록도이다. 도 1을 참조하면, 뉴로모픽 연산 장치(100)는 직렬-병렬 변환기(110), 펄스폭 변조기(120), 시냅스 어레이(130), 발진기(140), 카운터(150), 보상기(160), 누적기(170), 결정기(180), 및 병렬-직렬 변환기(190)를 포함한다. 직렬-병렬 변환기(110), 펄스폭 변조기(120), 카운터(150), 보상기(160), 누적기(170), 결정기(180), 및 병렬-직렬 변환기(190)는 디지털 신호를 처리하는 구성 요소이다. 시냅스 어레이(130) 및 발진기(140)는 아날로그 신호를 처리하는 구성 요소이다.
직렬-병렬 변환기(110)는 입력 데이터 및 가중치 데이터를 수신할 수 있다. 직렬-병렬 변환기(110)는 입력 데이터 및 가중치 데이터를 수신하기 위한 하나의 수신 단자를 포함할 수 있다. 직렬-병렬 변환기(110)는 시냅스 어레이(130)의 각 시냅스 회로에 신호를 제공하기 위한 복수의 출력 단자를 포함할 수 있다. 입력 데이터 및 가중치 데이터는 복수의 출력 단자에 제공된다. 직렬-병렬 변환기(110)는 입력 데이터 또는 가중치 데이터를 분할하여 복수의 출력 단자에 제공할 수 있다. 입력 데이터는 이미지 데이터일 수 있다.
펄스폭 변조기(120)는 직렬-병렬 변환기(110)로부터 입력 데이터 및 가중치 데이터를 수신할 수 있다. 펄스폭 변조기(120)는 직렬-병렬 변환기(110)의 복수의 출력 단자로부터 입력 데이터 및 가중치 데이터를 수신할 수 있다. 펄스폭 변조기(120)는 복수의 펄스폭 변조기를 포함할 수 있다. 예를 들어, 복수의 펄스폭 변조기 각각은 직렬-병렬 변환기(110)의 대응되는 출력 단자와 연결될 수 있다. 복수의 펄스폭 변조기 각각은 시냅스 어레이(130)의 대응되는 시냅스 회로와 연결될 수 있다.
펄스폭 변조기(120)는 입력 데이터 값에 근거하여 펄스폭 변조 신호를 생성한다. 입력 데이터는 바이너리(binary) 데이터를 포함한다. 펄스폭 변조기(120)는 바이너리 데이터 값의 크기에 근거하여 펄스폭의 크기를 결정한다. 예를 들어, 입력 데이터 값의 크기가 255인 경우, 펄스폭의 크기가 크게 변조될 수 있다. 이 경우, 펄스폭 변조 신호가 제공되는 시간이 길 수 있다. 또한, 입력 데이터 값의 크기가 255보다 작은 경우, 펄스폭의 크기는 입력 데이터 값의 크기가 255인 경우의 펄스폭의 크기보다 작을 수 있다. 즉, 펄스폭 변조 신호가 제공되는 시간이 짧을 수 있다. 구체적인 내용은 도 2에서 후술된다.
펄스폭 변조기(120)는 펄스폭 변조 신호를 시냅스 어레이(130)에 제공한다. 펄스폭 변조기(120)는 디지털 신호인 입력 데이터를 아날로그 신호인 펄스폭 변조 신호로 변환한다. 펄스폭 변조 신호는 입력 데이터의 값의 크기에 비례하는 펄스폭을 가질 수 있다. 펄스폭 변조기(120)는 가중치 데이터를 아날로그 신호로 변환할 수 있다. 펄스폭 변조기(120)는 가중치 데이터의 값의 크기에 비례하는 펄스폭을 가질 수 있다.
시냅스 어레이(130)는 펄스폭 변조기(120)로부터 펄스폭 변조 신호 및 가중치 신호를 수신할 수 있다. 시냅스 어레이(130)는 복수의 행을 갖는 시냅스 회로들(131~13m)을 포함할 수 있다. 시냅스 어레이(130)는 행과 열 방향을 따라 매트릭스 형태로 배치될 수 있다. 예시적으로, 도 1에서의 시냅스 어레이(130)는 m개의 행을 갖고, n개의 열을 갖는 시냅스 회로들을 포함한다. 제1 행의 시냅스 회로들(131)은 행 방으로 배치되는 n개의 시냅스 회로들(131_1~131_n)을 포함할 수 있다. 제2 행의 시냅스 회로들(132)은 행 방향으로 배치되는 n개의 시냅스 회로들(132_1~132_n)을 포함할 수 있다.
제1 행의 시냅스 회로들(131)은 펄스폭 변조기(120)로부터 제1 펄스폭 변조 신호 및 제1 가중치 신호를 수신할 수 있다. 예를 들어, 제1 행의 시냅스 회로들(131)에 포함된 시냅스 회로들(131_1~131_n) 각각은 제1 펄스폭 변조 신호를 수신할 수 있다. 제1 행의 시냅스 회로들(131)에 포함된 시냅스 회로들(131_1~131_n)은 제1 가중치 신호 중 하나의 비트에 대응하는 신호를 수신할 수 있다. 예를 들어, 제1 가중치 신호는 n비트의 가중치 데이터에 근거하여 생성될 수 있다. 제1 행의 시냅스 회로들(131)에 포함된 시냅스 회로들(131_1~131_n)은 해당 자리수에 대응되는 제1 가중치 신호를 수신할 수 있다.
제1 행의 시냅스 회로들(131)에 포함된 시냅스 회로들(131_1~131_n) 각각은 제1 펄스폭 변조 신호 및 제1 가중치 신호 중 해당 자리수(비트)에 대응되는 가중치의 곱셈 연산을 수행할 수 있다. 시냅스 회로들(131_1~131_n) 각각은 자리수 별로 부분 적(partial product)을 수행할 수 있다. 예를 들어, 시냅스 회로들(131_1~131_n) 각각은 제1 펄스폭 변조 신호 및 가중치 신호를 수신하는 AND 게이트를 포함할 수 있다. 제1 펄스폭 변조 신호 및 가중치 신호가 모두 하이 레벨인 경우, 전류 신호가 출력될 수 있다.
제2 행의 시냅스 회로들(132)은 펄스폭 변조기(120)로부터 제2 펄스폭 변조 신호 및 제2 가중치 신호를 수신할 수 있다. 제n 행의 시냅스 회로들(13n)은 펄스폭 변조기(120)로부터 제n 펄스폭 변조 신호 및 제n 가중치 신호를 수신할 수 있다. 제2 행 내지 제n 행의 시냅스 회로들(132~13n)은 제1 행의 시냅스 회로들(131)과 동일한 방식으로 수신된 펄스폭 변조 신호와 가중치 신호의 곱셈 연산을 수행할 수 있다. 다만, 상술한 시냅스 어레이(130)의 연산은 예시적인 것으로 이해될 것이다. 시냅스 어레이(130)는 다양한 방식으로 펄스폭 변조 신호와 가중치 신호의 곱셈 연산을 수행할 수 있다.
시냅스 어레이(130)는 제1 내지 제n 커패시터들(Ca1~Can)을 더 포함할 수 있다. 제1 커패시터(Ca1)는 시냅스 어레이(130)에 포함된 시냅스 회로들 중 제1 열의 시냅스 회로들(131_1~13m_1)과 연결된다. 제2 커패시터(Ca2)는 시냅스 어레이(130)에 포함된 시냅스 회로들 중 제2 열의 시냅스 회로들(131_2~13m_2)과 연결된다. 시냅스 어레이(130)에 포함된 시냅스 회로들 중 동일한 열에 배치된 시냅스 회로들로부터 출력된 전류 신호들은 합산된다. 합산된 전류 신호들인 시냅스 연산 신호는 해당 열에 배치된 시냅스 회로들과 연결된 커패시터에 제공된다.
예를 들어, 제1 열의 시냅스 회로들(131_1~13m_1)로부터 출력된 전류 신호들은 제1 시냅스 연산 신호로 합산된다. 제1 시냅스 연산 신호는 제1 커패시터(Ca1)에 제공된다. 제1 커패시터(Ca1)는 제1 시냅스 연산 신호의 크기가 클수록, 제1 커패시터(Ca1)의 충전 속도가 증가할 수 있다. 이상적인 경우, 일정한 크기의 전류 값을 갖는 제1 시냅스 연산 신호가 제1 커패시터(Ca1)에 제공될 때, 제1 커패시터(Ca1)의 전압 레벨은 선형적으로 증가한다. 제2 내지 제n 열의 시냅스 회로들(131_2~13m_2~131_n~13m_n)은 마찬가지로 제2 내지 제n 시냅스 연산 신호들을 생성할 수 있다. 제2 내지 제n 커패시터들(Ca2~Can)은 제2 내지 제n 시냅스 연산 신호들에 의하여 충전될 수 있다.
발진기(140)는 제1 내지 제n 발진기들(141~14n)을 포함할 수 있다. 제1 내지 제n 발진기들(141~14n) 각각은 제1 내지 제n 커패시터들(Ca1~Can) 중 대응되는 커패시터와 연결될 수 있다. 발진기(140)는 시냅스 연산 신호에 근거하여 발진 신호를 생성한다. 제1 발진기(141)는 제1 발진 신호를 생성할 수 있고, 제2 발진기(142)는 제2 발진 신호를 생성할 수 있다. 제1 발진 신호는 제1 시냅스 연산 신호의 크기에 의존하는 제1 출력 주파수를 가질 수 있다. 제2 발진 신호는 제2 시냅스 연산 신호의 크기에 의존하는 제2 출력 주파수를 가질 수 있다. 시냅스 연산 신호의 크기가 클수록, 발진 신호의 출력 주파수는 증가한다. 구체적인 내용은 도 3에서 후술된다.
카운터(150)는 제1 내지 제n 카운터들(151~15n)을 포함할 수 있다. 제1 내지 제n 카운터들(151~15n) 각각은 제1 내지 제n 발진기들(141~14n) 중 대응되는 발진기와 연결될 수 있다. 카운터(150)는 발진 신호에 포함된 펄스의 개수를 카운팅한다. 카운터(150)는 카운팅한 결과를 덧셈하여 카운팅 데이터를 생성할 수 있다. 카운팅 데이터는 디지털 신호일 수 있다. 제1 카운터(151)는 제1 발진 신호에 포함된 펄스의 개수를 카운팅하여 제1 카운팅 데이터를 생성할 수 있다. 제2 카운터(152)는 제2 발진 신호에 포함된 펄스의 개수를 카운팅하여 제2 카운팅 데이터를 생성할 수 있다.
발진 신호의 출력 주파수가 클수록 발진 신호에 포함된 펄스의 개수는 증가한다. 발진 신호에 포함된 펄스의 개수가 많을수록, 카운팅 데이터의 값은 증가한다. 즉, 시냅스 연산 신호의 크기가 클수록, 카운팅 데이터의 값은 증가한다. 카운터(150)는 아날로그 신호인 발진 신호를 디지털 신호인 카운팅 데이터로 변환할 수 있다. 이상적인 경우, 시냅스 연산 신호의 크기의 증가에 따라, 발진 신호의 펄스의 개수가 선형적으로 증가한다. 이 때, 카운팅 데이터의 값은 시냅스 연산 신호의 크기의 증가에 따라 선형적으로 증가할 것이다.
보상기(160)는 제1 내지 제n 보상기들(161~16n)을 포함할 수 있다. 제1 내지 제n 보상기들(161~16n) 각각은 제1 내지 제n 카운터들(151~15n) 중 대응되는 카운터와 연결될 수 있다. 보상기(160)는 카운팅 데이터와 기준 데이터를 비교한다. 카운팅 데이터의 값과 기준 데이터의 값이 다른 경우, 보상기(160)는 카운팅 데이터의 값을 보상한다. 예를 들어, 제1 보상기(161)는 제1 카운터(151)로부터 제1 카운팅 데이터를 수신할 수 있다. 제1 카운팅 데이터의 값과 제1 기준 데이터의 값이 다른 경우, 제1 보상기(161)는 제1 기준 데이터의 값을 갖도록 제1 카운팅 데이터를 보상할 수 있다.
기준 데이터는 보상기(160)에 미리 저장될 수 있다. 보상기(160)는 기준 데이터를 미리 저장하기 위한 메모리를 포함한다. 카운팅 데이터의 값에 따라 기준 데이터의 값은 다를 수 있다. 즉, 보상기(160)는 카운팅 데이터의 값에 따라 비교할 기준 데이터를 복수개 저장할 수 있다. 이러한 복수의 기준 데이터는 시냅스 어레이(130) 또는 발진기(140)의 구동 전압 레벨의 증가에 따라 선형적으로 증가하는 값을 가질 수 있다. 보상기(160)는 비 이상적인 원인에 의하여 비선형적인 값을 갖는 카운팅 데이터를 보정하여 선형적인 출력 데이터를 생성할 수 있다. 예를 들어, 비 이상적인 원인은 시냅스 어레이(130) 또는 발진기(140)와 같은 아날로그 회로에 의하여 유발될 수 있다.
카운팅 데이터에 대응되는 기준 데이터가 없는 경우, 보상기(160)는 기준 데이터가 존재하는 카운팅 데이터를 이용하여 출력 데이터를 생성할 수 있다. 예를 들어, 보상기(160)는 카운팅 데이터의 값과 가장 가까운 두 개의 이웃하는 카운팅 데이터를 추출할 수 있다. 두 개의 이웃하는 카운팅 데이터에 대응되는 두 개의 기준 데이터의 중간 값이 출력 데이터의 값으로 생성될 수 있다. 이 경우, 보상기(160)에 저장되는 기준 데이터의 양이 감소할 수 있다. 즉, 보상기(160)를 구현하기 위한 면적이 감소할 수 있다. 또한, 디지털 방식으로 선형성을 확보하므로, 아날로그 방식으로 오차를 보정하는 방식에 비하여 전력 소모가 감소될 수 있다.
누적기(170)는 제1 내지 제n 누적기들(171~17n)을 포함할 수 있다. 제1 내지 제n 누적기들(171~17n) 각각은 제1 내지 제n 보상기들(161~16n) 중 대응되는 보상기와 연결될 수 있다. 누적기(170)는 보상기(160)로부터 출력 데이터를 수신한다. 누적기(170)는 출력 데이터를 저장하기 위한 레지스터를 포함할 수 있다. 예를 들어, 저장된 출력 데이터와 새로운 데이터 사이의 덧셈 연산을 위하여, 누적기(170)는 출력 데이터를 저장할 수 있다. 누적기(170)는 새로운 데이터에 의하여 누산된 출력 데이터를 저장할 수 있다.
누적기(170)는 쉬프터를 포함할 수 있다. 제1 내지 제n 누적기들(171~17n) 각각은 제1 내지 제n 쉬프터를 포함할 수 있다. 보상기(160)로부터 생성된 제1 내지 제n 출력 데이터는 서로 다른 자리수에 대응되는 값을 나타낼 수 있다. 예를 들어, 제1 출력 데이터는 첫번째 자리수의 가중치에 대한 부분 적을 합한 결과일 수 있다. 따라서, 제1 쉬프터는 제1 출력 데이터에 2n이 곱해진 결과와 같도록 제1 출력 데이터에 대한 쉬프팅 동작을 수행할 수 있다. 마찬가지로, 제2 쉬프터는 제2 출력 데이터에 2n-1이 곱해진 결과와 같도록 제2 출력 데이터에 대한 쉬프팅 동작을 수행할 수 있다.
결정기(180)는 제1 내지 제n 결정기들(181~18n)을 포함할 수 있다. 제1 내지 제n 결정기들(181~18n) 각각은 제1 내지 제n 누적기들(171~17n) 중 대응되는 누적기와 연결될 수 있다. 결정기(180)는 누적기(170)로부터 누산된 출력 데이터를 수신할 수 있다. 결정기(180)는 누산된 출력 데이터에 활성화 함수를 적용하여 결정 데이터를 생성할 수 있다. 예를 들어, 활성화 함수는 시그모이드(sigmoid) 함수일 수 있다. 활성화 함수에 근거하여 역치 이상(또는 초과)의 누적된 출력 데이터는 증폭되고, 역치 미만(또는 이하)의 누적된 출력 데이터는 감쇄될 수 있다.
병렬-직렬 변환기(190)는 제1 내지 제n 결정기들(181~18n)로부터 결정 데이터를 수신할 수 있다. 예를 들어, 병렬-직렬 변환기(190)는 제1 내지 제n 결정기들(181~18n)로부터 제1 내지 제n 결정 데이터를 수신할 수 있다. 병렬-직렬 변환기(190)는 제1 내지 제n 결정 데이터에 근거하여 하나의 데이터(OUTPUT)를 생성하여 출력할 수 있다. 예를 들어, 병렬-직렬 변환기(190)는 하나의 데이터(OUTPUT)를 출력하기 위하여 제1 내지 제n 결정 데이터를 합산할 수 있다. 생성된 데이터는 다른 뉴로모픽 연산 장치에 제공될 수 있다.
도 2는 본 발명의 실시예에 따른 펄스폭 변조기의 동작을 설명하기 위한 도면이다. 도 2의 펄스폭 변조기(120)는 도 1의 펄스폭 변조기(120)일 수 있다. 도 2를 참조하면, 펄스폭 변조기(120)는 입력 데이터(INPUT)를 입력 받는다. 입력 데이터(INPUT)는 예시적으로 8비트의 이진 데이터인 것으로 도시되었다. 펄스폭 변조기(120)는 입력 데이터(INPUT)의 값에 근거하여 펄스폭 변조 신호(PWM)를 생성한다.
입력 데이터(INPUT)의 값의 크기가 255인 경우, 펄스폭 변조 신호(PWM)의 생성 사이클 동안, 펄스폭 변조 신호(PWM)의 크기는 하이 레벨을 유지할 수 있다. 입력 데이터(INPUT)의 값의 크기가 254인 경우, 펄스폭 변조 신호(PWM)는 하이 레벨을 유지하다가 마지막 비트에 대응되는 구간에서 로우 레벨로 변경될 수 있다. 입력 데이터(INPUT)의 값의 크기가 128인 경우, 펄스폭 변조 신호(PWM)는 첫번째 비트에 대응되는 구간에서 하이 레벨을 유지하고, 나머지 비트에 대응되는 구간에서 로우 레벨로 변경될 수 있다. 입력 데이터(INPUT)의 값의 크기가 1인 경우, 펄스폭 변조 신호(PWM)는 마지막 비트에 대응되는 구간에서 하이 레벨을 가질 수 있다.
입력 데이터(INPUT)에서 각 비트에 대응되는 자리수에 따라, 펄스폭 변조 신호(PWM)의 생성 사이클에 할당되는 시간은 다를 수 있다. 예를 들어, 입력 데이터(INPUT)의 첫번째 비트 값이 1인 경우, 펄스폭 변조 신호(PWM)의 생성 사이클의 절반의 시간 동안 하이 레벨이 유지될 수 있다. 입력 데이터(INPUT)의 두번째 비트 값이 1인 경우, 펄스폭 변조 신호(PWM)의 생성 사이클의 1/4 시간 동안 하이 레벨이 유지될 수 있다. 펄스폭 변조 신호(PWM)가 하이 레벨을 갖는 시간은 입력 데이터(INPUT) 값의 크기에 비례할 수 있다. 펄스폭 변조 신호(PWM)가 하이 레벨을 갖는 시간이 길수록, 시냅스 연산 신호의 적분 값은 증가할 수 있다. 이 경우, 발진 신호의 출력 주파수가 증가하여 출력 데이터 값이 증가한다.
도 3은 본 발명의 실시예에 따른 발진기의 회로도이다. 도 3의 발진기(141)는 도 1의 제1 발진기(141)일 수 있다. 또한, 발진기(141)의 구성은 도 1의 제2 내지 제n 발진기들(142~14n)의 구성과 동일할 수 있다. 도 3을 참조하면, 발진기(141)는 제1 내지 제6 인버터들(Inv1~Inv6), 트랜지스터(TR1), 및 커패시터(Ca1)를 포함할 수 있다. 커패시터(Ca1)는 도 1의 제1 커패시터(Ca1)일 수 있다. 발진기(141)의 출력 단자는 트랜지스터(TR1)의 게이트 단자와 연결된다. 초기 출력 값은 0으로 가정한다.
발진기(141)는 시냅스 연산 신호(Isyn)를 수신한다. 시냅스 연산 신호(Isyn)는 전류 신호일 수 있다. 커패시터(Ca1)의 일단자는 시냅스 연산 신호(Isyn)를 수신하고 타단자는 접지될 수 있다. 커패시터(Ca1)에 시냅스 연산 신호(Isyn)의 적분 값에 비례하는 전압이 형성될 수 있다. 즉, 커패시터(Ca1)는 시냅스 연산 신호(Isyn)에 의하여 충전된다. 커패시터(Ca1)의 일단자는 제1 인버터(Inv1)의 입력 단자에 연결된다. 제1 내지 제6 인버터들(Inv1~Inv6)은 직렬로 연결된다.
커패시터(Ca1) 양단의 전압이 제1 내지 제6 인버터들(Inv1~Inv6)을 구동하기 위한 문턱 전압을 넘는 경우, 제1 내지 제6 인버터들(Inv1~Inv6)이 동작한다. 이 때, 제1 내지 제6 인버터들(Inv1~Inv6)의 개수가 짝수이므로, 제6 인버터(Inv6)는 게이트 전압을 출력할 수 있다. 제6 인버터(Inv6)의 출력은 1의 디지털 값일 수 있다. 제6 인버터(Inv6)의 출력 단자는 트랜지스터(TR1)의 제어 단자에 연결된다. 커패시터(Ca1)의 전압이 문턱 전압을 넘는 경우, 트랜지스터(TR1)의 제어 단자에 게이트 전압이 제공될 수 있다.
트랜지스터(TR1)의 일단자는 커패시터(Ca1)의 일단자 및 제1 인버터(Inv1)의 입력 단자에 연결된다. 트랜지스터(TR1)의 타단자는 접지될 수 있다. 트랜지스터(TR1)는 NMOS일 수 있다. 트랜지스터(TR1)에 게이트 전압이 제공되는 경우, 커패시터(Ca1)는 방전된다. 이 때, 커패시터(Ca1)의 전압이 문턱 전압을 넘지 않으므로, 제1 내지 제6 인버터들(Inv1~Inv6)이 동작하지 않는다. 제6 인버터(Inv6)는 게이트 전압을 출력하지 않을 수 있다. 커패시터(Ca1)가 충전 및 방전을 반복하면서, 발진기(141)의 출력 단자는 출력 주파수를 갖는 발진 신호를 생성한다.
시냅스 연산 신호(Isyn)의 크기가 클수록, 커패시터(Ca1)의 충전 속도가 증가하므로, 출력 주파수가 증가한다. 이상적인 경우, 시냅스 연산 신호(Isyn)의 크기의 증가에 따라, 출력 주파수는 선형적으로 증가한다. 다만, 제1 내지 제6 인버터들(Inv1~Inv6)의 지연 시간 또는 커패시터(Ca1)의 방전 시간에 의하여, 시냅스 연산 신호(Isyn)의 크기에 따라, 출력 주파수는 비선형적으로 변화할 수 있다. 또한, 발진기(141)의 구동 전압의 크기에 따라 출력 주파수는 비선형적으로 변화할 수 있다. 도 1의 보상기(160)는 발진기(141) 또는 시냅스 어레이(130)의 특성에 따른 비선형적인 출력을 보상할 수 있다.
도 4는 본 발명의 실시예에 따른 보상기의 블록도이다. 도 4의 보상기(200)는 도 1의 제1 내지 제n 보상기들(161~16n) 중 어느 하나일 수 있다. 도 4를 참조하면, 보상기(200)는 메모리(210), 비교기(220), 데이터 보상기(230), 컨트롤러(240), 어드레스 생성기(250)를 포함한다. 도 4의 구성 요소들은 비선형적인 데이터를 선형적으로 보상하기 위한 일 실시예로 이해될 것이고, 메모리(210)에 저장된 기준 데이터(Ref)와 카운팅 데이터(CDA)를 비교하여 그 차이를 보상할 수 있는 다양한 구성이 가능할 것이다.
메모리(210)는 기준 데이터(Ref)를 저장한다. 기준 데이터(Ref)는 시냅스 어레이 또는 발진기의 구동 전압의 증가에 따라 선형적으로 증가하는 데이터 값을 가질 수 있다. 기준 데이터(Ref)는 시냅스 연산 신호(Isyn)의 생성에 관여하는 시냅스 회로들의 개수의 증가에 따라 선형적으로 증가하는 데이터 값을 가질 수 있다. 기준 데이터(Ref)는 카운팅 데이터(CDA)가 보상기(200)에 제공되기 전에 미리 메모리(210)에 저장된다. 기준 데이터(Ref)는 선형적으로 증가 또는 감소하는 복수 개의 데이터를 포함할 수 있다. 메모리(210)는 비교기(220)에 제공되는 카운팅 데이터(CDA)의 값에 대응되는 기준 데이터를 비교기(220)에 출력할 수 있다.
비교기(220)는 도 1의 카운터(150)로부터 카운팅 데이터(CDA)를 수신한다. 카운팅 데이터(CDA)는 도 1의 발진기(140)에 의하여 생성된 발진 신호의 펄스의 개수를 카운터(150)가 카운팅하여 생성된다. 발진기(140)에 포함된 인버터들의 지연 시간 또는 커패시터의 방전 시간 등에 의하여 카운팅 데이터(CDA)는 비선형적인 값을 가질 수 있다. 비교기(220)는 제1 비교기(221) 및 제2 비교기(222)를 포함할 수 있다.
제1 비교기(221)는 도 1의 카운터(150)로부터 수신한 카운팅 데이터(CDA)와 메모리(210)로부터 수신한 기준 데이터(Ref)를 비교한다. 제1 비교기(221)는 수신한 카운팅 데이터(CDA)의 값에 대응되는 기준 데이터(Ref)를 메모리(210)로부터 읽을 수 있다. 가운팅 데이터(CDA)의 값과 기준 데이터(Ref)의 값이 동일한 경우, 제1 비교기(221)는 카운팅 데이터(CDA) 또는 기준 데이터(Ref)의 값을 갖는 출력 데이터(ODA)를 출력할 수 있다. 이 때, 출력 데이터(ODA)는 도 1의 누적기(170)에 제공될 수 있다.
제2 비교기(222)는 카운팅 데이터(CDA)의 값과 기준 데이터(Ref)의 값이 서로 다른 경우, 카운팅 데이터(CDA)를 수신할 수 있다. 또한, 제2 비교기(222)는 기준 데이터(Ref)를 수신할 수 있다. 제2 비교기(222)는 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)의 존재 여부를 판단할 수 있다. 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)가 존재하는 경우, 제2 비교기(222)는 카운팅 데이터(CDA)의 값을 보상한다. 제2 비교기(222)는 기준 데이터(Ref)의 값을 갖는 출력 데이터(ODA)를 출력할 수 있다.
제2 비교기(222)는 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)가 존재하지 않는 경우, 데이터 보상기(230)로부터 보상 데이터(ITP)를 수신할 수 있다. 예를 들어, 제2 비교기(222)가 기준 데이터(Ref)를 수신하지 못하는 경우, 제2 비교기(222)는 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)가 존재하지 않는다고 판단할 수 있다. 이 때, 비교기(220)는 메모리(210)로부터 카운팅 데이터(CDA)의 값과 가장 가까운 두 개의 카운팅 데이터에 대응되는 기준 데이터를 수신할 수 있다.
비교기(220)는 메모리(210)로부터 카운팅 데이터(CDA)보다 작은 값을 갖는 카운팅 데이터 중 가장 인접한 카운팅 데이터에 대응하는 기준 데이터를 수신할 수 있다. 또한, 비교기(220)는 메모리(210)로부터 카운팅 데이터(CDA)보다 큰 값을 갖는 카운팅 데이터 중 가장 인접한 카운팅 데이터에 대응하는 기준 데이터를 수신할 수 있다. 비교기(220)는 이러한 두 개의 기준 데이터를 데이터 보상기(230)에 제공할 수 있다.
데이터 보상기(230)는 비교기(220)로부터 수신한 두 개의 기준 데이터에 근거하여 보상 데이터(ITP)를 생성할 수 있다. 예를 들어, 데이터 보상기(230)는 비교기(220)로부터 수신한 두 개의 기준 데이터의 중간 값을 갖는 보상 데이터(ITP)를 생성할 수 있다. 다만, 이에 제한되지 않고, 카운팅 데이터와 인접한 두 개의 카운팅 데이터 사이의 거리 비율에 근거하여 보상 데이터(ITP)의 값을 산출할 수 있다. 즉, 두 개의 기준 데이터 사이의 값 중 선형성을 확보할 수 있는 값을 갖는 보상 데이터(ITP)가 생성될 수 있다.
데이터 보상기(230)가 생성한 보상 데이터(ITP)에 근거하여 비교기(220)는 출력 데이터(ODA)를 생성할 수 있다. 카운팅 데이터(CDA)에 대응되는 기준 데이터가 없는 경우, 제2 비교기(222)는 보상 데이터(ITP)의 값을 갖는 출력 데이터(ODA)를 출력할 수 있다. 데이터 보상기(230)를 이용함으로써, 메모리(210)에 저장되는 기준 데이터(Ref)의 양이 감소할 수 있다. 따라서, 보상기(200)를 구현하기 위한 면적이 감소할 수 있다.
컨트롤러(240)는 보상기(200)의 구성 요소들을 제어할 수 있다. 예를 들어, 비교기(220)는 컨트롤러(240)의 제어에 따라, 카운팅 데이터(CDA)를 수신하고, 메모리(210)로부터 수신한 기준 데이터(Ref)를 카운팅 데이터(CDA)와 비교할 수 있다. 비교기(220)는 컨트롤러(240)의 제어에 따라, 출력 데이터(ODA)를 생성할 수 있다. 데이터 보상기(230)는 컨트롤러(240)의 제어에 따라, 보상 데이터(ITP)를 생성하여 비교기(220)에 제공할 수 있다.
어드레스 생성기(250)는 컨트롤러(240)의 제어에 따라, 메모리(210)에 저장되는 기준 데이터(Ref)의 어드레스 정보를 생성한다. 메모리(210)는 어드레스 정보에 근거하여 기준 데이터(Ref)를 해당 어드레스에 저장할 수 있다. 비교기(220)는 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)의 어드레스 정보를 이용하여 기준 데이터(Ref)에 대한 읽기 동작을 수행할 수 있다.
도 5는 보상 전 카운팅 데이터와 보상 후 출력 데이터의 변화를 나타내기 위한 그래프이다. 도 5를 참조하면, 가로축은 시냅스의 개수로 정의된다. 시냅스의 개수는 도 1의 시냅스 어레이(130)에 포함된 시냅스 회로들 중 출력 주파수를 생성하는 발진기에 전기적으로 연결되어 출력 신호를 제공한 시냅스 회로들의 개수를 의미한다. 예를 들어, 시냅스의 개수는 도 3의 발진기(141)에 제공되는 시냅스 연산 신호(Isyn)의 생성에 관여한 시냅스 회로들의 개수일 수 있다. 세로축은 GHz 단위의 출력 주파수로 정의된다.
보상 전 출력 주파수는 도 1의 발진기(140)에 의하여 생성된 발진 신호의 주파수를 나타낸다. 시냅스의 개수가 100개인 경우, 보상 전 출력 주파수는 0.526GHz를 나타낸다. 시냅스의 개수가 200개인 경우, 보상 전 출력 주파수는 0.864GHz를 나타낸다. 시냅스의 개수가 300개인 경우, 보상 전 출력 주파수는 1.1GHz를 나타낸다. 시냅스의 개수가 400개인 경우, 보상 전 출력 주파수는 1.25GHz를 나타낸다. 시냅스의 개수가 500개인 경우, 보상 전 출력 주파수는 1.3GHz를 나타낸다. 시냅스의 개수가 600개인 경우, 보상 전 출력 주파수는 1.33GHz를 나타낸다. 시냅스의 개수에 따른 보상 전 출력 주파수의 변화는 시냅스의 개수에 따른 카운팅 데이터의 값의 변화를 나타낸다. 즉, 시냅스의 개수의 증가에 따라 비선형적으로 카운팅 데이터의 값이 증가한다.
보상 후 출력 주파수는 도 1의 보상기(160) 또는 도 4의 보상기(200)에 의하여 출력 데이터가 생성된 경우, 보상기 없이 출력 데이터 값을 갖기 위한 발진 신호의 주파수를 나타낸다. 시냅스의 개수가 100개인 경우, 보상 후 출력 주파수는 0.1GHz를 나타낸다. 시냅스의 개수가 200개인 경우, 보상 후 출력 주파수는 0.37GHz를 나타낸다. 시냅스의 개수가 300개인 경우, 보상 후 출력 주파수는 0.6GHz를 나타낸다. 시냅스의 개수가 400개인 경우, 보상 후 출력 주파수는 0.81GHz를 나타낸다. 시냅스의 개수가 500개인 경우, 보상 후 출력 주파수는 1.05GHz를 나타낸다. 시냅스의 개수가 600개인 경우, 보상 후 출력 주파수는 1.33GHz를 나타낸다. 시냅스의 개수에 따른 보상 후 출력 주파수의 변화는 시냅스의 개수에 따른 출력 데이터 값의 변화를 나타낸다. 즉, 시냅스의 개수의 증가에 따라 선형적으로 출력 데이터의 값이 증가한다. 이하, 출력 데이터의 값은 도 4의 보상기(200)의 도면 부호를 이용하여 설명된다.
카운팅 데이터(CDA)는 보상 전 출력 주파수, 즉 발진 신호의 주파수에 의한 펄스 개수를 카운팅하여 생성된다. 출력 주파수는 발진기에 포함된 커패시터 양단의 전압 또는 발진기에 포함된 트랜지스터의 게이트 전압에 의존할 수 있다. 커패시터 양단의 전압 또는 게이트 전압은 시냅스 연산 신호의 크기에 의존할 수 있다. 시냅스 연산 신호의 크기는 시냅스 연산 신호의 생성에 관여하는 시냅스 회로들의 개수에 의존할 수 있다.
메모리(210)는 보상 후 출력 주파수로 정의된 그래프와 같이 선형성을 갖도록 보상된 값을 기준 데이터(Ref)로 저장할 수 있다. 예를 들어, 도 5의 그래프를 참조하면, 발진 신호의 출력 주파수가 1.33GHz인 경우, 선형성을 확보하기 위한 출력 주파수의 보상이 불필요하다. 즉, 카운팅 데이터(CDA)의 값과 기준 데이터(Ref)의 값은 동일하므로, 제1 비교기(221)는 카운팅 데이터(CDA)의 값을 갖는 출력 데이터(ODA)를 출력할 수 있다. 발진 신호의 출력 주파수가 1.3GHz인 경우, 선형성을 확보하기 위하여 출력 주파수는 1.3GHz보다 낮을 것이 요구된다. 즉, 카운팅 데이터(CDA)의 값과 기준 데이터(Ref)의 값은 다르고, 제2 비교기(222)는 기준 데이터(Ref)의 값을 갖는 출력 데이터(ODA)를 출력할 수 있다.
발진 신호의 출력 주파수가 1.25GHz와 1.3GHz 사이인 경우, 카운팅 데이터(CDA)의 값에 대응되는 기준 데이터(Ref)가 메모리(210)에 저장되지 않을 수 있다. 따라서, 데이터 보상기(230)는 발진 신호의 출력 주파수가 1.25GHz일 때의 카운팅 데이터에 대응되는 기준 데이터와 발진 신호의 출력 주파수가 1.3GHz일 때의 카운팅 데이터에 대응되는 기준 데이터를 수신할 수 있다. 비교기(220)는 두 개의 기준 데이터의 중간 값을 갖는 출력 데이터(ODA)를 출력할 수 있다. 따라서, 뉴로모픽 연산 장치의 선형성이 확보될 수 있다.
도 6은 본 발명의 실시예에 따른 뉴로모픽 연산 장치의 구동 방법의 순서도이다. 도 6에 따른 뉴로모픽 연산 장치의 구동 방법은 도 1의 뉴로모픽 연산 장치(100)에서 수행될 수 있다. 설명의 편이상, 뉴로모픽 연산 장치의 구동 방법은 도 1의 도면 부호를 참조하여 설명된다. S110 단계에서, 직렬-병렬 변환기(110)에 입력 데이터 및 가중치 데이터가 입력될 수 있다. 직렬-병렬 변환기(110)는 입력 데이터 및 가중치 데이터를 펄스폭 변조기(120)에 제공할 수 있다.
S120 단계에서, 펄스폭 변조기(120)는 펄스폭 변조 신호를 생성한다. 펄스폭 변조기(120)는 입력 데이터의 값의 크기에 따라 펄스폭 변조 신호의 펄스폭을 결정할 수 있다. 입력 데이터의 값의 크기가 클수록, 펄스폭 변조 신호의 펄스폭은 증가한다. 펄스폭 변조기(120)는 펄스폭 변조 신호를 시냅스 어레이(130)에 제공한다. S130 단계에서, 시냅스 어레이(130)는 시냅스 연산 신호를 생성한다. 시냅스 어레이(130)는 펄스폭 변조 신호 및 가중치 신호를 곱셈 연산에 근거하여 전류 신호를 생성한다. 시냅스 어레이(130)는 매트릭스 형태로 배치된 시냅스 회로들을 포함한다. 열 방향으로 배치되는 시냅스 회로들이 생성하는 전류 신호는 합산된다. 합산된 전류 신호에 의하여 시냅스 연산 신호가 생성된다.
S140 단계에서, 카운터(150)는 시냅스 연산 신호에 근거한 출력 펄스의 개수를 카운팅한다. 발진기(140)는 시냅스 연산 신호를 수신한다. 발진기(140)는 시냅스 연산 신호에 근거하여 발진 신호를 생성한다. 발진 신호는 출력 주파수를 갖고, 출력 주파수는 시냅스 연산 신호의 크기에 의존한다. 즉, 시냅스 연산 신호의 크기가 클수록, 발진 신호의 출력 주파수는 증가한다. 카운터(150)는 출력 주파수에 의하여 형성되는 펄스의 개수를 카운팅한다.
S150 단계에서, 카운터(150)는 카운팅 데이터를 생성한다. 카운팅 데이터는 출력 주파수에 의하여 형성되는 펄스의 개수에 근거한 데이터 값을 가질 수 있다. 카운터(150)는 생성된 카운팅 데이터를 보상기(160)에 제공한다. S160 단계에서, 보상기(160)는 출력 데이터를 생성한다. 카운팅 데이터는 시냅스 어레이(130) 또는 발진기(140)의 구동 전압의 변화에 따라 비선형적으로 증가 또는 감소할 수 있다. 보상기(160)는 카운팅 데이터를 보상하여 선형적으로 증가 또는 감소하는 출력 데이터를 생성한다.
S170 단계에서, 누적기(170) 또는 결정기(180)는 출력 데이터를 처리한다. 누적기(170)는 출력 데이터를 수신하고, 추가적으로 제공되는 출력 데이터와 덧셈 연산을 수행하여 누산된 출력 데이터를 생성할 수 있다. 결정기(180)는 누산된 출력 데이터에 활성화 함수를 적용하여 결정 데이터를 생성할 수 있다.
도 7은 본 발명의 실시예에 따른 출력 데이터를 생성하는 방법을 구체화하는 순서도이다. 도 7의 출력 데이터를 생성하는 방법은 도 6의 S160 단계를 구체화한 것으로 볼 수 있다. 도 7에 따른 출력 데이터를 생성하는 방법은 도 1의 보상기(160) 또는 도 4의 보상기(200)에서 수행될 수 있다. 설명의 편의상, 출력 데이터를 생성하는 방법은 도 4의 도면 부호를 참조하여 설명된다. S161 단계에서, 제1 비교기(221)는 카운팅 데이터(CDA) 및 기준 데이터(Ref)를 비교할 수 있다. 제1 비교기(221)는 메모리(210)로부터 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)를 수신할 수 있다.
카운팅 데이터(CDA)의 값과 기준 데이터(Ref)의 값이 동일한 경우, S162 단계가 진행된다. S162 단계에서, 제1 비교기(221)는 카운팅 데이터(CDA)를 출력 데이터(ODA)로 출력할 수 있다. 카운팅 데이터(CDA)의 값과 기준 데이터(Ref)의 값이 서로 다른 경우, S163 단계가 진행된다. S163 단계에서, 제2 비교기(222)는 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)의 존재 여부를 판단할 수 있다. 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)가 존재하는 경우, S164 단계가 진행된다. 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)가 존재하지 않는 경우, S165 단계가 진행된다.
S164 단계에서, 제2 비교기(222)는 기준 데이터(Ref)를 이용하여 카운팅 데이터(CDA)를 보상할 수 있다. 즉, 제2 비교기(222)는 카운팅 데이터(CDA)에 대응되는 기준 데이터(Ref)의 값을 갖는 출력 데이터(ODA)를 생성할 수 있다. S166 단계에서, 제2 비교기(222)는 보상된 카운팅 데이터, 즉 출력 데이터(ODA)를 출력할 수 있다.
S165 단계에서, 제2 비교기(222) 및 데이터 보상기(230)는 중간 값을 이용하여 카운터 데이터를 보상할 수 있다. 제2 비교기(222)는 메모리(210)로부터 수신된 카운팅 데이터(CDA)에 인접하는 두 개의 카운팅 데이터에 대응되는 두 개의 기준 데이터를 수신할 수 있다. 데이터 보상기(230)는 두 개의 기준 데이터의 중간 값을 갖는 보상 데이터(ITP)를 생성할 수 있다. 제2 비교기(222)는 보상 데이터(IPT)의 값을 갖는 출력 데이터(ODA)를 생성할 수 있다. S166 단계에서, 제2 비교기(222)는 보상된 카운팅 데이터, 즉 출력 데이터(ODA)를 출력할 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
100: 뉴로모픽 연산 장치 110: 직렬-병렬 변환기
120: 펄스폭 변조기 130: 시냅스 어레이
140: 발진기 150: 카운터
160, 200: 보상기 210: 메모리

Claims (10)

  1. 입력 데이터의 값에 근거하여 펄스폭 변조 신호를 생성하는 펄스폭 변조기;
    각각이 상기 펄스폭 변조 신호 및 가중치 신호의 곱셈 연산을 수행하여 전류 신호를 출력하는 복수의 시냅스 회로들을 포함하고, 상기 전류 신호에 근거하여 시냅스 연산 신호를 생성하는 시냅스 어레이;
    상기 시냅스 연산 신호의 크기에 의존하는 출력 주파수를 갖는 발진 신호를 생성하는 발진기;
    상기 발진 신호에 포함된 펄스의 개수를 카운팅하여 카운팅 데이터를 생성하는 카운터; 및
    상기 카운팅 데이터와 기 저장된 기준 데이터를 비교함으로써 상기 카운팅 데이터의 값을 보상하는지 여부를 판단하여 출력 데이터를 생성하는 보상기를 포함하는 뉴로모픽 연산 장치.
  2. 제1 항에 있어서,
    상기 펄스폭 변조 신호가 하이 레벨을 갖는 시간은 상기 입력 데이터의 크기에 비례하는 뉴로모픽 연산 장치.
  3. 제1 항에 있어서,
    상기 복수의 시냅스 회로들은 행 방향 및 열 방향을 따라 배치되고,
    상기 복수의 시냅스 회로들 중 동일한 행에 배치된 시냅스 회로들 각각은 상기 펄스폭 변조기로부터, 상기 동일한 행에 대응하는 펄스폭 변조 신호 및 가중치 신호를 수신하고, 상기 수신된 펄스폭 변조 신호 및 상기 수신된 가중치 신호에 대한 곱셈 연산을 수행하는 뉴로모픽 연산 장치.
  4. 제1 항에 있어서,
    상기 복수의 시냅스 회로들은 행 방향 및 열 방향을 따라 배치되고,
    상기 뉴로모픽 연산 장치는 상기 복수의 시냅스 회로들 중 동일한 열에 배치된 시냅스 회로들 및 접지 단자 사이에 연결된 커패시터를 더 포함하는 뉴로모픽 연산 장치.
  5. 제4 항에 있어서,
    상기 발진기는 복수의 발진기들을 포함하고,
    상기 복수의 발진기들 각각은:
    직렬로 연결된 복수의 인버터들; 및
    상기 복수의 인버터들의 입력단 및 상기 접지 단자 사이에 연결되고, 상기 복수의 인버터들의 출력단에 응답하여 동작하도록 구성된 트랜지스터를 포함하고,
    상기 복수의 인버터들의 입력단은 상기 커패시터와 연결되는 뉴로모픽 연산 장치.
  6. 제5 항에 있어서,
    상기 트랜지스터는 NMOS 트랜지스터이고,
    상기 복수의 인버터들의 개수는 짝수 개이고,
    상기 커패시터의 전압이 상기 복수의 인버터들의 문턱 전압을 초과하는 경우, 상기 복수의 인버터들의 출력단으로 게이트 전압이 출력되는 뉴로모픽 연산 장치.
  7. 제1 항에 있어서,
    상기 보상기는,
    상기 기준 데이터를 저장하도록 구성된 메모리;
    상기 카운팅 데이터와 상기 기준 데이터를 비교하여, 상기 카운팅 데이터와 상기 기준 데이터가 동일한 경우, 상기 카운팅 데이터 또는 상기 기준 데이터의 값에 대응하는 제1 출력 데이터를 출력하는 제1 비교기;
    상기 카운팅 데이터와 상기 기준 데이터를 비교하여, 상기 카운팅 데이터와 상기 기준 데이터가 다른 경우, 상기 카운팅 데이터에 대응되는 대응 기준 데이터가 존재하는지 여부를 판단하는 제2 비교기;
    상기 제2 비교기에 의해 상기 대응 기준 데이터가 존재하지 않는다고 판단된 경우, 보상 데이터를 생성하는 데이터 보상기; 및
    상기 제1 비교기, 상기 제2 비교기 및 상기 데이터 보상기를 제어하는 컨트롤러를 포함하는 뉴로모픽 연산 장치.
  8. 제7 항에 있어서,
    상기 제2 비교기는,
    상기 대응 기준 데이터가 존재한다고 판단되면, 상기 대응 기준 데이터의 값에 대응하는 제2 출력 데이터를 출력하고,
    상기 대응 기준 데이터가 존재하지 않는다고 판단되면, 상기 메모리로부터 상기 카운팅 데이터보다 작은 값을 갖는 카운팅 데이터 중 가장 인접한 제1 카운팅 데이터에 대응하는 제1 기준 데이터 및 상기 카운팅 데이터보다 큰 값을 갖는 카운팅 데이터 중 가장 인접한 제2 카운팅 데이터에 대응하는 제2 기준 데이터를 수신하는 뉴로모픽 연산 장치.
  9. 제8 항에 있어서,
    상기 데이터 보상기는,
    상기 제1 기준 데이터 및 상기 제2 기준 데이터에 근거하여 상기 보상 데이터를 생성하고,
    상기 제2 비교기는,
    상기 데이터 보상기로부터 상기 보상 데이터를 수신하고, 상기 보상 데이터의 값에 대응하는 제3 출력 데이터를 출력하는 뉴로모픽 연산 장치.
  10. 뉴로모픽 연산 장치의 동작 방법에 있어서,
    입력 데이터 값에 근거하여 펄스폭 변조 신호를 생성하는 단계;
    상기 펄스폭 변조 신호 및 가중치 신호의 곱셈 연산을 수행하여 시냅스 연산 신호를 생성하는 단계;
    상기 시냅스 연산 신호의 크기에 의존하는 출력 주파수를 갖는 발진 신호를 생성하는 단계;
    상기 발진 신호에 포함된 펄스의 개수를 카운팅하여 카운팅 데이터를 생성하는 단계;
    상기 카운팅 데이터와 기 저장된 기준 데이터를 비교함으로써 상기 카운팅 데이터의 값을 보상하는지 여부를 판단하여 출력 데이터를 생성하는 단계를 포함하는 뉴로모픽 연산 장치의 동작 방법.












KR1020170088008A 2017-07-11 2017-07-11 뉴로모픽 연산 장치 KR102420362B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170088008A KR102420362B1 (ko) 2017-07-11 2017-07-11 뉴로모픽 연산 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170088008A KR102420362B1 (ko) 2017-07-11 2017-07-11 뉴로모픽 연산 장치

Publications (2)

Publication Number Publication Date
KR20190007143A KR20190007143A (ko) 2019-01-22
KR102420362B1 true KR102420362B1 (ko) 2022-07-15

Family

ID=65320578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170088008A KR102420362B1 (ko) 2017-07-11 2017-07-11 뉴로모픽 연산 장치

Country Status (1)

Country Link
KR (1) KR102420362B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10832783B1 (en) * 2019-09-24 2020-11-10 Macronix International Co., Ltd. Data sensing device and data sensing method thereof
KR102488174B1 (ko) * 2020-03-26 2023-01-16 광운대학교 산학협력단 변환입력신호를 사용하는 신경망 회로
KR102565801B1 (ko) 2021-06-17 2023-08-10 서강대학교산학협력단 인공신경망 연산 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160379110A1 (en) 2015-06-29 2016-12-29 International Business Machines Corporation Neuromorphic processing devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160379110A1 (en) 2015-06-29 2016-12-29 International Business Machines Corporation Neuromorphic processing devices

Also Published As

Publication number Publication date
KR20190007143A (ko) 2019-01-22

Similar Documents

Publication Publication Date Title
KR102420362B1 (ko) 뉴로모픽 연산 장치
KR102314300B1 (ko) 뉴로모픽 연산 장치
US10977339B2 (en) Systems and methods for mapping matrix calculations to a matrix multiply accelerator
KR102653822B1 (ko) 혼성 신호 컴퓨팅 시스템 및 방법
Kim et al. Analog CMOS-based resistive processing unit for deep neural network training
KR102313796B1 (ko) 뉴로모픽 연산 장치
US10438116B2 (en) Neuromorphic arithmetic device
US11551071B2 (en) Neural network device, signal generation method, and program
US11604977B2 (en) Computing circuitry
US11188815B2 (en) Weight shifting for neuromorphic synapse array
WO2020226740A1 (en) Transistorless all-memristor neuromorphic circuits for in-memory computing
US20190318239A1 (en) Resistive processing unit architecture with separate weight update and inference circuitry
US20190005382A1 (en) Circuit for cmos based resistive processing unit
EP3259735A2 (en) Spike domain convolution circuit
KR20190106185A (ko) 전치 가능한 메모리와 가상 순람표를 이용한 뉴로모픽 시스템
US20200327401A1 (en) Computing circuitry
US11340869B2 (en) Sum-of-products operator, sum-of-products operation method, logical operation device, and neuromorphic device
US20200202217A1 (en) Neuromorphic system for performing supervised learning using error backpropagation
WO2019096660A1 (en) Competitive machine learning accuracy on neuromorphic arrays with capacitor memory devices
KR102488174B1 (ko) 변환입력신호를 사용하는 신경망 회로
KR20210034172A (ko) Mac 연산 동작을 수행하는 반도체 장치
US11962321B2 (en) Analog-stochastic converter for converting analog signal into probability signal based on threshold switching element
Mileiko et al. Dynamics of Time-Domain Power-Elastic Circuits for Pervasive Machine Learning
CN112749796A (zh) 用于神经网络的计算设备
JP2023140136A (ja) 乗算装置、積和演算装置、行列演算装置およびリザバー装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right