KR20210144417A - 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 - Google Patents

인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 Download PDF

Info

Publication number
KR20210144417A
KR20210144417A KR1020200061746A KR20200061746A KR20210144417A KR 20210144417 A KR20210144417 A KR 20210144417A KR 1020200061746 A KR1020200061746 A KR 1020200061746A KR 20200061746 A KR20200061746 A KR 20200061746A KR 20210144417 A KR20210144417 A KR 20210144417A
Authority
KR
South Korea
Prior art keywords
voltage
time
capacitor
quantization level
trigger pulse
Prior art date
Application number
KR1020200061746A
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 KR1020200061746A priority Critical patent/KR20210144417A/ko
Priority to CN202011211418.9A priority patent/CN113707193A/zh
Priority to US17/141,474 priority patent/US11587616B2/en
Priority to EP21172460.4A priority patent/EP3913629A1/en
Priority to JP2021085813A priority patent/JP2021185479A/ja
Publication of KR20210144417A publication Critical patent/KR20210144417A/ko
Priority to US17/992,143 priority patent/US11804266B2/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0038Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/06Arrangements for interconnecting storage elements electrically, e.g. by wiring
    • G11C5/063Voltage and signal distribution in integrated semi-conductor memory access lines, e.g. word-line, bit-line, cross-over resistance, propagation delay
    • 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
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0007Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0026Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0028Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0061Timing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/06Arrangements for interconnecting storage elements electrically, e.g. by wiring
    • G11C5/10Arrangements for interconnecting storage elements electrically, e.g. by wiring for interconnecting capacitors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/147Voltage reference generators, voltage or current regulators; Internally lowered supply levels; Compensation for voltage drops
    • 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/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • Power Engineering (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Chemical & Material Sciences (AREA)
  • Materials Engineering (AREA)
  • Analogue/Digital Conversion (AREA)
  • Semiconductor Memories (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

인-메모리(in-memory) 프로세싱을 수행하는 장치는, 입력 신호들이 인가되는 경우 전류 합(current sum)을 제공하는 메모리 셀 어레이, 전류 합에 대응하는 샘플링 전압을 충전하는 커패시터, 커패시터에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 수행하고 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 샘플링 전압에 대응하는 양자화 레벨을 결정하는 프로세싱 회로를 포함한다.

Description

인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 {APPARATUS FOR PERFORMING IN MEMORY PROCESSING AND COMPUTING APPARATUS HAVING THE SAME}
인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치에 관하고, 구체적으로 시간-디지털 컨버팅에 기초한 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치에 에 관한다.
뉴럴 네트워크는 컴퓨터 과학적 아키텍처(computational architecture)를 참조하여 구현된 컴퓨팅 시스템이다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 이용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크의 처리는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크의 데이터가 증가하고, 뉴럴 네트워크를 구성하는 아키텍처의 연결성이 복잡해짐에 따라 프로세싱 장치의 연산량 및 메모리 액세스 빈도의 과도한 증가가 초래되어, 소형화 및 상용화에 있어서의 비효율적인 성능이 나타날 수 있다. 예를 들어, 뉴럴 네트워크의 처리는 곱셉과 덧셈을 반복하는 MAC(Multiply-Accumulate) 연산을 포함할 수 있다. 뉴럴 네트워크의 처리에 있어서 많은 연산량을 차지하는 반복적인 MAC 연산을 저전력 및 고속으로 처리하기 위한, 효율적인 하드웨어 아키텍쳐 및 하드웨어 구동 방법들에 대한 다양한 시도들이 연구되고 있다.
인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 인-메모리(in-memory) 프로세싱을 수행하는 장치는, 입력 신호들이 각각의 로우(row) 라인을 통해 인가되는 경우 각각의 컬럼(column) 라인을 통해 흐르는 컬럼 전류의 전류 합(current sum)을 제공하는, 복수의 메모리 셀들을 포함하는 메모리 셀 어레이; 상기 각각의 컬럼 라인의 상기 전류 합에 대응하는 샘플링 전압을 충전하는 커패시터를 포함하는 샘플링 회로; 및 상기 커패시터의 충전 시간에 따라 구분된 양자화 레벨들 중 소정의 양자화 레벨에 대응하는 타이밍에 생성된 트리거 펄스의 인가에 의해 상기 커패시터에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 시작하고, 상기 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 상기 샘플링 전압에 대응하는 양자화 레벨을 결정하는 프로세싱 회로를 포함한다.
다른 측면에 따르면, 컴퓨팅 장치는, 호스트 프로세서; 메모리 디바이스; 및 인-메모리 프로세싱 디바이스를 포함하고, 상기 인-메모리 프로세싱 디바이스는 입력 신호들이 각각의 로우(row) 라인을 통해 인가되는 경우 각각의 컬럼(column) 라인을 통해 흐르는 컬럼 전류의 전류 합(current sum)을 제공하는, 복수의 메모리 셀들을 포함하는 메모리 셀 어레이; 상기 각각의 컬럼 라인의 상기 전류 합에 대응하는 샘플링 전압을 충전하는 커패시터를 포함하는 샘플링 회로; 및 상기 커패시터의 충전 시간에 따라 구분된 양자화 레벨들 중 소정의 양자화 레벨에 대응하는 타이밍에 생성된 트리거 펄스의 인가에 의해 상기 커패시터에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 시작하고, 상기 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 상기 샘플링 전압에 대응하는 양자화 레벨을 결정하는 프로세싱 회로를 포함한다.
또 다른 측면에 따르면, 인-메모리(in-memory) 프로세싱을 수행하는 방법은, 메모리 셀 어레이의 각각의 로우(row) 라인을 통해 복수의 메모리 셀들에 입력 신호를 인가하는 단계; 상기 메모리 셀 어레이의 각각의 컬럼(column) 라인을 통해 흐르는 컬럼 전류의 전류 합(current sum)에 대응하는 샘플링 전압을 상기 각각의 컬럼(column) 라인에 연결된 커패시터에 충전하는 단계; 상기 커패시터의 충전 시간에 따라 구분된 양자화 레벨들 중 소정의 양자화 레벨에 대응하는 타이밍에 생성된 트리거 펄스를 비교기들에 인가함으로써 상기 커패시터에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 수행하는 단계; 및 상기 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 상기 샘플링 전압에 대응하는 양자화 레벨을 결정하는 단계를 포함한다.
도 1은 생물학적 뉴런과 그 동작을 설명하기 위한 도면이다.
도 2는 뉴로모픽 연산을 수행하기 위한 2차원 어레이 회로의 구성을 설명하기 위한 도면이다.
도 3은 뉴로모픽 연산의 처리 방법을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 인-메모리 프로세싱 디바이스를 도시한 도면이다.
도 5는 일 실시예에 따른 어느 컬럼 라인의 합성 저항 값 및 합산 비트 값 간의 매핑 관계를 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 인-메모리 프로세싱 디바이스를 설명하기 위한 도면이다.
도 7은 일 실시예에 따라 커패시터에 전압이 충전되는 시간에 따라 양자화 레벨들의 시간 구간들을 설정하는 것을 설명하기 위한 도면이다.
도 8은 일 실시예에 따라 비교기에 트리거 펄스(TRIGGER)를 인가하는 타이밍을 설명하기 위한 도면이다.
도 9는 일 실시예에 따라 인-메모리 프로세싱 디바이스에서 수행되는 시간-디지털 컨버팅을 설명하기 위한 도면이다.
도 10은 일 실시예에 따라 시간-디지털 컨버팅을 통해 컬럼 라인(출력 라인) 별 카운팅 값을 출력하는 것을 설명하기 위한 도면이다.
도 11은 일 실시예에 따라 인-메모리 프로세싱을 수행하는 방법의 흐름도이다.
도 12는 일 실시예에 따른 컴퓨팅 장치를 나타내는 블록도이다.
도 13은 뉴럴 네트워크의 일 예를 설명하기 위한 도면이다.
도 14는 일 실시예에 따라 인-메모리 프로세싱을 수행하는 방법의 흐름도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 실시예들에서 사용되는 “구성된다” 또는 “포함한다” 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
아래에서는 첨부한 도면을 참고하여 실시예에 대하여 상세히 설명한다. 그러나 실시예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
도 1은 생물학적 뉴런과 그 동작을 설명하기 위한 도면이다.
도 1을 참고하면, 생물학적 뉴런(10)은 인간의 신경계에 존재하는 세포를 의미하며, 기초적인 생물학적 계산 개체의 하나이다. 인간의 두뇌는 대략 1000억개 정도의 생물학적 뉴런들과 그 사이에 위치하는 100조개 정도의 연결들(interconnections)을 포함하고 있다.
생물학적 뉴런(10)은 단일 세포이며 세포핵(nucleus) 및 다양한 세포기관(organelles)을 포함하는 세포체(neuron cell body)를 포함한다. 다양한 세포기관은 미토콘드리아, 세포체로부터 방사되는 다수의 수상돌기들(dendrites) 및 많은 분기 확장선(extension)들에서 종단하는 축색돌기(axon)를 포함한다.
일반적으로, 축색돌기는 뉴런으로부터 다른 뉴런으로 신호들을 송신하는 기능을 수행하고, 수상돌기는 다른 뉴런으로부터 신호를 수신하는 기능을 수행한다. 예를 들어, 서로 다른 뉴런들이 연결되어 있는 경우 뉴런의 축색돌기를 통해 전달된 신호는 다른 뉴런의 수상돌기에 의해 수신될 수 있다. 이때, 뉴런들 사이에서 신호는 시냅스(synapse)라 지칭되는 특화된 연결을 통해 전달되며, 여러 뉴런들이 서로 연결되어 뉴럴 네트워크(neural network)을 형성한다. 시냅스를 기준으로 신경전달물질(neurotransmitter)을 분비하는 뉴런은 프리 시냅틱 뉴런(pre-synaptic neuron)으로 지칭되고, 신경전달물질을 통해 전달되는 정보를 받는 뉴런은 포스트 시냅틱 뉴런(post-synaptic neuron)이라고 지칭될 수 있다.
한편, 인간의 두뇌는 많은 수의 뉴런들이 서로 연결되어 형성되는 뉴럴 네트워크를 통해 다양한 신호들을 전달 및 처리함으로써 방대한 양의 정보를 학습하고 기억할 수 있다. 인간의 두뇌 내의 뉴런들 사이의 방대한 수의 연결들은 생물학적 컴퓨팅의 거대 병렬 속성(massively parallel nature)에 직접 상관되는바, 인공 뉴럴 네트워크(artificial neural network)를 통해 생물학적 뉴럴 네트워크를 모사하여 방대한 양의 정보를 효율적으로 처리하기 위한 다양한 시도가 있어왔다. 예를 들어, 인공 뉴럴 네트워크를 뉴런 수준에서 구현하기 위해 설계된 컴퓨팅 시스템으로서, 뉴로모픽 장치가 연구되고 있다.
한편, 생물학적 뉴런(10)의 동작은 수학적 모델(11)로 모사될 수 있다. 생물학적 뉴런(10)에 대응하는 수학적 모델(11)은 뉴로모픽 연산의 일 예로서, 다수의 뉴런들로부터의 정보에 대해 시냅틱 웨이트를 곱하는 곱셈 연산, 시냅틱 웨이트가 곱해진 값들(ω0x0, ω1x1, ω2x2)에 대한 덧셈 연산(Σ), 및 덧셈 연산 결과에 대해 특성 함수(b) 및 활성 함수(f)를 적용하는 연산을 포함할 수 있다. 뉴로모픽 연산에 의해 뉴로모픽 연산 결과가 제공될 수 있다. 여기서, x0, x1, x2, ... 등의 값들은 액손 값들로 지칭되고, ω0, ω1, ω2, ... 등의 값들은 시냅틱 웨이트들로 지칭될 수 있다.
도 2는 뉴로모픽 연산을 수행하기 위한 2차원 어레이 회로의 구성을 설명하기 위한 도면이다.
도 2를 참조하면, 2차원 어레이 회로의 구성(20)은 N 개(N은 임의의 자연수)의 액손 회로들(A1 내지 AN)(210), M 개(M은 임의의 자연수)의 뉴런 회로들(N1 내지 NM)(230) 및 N x M 개의 시냅스 어레이(S11 내지 SNM)(220)를 포함한다.
시냅스 어레이(S11 내지 SNM)(220)의 각 시냅스는 액손 회로들(A1 내지 AN)(210)로부터 제 1 방향으로 연장되는 제 1 방향 라인들과 뉴런 회로들(N1 내지 NM)(230)로부터 제 2 방향으로 연장되는 제2 방향 라인들의 교차점들에 배치될 수 있다. 여기서, 설명의 편의를 위하여, 제 1 방향은 행 방향이고 제2 방향은 열 방향인 것으로 도시되어 있으나, 이에 제한되지 않고 제 1 방향이 열 방향이고 제 2 방향은 행 방향일 수도 있다.
액손 회로들(A1 내지 AN)(210) 각각은 생물학적 뉴런(도 1의 10)의 축색돌기를 모사하는 회로를 의미할 수 있다. 뉴런의 축색돌기는 뉴런으로부터 다른 뉴런으로 신호들을 송신하는 기능을 수행하므로, 뉴런의 축색돌기를 모사하는 액손 회로들(A1 내지 AN)(210) 각각은 액티베이션(예를 들어, 액손들 a1, a2, ..., aN)을 입력 받아 제 1 방향 라인들로 전달할 수 있다. 액티베이션은 뉴런을 통해 전달되는 신경 전달 물질에 대응되는 것으로서, 액손 회로들(A1 내지 AN)(210) 각각에 입력되는 전기적 신호를 의미할 수 있다. 한편, 액손 회로들(A1 내지 AN)(210) 각각은 입력 정보를 저장하는 메모리, 레지스터 또는 버퍼를 포함할 수 있다. 한편, 액티베이션은 바이너리(binary) 값을 갖는 바이너리 액티베이션일 수 있다. 예를 들어, 바이너리 액티베이션은 논리값 0 또는 1(또는, 논리값 -1 또는 1)에 대응되는 1 비트 정보를 포함할 수 있다. 다만, 반드시 이에 제한되는 것은 아니며, 액티베이션은 터너리(ternary) 값을 가질 수 있고, 멀티-비트 값을 가질 수도 있다.
시냅스 어레이(S11 내지 SNM)(220)의 각 시냅스는 뉴런과 뉴런 사이의 시냅스를 모사하는 회로를 의미할 수 있다. 시냅스 어레이(S11 내지 SNM)(220)는 뉴런과 뉴런 사이의 연결 강도에 대응되는 시냅틱 웨이트들을 저장할 수 있다. 도 2에서는 설명의 편의를 위해 각 시냅스에 저장될 시냅틱 웨이트들의 예로서, w1, w2, ..., wM가 도시되어 있으나, 각 시냅스에는 이 밖에도 다른 시냅틱 웨이트들이 저장될 수 있다. 시냅스 어레이(S11 내지 SNM)(220)의 각 시냅스는 시냅틱 웨이트를 저장하기 위한 메모리 소자를 포함하거나 또는 시냅틱 웨이트를 저장하고 있는 다른 메모리 소자에 연결될 수 있다. 여기서, 이와 같은 메모리 소자는 예를 들어, 멤리스터(memrister) 또는 저항성 메모리 셀(resistive memory cell)에 해당될 수 있다. 멤리스터 또는 저항성 메모리 셀은 SRAM(Static Random-Access Memory), PCM(Phase Change Memory), OXRAM(Oxide Based Memory), MRAM(Magnetoresistive Random-Access Memory), STT-RAM(Spin-Transfer Torque Random-Access Memory), CBRAM(Conductive-Bridge Random-Access Memory), RRAM (Resistive RAM), FRAM (Ferroelectric RAM), 자기 터널 접합(Magnetic Tunnel Junction; MTJ) 소자 등으로 구현될 수 있으나, 이에 제한되는 것은 아니다.
시냅스 어레이(S11 내지 SNM)(220) 각각은 대응되는 제 1 방향 라인을 통해 액손 회로들(A1 내지 AN)(210) 각각으로부터 전달되는 액티베이션 입력을 수신할 수 있고, 저장되어 있던 시냅틱 웨이트와 액티베이션 입력 간의 뉴로모픽 연산의 결과를 출력할 수 있다. 예를 들어, 시냅틱 웨이트와 액티베이션 입력 간의 뉴로모픽 연산은 곱셈 연산(즉, AND 연산)일 수 있으나, 이에 제한되는 것은 아니다. 즉, 시냅틱 웨이트와 액티베이션 입력 간의 뉴로모픽 연산의 결과는 뉴런과 뉴런 사이의 연결 강도에 따라 조절되는 액티베이션의 세기 또는 크기를 모사하기 위한 다른 임의의 적절한 연산에 의해 획득되는 값일 수도 있다.
시냅틱 웨이트와 액티베이션 입력 간의 뉴로모픽 연산에 따라 액손 회로들(A1 내지 AN)(210)로부터 뉴런 회로들(N1 내지 NM)(230)로 전달되는 신호의 크기 또는 세기가 조절될 수 있다. 이와 같이, 시냅스 어레이(S11 내지 SNM)(220)를 이용하여 뉴런과 뉴런 사이의 연결강도에 따라 다음 뉴런으로 전달되는 신호의 크기 또는 세기가 조절되는 동작이 모사될 수 있다.
뉴런 회로들(N1 내지 NM)(230) 각각은 수상돌기를 포함하는 뉴런을 모사하는 회로를 의미할 수 있다. 뉴런의 수상돌기는 다른 뉴런으로부터 신호를 수신하는 기능을 수행하는바, 뉴런 회로들(N1 내지 NM)(230) 각각은 대응되는 제 2 방향 라인을 통해 시냅틱 웨이트와 액티베이션 입력 간의 뉴로모픽 연산의 결과를 수신할 수 있다. 뉴런 회로들(N1 내지 NM)(230) 각각은 뉴로모픽 연산의 결과에 기초하여 스파이크(spike)를 출력할지 여부를 결정할 수 있다. 예를 들어, 뉴런 회로들(N1 내지 NM) 각각은 뉴로모픽 연산의 결과를 누적한 값이 미리 설정된 임계값 이상인 경우 스파이크를 출력할 수 있다. 뉴런 회로들(N1 내지 NM)(230)로부터 출력된 스파이크들은 다음 단의 액손 회로들에 입력 되는 액티베이션에 대응될 수 있다.
한편, 뉴런 회로들(N1 내지 NM)(230)은 시냅스 어레이(S11 내지 SNM)(220)를 기준으로 후단에 위치하는바, 포스트 시냅틱 뉴런 회로들로 지칭될 수 있고, 액손 회로들(A1 내지 AN)(210)은 시냅스 어레이(S11 내지 SNM)(220)를 기준으로 전단에 위치하는바, 프리 시냅틱 뉴런 회로들로 지칭될 수 있다.
도 3은 뉴로모픽 연산의 처리 방법을 설명하기 위한 도면이다.
뉴로모픽 연산을 처리하기 위한 2차원 어레이 회로는 각각의 컬럼 라인 별 전류 합산(current summation) 방식을 이용할 수 있다. 예를 들어, 2차원 어레이 회로는 액손 회로들(A1 내지 AN)로부터 전달된 액티베이션에 의해 시냅스들(S11, S21, S(N-1)1, SN1)을 통해 컬럼 라인(310)을 따라 흐르는 전류를 합산하고, 합산된 전류의 크기 또는 세기가 기 설정된 임계값 이상인 경우 스파이크를 출력한다. 이때, 합산된 전류의 크기 또는 세기를 획득하기 위해서는 ADC(Analog to Digital Converter), DAC(Digital to Analog Converter) 등과 같은 주변 회로가 구비될 필요가 있다. 하지만, ADC 또는 DAC는 전체 회로 구성에 대한 전력 및 면적 측면에서 비효율적인 오버헤드의 요인이 될 수 있다. 따라서, 이하에서는 본 실시예들에 따라, 덧셈 및 곱셈을 반복하는 MAC 연산과 같은 뉴로모픽 연산을 ADC 또는 DAC 대신에, 시간-디지털 컨버터(TDC, time-to-digital converter)에 기반한 회로 디자인을 갖는 집적도 높은 온-칩(on-chip) 시스템을 구현하기 위한 방법에 대해 설명하도록 한다.
도 4는 일 실시예에 따른 인-메모리 프로세싱 디바이스를 도시한 도면이다.
도 4를 참고하면, 인-메모리 프로세싱 디바이스(100)는 뉴로모픽 연산을 위하여 곱셈 및 덧셈을 수행한 결과를 출력하는 회로로 구성될 수 있다.
인-메모리 프로세싱 디바이스(100)는 복수의 메모리 셀들(110), 커패시터(C), 및 시간-디지털 컨버터(TDC)(140)를 포함할 수 있다. 또한, 인-메모리 프로세싱 디바이스(100)는 시간 디지털 컨버터(140)로 전달되는 시간 정보를 생성하기 위한 비교기(130)를 더 포함할 수 있다. 도 4에서는 설명의 편의를 위하여, 인-메모리 프로세싱 디바이스(100)에 구비된 메모리 셀 어레이 중 일부에 해당하는 컬럼(column) 라인(120) 및 로우(row) 라인들에 대해서만 도시되어 있을 뿐이다. 따라서, 인-메모리 프로세싱 디바이스(100)는 복수의 컬럼 라인들 및 로우 라인들이 교차하는 위치에 복수의 메모리 셀들이 배치된 메모리 셀 어레이를 포함할 수 있다.
메모리 셀들(110)은 앞서 설명된 바와 같이, 멤리스터 또는 저항성 메모리 소자로 구현된 것으로서, 가변저항을 갖는 소자일 수 있다. 메모리 셀들(110)에는 입력 신호에 응답하여 각각의 로우 라인을 통해 전압(V1, V2, V3, ..., Vm)이 인가될 수 있다. 예를 들어, 메모리 셀들(110)에는 입력 신호의 입력 전압 신호가 직접 인가되거나, 또는 입력 신호에 의해 공급 전압이 인가될 수도 있다.
메모리 셀들(110) 각각의 일단은 스위치(SW)를 통해 전압을 수신 가능하게 구성될 수 있고, 메모리 셀들(110) 각각의 타단은 커패시터(C) 및 비교기(130)에 연결될 수 있다. 즉, 메모리 셀들(110)을 포함하는 개개의 컬럼 라인에는 커패시터(C) 및 비교기(130)가 연결되어 있다.
메모리 셀들(110) 각각의 저항 값과 메모리 셀들(110) 각각에 인가된 입력 신호의 전압 값에 따라, 컬럼 라인(120)에는 옴의 법칙에 기초하여 계산된 전류 값을 갖는 전류가 흐르게 된다. 따라서, 컬럼 라인(120)을 통해 흐르는 컬럼 전류의 전류 합(current sum)(Io)은, 서로 대응하는 메모리 셀들 및 입력 신호들 간의 MAC 연산의 결과 값에 대응할 수 있다.
입력 신호들(즉, 입력 전압들(V1, V2, V3, ..., Vm)) 각각은 시작 신호(START)에 응답하여 메모리 셀들(110) 각각에 인가될 수 있다. 이를 위하여, 인-메모리 프로세싱 디바이스(100)는 시작 신호(START)에 의해 스위칭되는 복수의 스위치들(101)을 포함할 수 있다. 스위치들(101)의 일단은 메모리 셀들(110)의 일단에 연결될 수 있다. 예를 들어, 제 1 스위치(SW1)는 제 1 메모리 셀(R1)의 일단에 연결되고, ..., 제 m 스위치(SWm)는 제 m 메모리 셀(Rm)의 일단에 연결될 수 있다. 여기서, m은 1이상의 자연수이다. 스위치들(101)의 타단은 입력 신호(즉, 입력 전압들(V1, V2, V3, ..., Vm))에 연결될 수 있다. 한편, 입력 신호는 모든 메모리 셀들(110)에 항상 인가되는 것은 아니고, 입력 신호의 값(입력 전압 값)에 따라 일부 메모리 셀에는 입력 신호가 인가되지 않을 수도 있다. 이때 인가되지 않는 입력 신호란, 입력 전압이 0인 경우를 의미할 수 있으나, 이에 제한되지 않고 특정 전압 값일 수도 있다.
입력 신호들은 일련의 바이너리 값들로 구성되는 입력 비트 시퀀스의 개별 비트 값에 대응할 수 있다. 구체적으로, 인-메모리 프로세싱 디바이스(100)에서 복수의 로우 라인들 각각은 입력 비트 시퀀스의 각 비트 위치에 대응할 수 있다. 어느 비트 위치의 비트 값이 1이면, 해당 비트 위치에 대응하는 로우 라인에는 비트 값 1에 대응하는 전압 값을 갖는 입력 신호가 인가될 수 있다. 이와 달리, 어느 비트 위치의 비트 값이 0이면, 해당 비트 위치에 대응하는 로우 라인에는 비트 값 0에 대응하는 전압 값(예를 들어, 0V 전압)의 입력 신호가 인가될 수 있다.
메모리 셀들(110) 각각의 저항 값은 입력 비트 시퀀스의 각 비트에 곱해지는 비트 값(예를 들어, 웨이트 또는 시냅틱 웨이트)을 가질 수 있다. 메모리 셀들(110)은 가변저항을 갖는 저항성 메모리 소자로 구현될 수 있으므로, 메모리 셀들(110) 중 비트 값 1에 대응하는 메모리 셀은 제 1 저항 값을 갖고, 비트 값 0에 대응하는 메모리 셀은 제 2 저항 값을 가질 수 있다. 또는, 이에 제한되지 않고, 메모리 셀들(110)은 스위칭 소자를 이용하여 서로 다른 저항 값들을 갖는 복수의 저항기들 중에서 해당 비트 값에 대응되는 저항기가 선택되도록 스위칭되는 회로 구성으로 구현될 수도 있다.
한편, 본 실시예에서는 비트 값이 1 또는 0인 경우를 가정하였으나, 이에 제한되지 않고 비트 값은 1 또는 -1이거나, 또는 다른 바이너리 비트 값들이거나 터너리(ternary) 비트 값들 등일 수 있다.
커패시터(C)는 메모리 셀들(110)이 연결되어 있는 컬럼 라인(120)에 연결되고, 컬럼 라인(120)에 흐르는 컬럼 전류의 전류 합(Io)에 대응하는 전압으로 충전될 수 있다.
인-메모리 프로세싱 디바이스(100)에서 커패시터는 각각의 컬럼 라인 별로 연결되어 있고, 커패시터는 해당 컬럼 라인의 전류 합(Io)에 대응하는 전압을 샘플링한다. 따라서, 인-메모리 프로세싱 디바이스(100) 내에서 컬럼 라인 별로 연결된 커패시터들은 해당 컬럼 라인의 전류 합(Io)에 대응하는 샘플링 전압(Vo)(sampling voltage)을 충전하기 위한 샘플링 회로를 구성할 수 있다.
비교기(130)는 커패시터(C)의 일단에 연결될 수 있다. 비교기(130)는 커패시터(C)에 샘플링 전압(Vo)이 충전되는 동안 현재 충전된 전압을 레퍼런스 전압(Vref)(reference voltage)과 비교하는 비교 동작을 수행할 수 있다. 비교기(130)는 예를 들어, 연산 증폭기(OP amp, operational amplifier)로 구현될 수 있다. 연산 증폭기의 한 입력 노드에는 커패시터(C)의 샘플링 전압(Vo)이 입력되고, 다른 입력 노드에는 레퍼런스 전압(Vref)가 입력될 수 있다.
샘플링 전압(Vo)은 커패시터(C)에 연결된 컬럼 라인(120)의 전류 합(Io)에 대응하는 전압으로서, 메모리 셀들(110)의 저항 값들 및 인가된 입력 신호들 간의 MAC 연산 결과에 대응하는 값일 수 있다.
커패시터(C)는 컬럼 라인(120)의 합성 저항 값과 커패시턴스에 의해 결정되는 시상수(time constant; τ=R*C)에 기초하여, 소정의 시간에 걸쳐 충전 전압이 변화될 수 있다. 여기서, 컬럼 라인(120)의 합성 저항 값은 컬럼 라인(120)의 샘플링 전압(Vo) 또는 컬럼 라인(120)의 전류 합(Io)에 의존하는 값이다. 예를 들어, 컬럼 라인(120)의 전류 합(Io)이 상대적으로 크다면(또는, 샘플링 전압(Vo)이 상대적으로 작다면) 커패시터(C)의 시상수(τ)가 작아지기 때문에, 커패시터(C)는 보다 빠르게 충전될 것이다. 반대로, 컬럼 라인(120)의 전류 합(Io)이 상대적으로 작다면(또는, 샘플링 전압(Vo)이 상대적으로 크다면) 커패시터(C)의 시상수(τ)가 커지기 때문에, 커패시터(C)는 보다 느리게 충전될 것이다.
레퍼런스 전압(Vref)은 커패시터(C)에 샘플링 전압(V0)이 충전되는 동안 경과한 전압 변화 시간(예를 들어, 충전 시간)을 파악하기 위한 임의의 전압으로서, 전압 변화 시간(예를 들어, 충전 시간)의 측정 기준이 되는 전압을 의미할 수 있다. 레퍼런스 전압(Vref)은, 커패시터(C), 메모리 셀들(110) 등의 회로 소자 특성들과, 커패시터(C)에 충전된 전압이 레퍼런스 전압(Vref)에 도달하기까지 걸리는 시간 등을 고려하여 임의로 설정될 수 있다. 예를 들어, 커패시터(C), 메모리 셀들(110) 등의 회로 소자 특성들에 기초하여, 커패시터(C)에 충전된 전압이 레퍼런스 전압(Vref)에 도달하기까지 약 40ns가 소요되는 것을 원하는 경우, 레퍼런스 전압(Vref)은 0.1V ~ 0.3V 사이의 값으로 설정될 수 있다. 다만, 이는 설명의 편의를 위한 예시적 수치들일 뿐, 레퍼런스 전압(Vref)은 인-메모리 프로세싱 디바이스(100)의 회로 구성을 고려하여 설정될 수 있는 값이다.
비교기(130)는 샘플링 전압(Vo)의 인가에 의해 커패시터(C)가 점차적으로 충전되면서 커패시터(C)에 현재 충전된 전압이 레퍼런스 전압(Vref)을 초과하는 경우에 응답하여, 종료 신호(STOP)를 출력할 수 있다. 다시 말하면, 비교기(130)는 커패시터(C)에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달하는 경우에 응답하여, 종료 신호(STOP)를 출력할 수 있다.
한편, 비교기(130)는 트리거 펄스(TRIGGER) 신호가 인가된 동안에만 활성화되어(또는 인에이블되어) 비교 동작을 수행할 수 있고, 이에 대해서는 이하 해당 부분에서 상세히 설명하도록 한다.
시간-디지털 컨버터(TDC)(140)는 비교기(130)로부터 종료 신호(STOP)를 수신한 경우, 종료 신호(STOP)가 수신된 시점에서 트리거 펄스(TRIGGER)에 동기화되어 인가된 카운팅 펄스(COUNT)의 카운팅 값(Tout)을 디지털 값으로 출력한다. 시간-디지털 컨버터(TDC)(140)로부터 출력된 디지털 값은, 샘플링 전압(Vo)에 대응하는 양자화 레벨을 나타낼 수 있다.
한편, 도 4에 도시된 메모리 셀들(110), 커패시터(C), 비교기(130) 및 시간-디지털 컨버터(140)는 인-메모리 프로세싱 디바이스(100) 내 메모리 셀 어레이 상의 하나의 출력 라인(즉, 하나의 컬럼 라인)에 대응할 수 있다. 다만, 앞서 설명된 바와 같이, 메모리 셀 어레이에는 복수의 출력 라인들(즉, 복수의 컬럼 라인들)이 구비될 수 있다.
도 5는 일 실시예에 따른 어느 컬럼 라인의 합성 저항 값 및 합산 비트 값 간의 매핑 관계를 설명하기 위한 도면이다.
도 5를 참고하면, 그래프(500)에서 x축은 어느 컬럼 라인에서 계산된 합산 비트 값을 나타낸다. 그래프(500)에서 y축은 해당 컬럼 라인에서의 정규화된(normalized) 합성 저항 값을 나타낸다. 여기서, 해당 컬럼 라인에서의 합성 저항 값은 해당 컬럼 라인에서의 전류 합과 반비례 관계이다.
그래프(500)를 참고하면, 어느 컬럼 라인에서의 합성 저항 값은 해당 컬럼 라인에서의 MAC 연산 결과에 대응하는 합산 비트 값과 반비례 관계에 있음을 알 수 있다. 다시 말하면, 어느 컬럼 라인에서의 전류 합은 해당 컬럼 라인에서의 MAC 연산 결과에 대응하는 합산 비트 값과 비례 관계에 있음을 알 수 있다. 따라서, 이와 같은 상관 관계에 비추어 볼 때, 커패시터(C)에 인가되는 샘플링 전압(Vo)으로부터도 MAC 연산 결과가 추정될 수 있음을 알 수 있다.
도 6은 일 실시예에 따른 인-메모리 프로세싱 디바이스를 설명하기 위한 도면이다.
앞서 도 4에서는 인-메모리 프로세싱 디바이스(100) 내 복수의 입력 라인들(로우 라인들) 및 하나의 출력 라인(컬럼 라인(120))에 대해 설명되었으나, 도 6에서는 복수의 입력 라인들(로우 라인들) 및 복수의 출력 라인들(컬럼 라인들)을 포함하는 메모리 셀 어레이(690)를 구비한 인-메모리 프로세싱 디바이스(60)에 대해 설명하도록 한다.
인-메모리 프로세싱 디바이스(60) 내 메모리 셀 어레이(690)는 개별적으로 입력 신호를 수신 가능한 복수의 입력 라인들(로우 라인들) 및 개별적으로 출력 신호를 출력하는 복수의 출력 라인들(컬럼 라인들)을 포함할 수 있다. 입력 라인들(로우 라인들) 각각은 출력 라인들(컬럼 라인들)에 교차할 수 있다. 도 6에서는 비록, 입력 라인(로우 라인) 및 출력 라인(컬럼 라인)이 서로에 대해 수직으로 교차하는 것으로 도시되었으나, 이에 제한되는 것은 아니다.
입력 라인들(로우 라인들) 각각에는 입력 신호(b1, b2, b3, b4, ..., bj, ..., bm), 및 시작 신호(START)에 의해 입력 신호의 인가를 스위칭하는 스위치가 연결되어 있다. 입력 신호들(b1, b2, b3, b4, ..., bj, ..., bm)은 바이너리 값을 나타내는 입력 전압(또는 입력 전류)에 해당할 수 있으나, 이에 제한되지 않는다. 예를 들어, 비트 값 1을 지시하는 입력 신호는 임의의 전압을 나타낼 수 있고, 비트 값 0을 지시하는 입력 신호는 플로팅 전압(floating voltage)을 나타낼 수 있다.
입력 라인들(로우 라인들)과 출력 라인들(컬럼 라인들)이 교차하는 위치들 각각에는 메모리 셀들(610)이 구비되어 있다.
메모리 셀들(610) 각각은 입력 라인들(로우 라인들) 중 해당 메모리 셀이 배치된 입력 라인(로우 라인)을 통해 입력 신호(입력 전압)을 수신하도록 구성될 수 있다. 예를 들어, 제 j 입력 라인(691)을 따라 배치된 메모리 셀들은 제 j 입력 신호(bj)를 시작 신호(START)에 응답하여 수신하도록 구성될 수 있다.
인-메모리 프로세싱 디바이스(60) 내 프로세싱 회로(600)는 출력 라인들(컬럼 라인들) 각각의 일단에 연결된 커패시터들(620) 및 비교기들(640)과, 시간-디지털 컨버터(TDC)(650) 및 출력부(660)를 포함할 수 있다.
커패시터들(620)은 출력 라인(컬럼 라인)마다 개별적으로 배치되고, 어느 출력 라인(컬럼 라인)에 연결된 커패시터는 해당 출력 라인(컬럼 라인)의 전류 합에 대응하는 샘플링 전압을 충전하는 샘플링 회로를 구성한다.
커패시터들(620)은 샘플링 전압의 인가에 의해 전하량이 점차적으로 증가되면서 충전될 수 있다. 예를 들어, 제 i 출력 라인(제 i 컬럼 라인)(692)에 배치된 커패시터(621)는, 제 i 출력 라인(제 i 컬럼 라인)(692)의 메모리 셀들의 저항 값들과 입력 신호들의 입력 전압들에 기초한 전류 합에 대응하는 전압(즉, 샘플링 전압)이 인가됨으로써 충전될 수 있다.
한편, 출력 라인들(컬럼 라인들)에 연결된 커패시터들(620)은 샘플링 회로를 구성하고, 서로 동일한 커패시턴스를 가질 수 있다. 따라서, 커패시터들(620) 간의 시상수의 차이는 출력 라인들(컬럼 라인들) 각각의 합성 저항 값의 차이, 즉 출력 라인들(컬럼 라인들) 각각의 전류 합의 차이에 의존할 수 있다.
비교기들(640)은 출력 라인(컬럼 라인)마다 개별적으로 배치될 수 있다. 비교기들(640) 각각은 해당 출력 라인(컬럼 라인)의 커패시터들(620) 각각에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달하였는지 여부를 결정한다. 비교기들(640) 각각은, 연결된 커패시터들(620) 각각에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달한 것으로 비교된 경우, 도달한 시점에서 종료 신호(STOP)를 시간-디지털 컨버터(TDC)(650)로 출력한다.
비교기들(640)은 비교 동작의 개시 신호로서 트리거 펄스(TRIGGER)를 수신한다. 즉, 비교기들(640)은 제어신호 생성기(630)로부터 트리거 펄스(TRIGGER)를 수신한 경우에만 활성화(인에이블)되고, 트리거 펄스(TRIGGER)를 수신하지 않은 경우에는 비활성화(디스에이블)된다. 트리거 펄스(TRIGGER)의 수신은, 하이(high)를 나타내는 펄스 신호를 수신한 것을 의미하나, 반드시 이에 제한되는 것은 아니다.
제어신호 생성기(630)는 메모리 셀 어레이(690)로의 입력 신호의 인가를 지시하는 시작 신호(START)가 인가되면, 트리거 펄스(TRIGGER) 및 카운팅 펄스(COUNT)를 생성할 수 있다. 트리거 펄스(TRIGGER)는 샘플링 회로 내 커패시터들(620)의 충전 시간에 따라 구분된 양자화 레벨들(quantization levels) 중 소정의 양자화 레벨(quantization level)에 대응하는 타이밍에 생성될 수 있다. 양자화 레벨들에 대해서는 도 7 및 도 8을 참고하여 상세히 설명하도록 한다. 카운팅 펄스(COUNT)는 트리거 펄스(TRIGGER)의 인가가 개시된 경우, 트리거 펄스(TRIGGER)에 동기화되어 생성된 펄스 신호로서, 트리거 펄스(TRIGGER)가 인가된 시간을 카운팅하기 위한 신호이다. 카운팅 펄스(COUNT)는 시간-디지털 컨버터(TDC)(650)로 제공된다.
시간-디지털 컨버터(TDC)(650)는 어느 커패시터에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달한 시점에서 시간-디지털 컨버팅을 수행한다.
구체적으로, 시간-디지털 컨버터(TDC)(650)는 출력 라인(컬럼 라인)마다 연결된 비교기들(640) 각각으로부터, 종료 신호(STOP)를 수신할 수 있다. 앞서 설명된 바와 같이, 종료 신호(STOP)는 어느 커패시터에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달한 것을 나타내는 신호이다. 시간-디지털 컨버터(TDC)(650)는 종료 신호(STOP)가 수신된 시점에서의 카운팅 펄스(COUNT)의 카운팅 값을 래치(latch)한다.
예를 들어, 제 i 출력 라인(제 i 컬럼 라인)(692)의 커패시터(621)에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달한 경우, 제 i 출력 라인(제 i 컬럼 라인)(692)의 비교기(641)는 종료 신호(STOPi)를 시간-디지털 컨버터(TDC)(650)로 출력한다. 시간-디지털 컨버터(TDC)(650)는 종료 신호(STOPi)가 수신되면, 종료 신호(STOP)가 수신된 시점에서의 카운팅 펄스(COUNT)의 카운팅 값(Tout, i)을 래치한다.
출력부(660)는 시간-디지털 컨버터(TDC)(650)로부터 출력된 어느 출력 라인(컬럼 라인)에 대한 카운팅 값을 디지털 값(OUT)으로 출력할 수 있다. 구체적으로, 출력부(660)는 미리 설정된 양자화 레벨들 중 카운팅 값에 대응하는 양자화 레벨을 출력할 수 있다. 여기서, 출력된 양자화 레벨은 샘플링 전압으로부터 유래된 값으로서, 결국 해당 출력 라인(컬럼 라인)의 MAC 연산 결과에 대응한다.
시간-디지털 컨버터(TDC)(650)는 각각의 출력 라인마다 카운팅 값을 출력하고, 출력부(350)는 각각의 출력 라인에 대한 카운팅 값을 양자화 레벨로 출력한다. 한편, 앞서 언급된 바와 같이, 양자화 레벨들에 대해서는 도 7 및 도 8을 참고하여 상세히 설명하도록 한다.
도 7은 일 실시예에 따라 커패시터에 전압이 충전되는 시간에 따라 양자화 레벨들의 시간 구간들을 설정하는 것을 설명하기 위한 도면이다.
도 7을 참고하면, 그래프(700)는 인-메모리 프로세싱 디바이스 내에 구비된 샘플링 회로를 구성하는 어느 커패시터의 충전 전압 변화를 나타낸다. 그래프(700)에서 x축은 커패시터에 샘플링 전압의 충전이 시작된 후 경과된 시간을 나타내고, y축은 시간 경과에 따른 커패시터에 충전 전압의 변화를 나타낸다.
레퍼런스 전압(Vref)은 비교기에서 커패시터의 현재 충전된 전압과의 비교를 위하여 입력되는 전압이다.
인-메모리 프로세싱 디바이스는 k 비트 해상도(k는 자연수)의 연산 결과를 제공할 수 있는 디바이스인 것으로 가정할 수 있다. 또한, k 비트 해상도는 n개의(n은 자연수) 양자화 레벨들을 갖는 것으로 가정할 수 있다.
앞서 설명된 바와 같이, 어느 컬럼 라인에서의 전류 합은, 대응하는 샘플링 전압으로서 커패시터에 인가될 수 있다. 샘플링 회로 내에 구비된 커패시터들은 모두 커패시턴스가 동일한 것으로 설명되었으므로, 커패시터들 간의 시상수(τ=R*C) 차이를 초래하는 요인은 각 커패시터가 연결된 컬럼 라인의 저항 값(즉, 합성 저항 값)뿐이라는 점을 알 수 있다. 옴의 법칙에 기초하여, 컬럼 라인의 합성 저항 값과 그 컬럼 라인을 따라 흐르는 컬럼 전류의 세기(즉, 전류 합)는 반비례 관계에 있다. 따라서, 커패시터들 간의 시상수 차이는 컬럼 라인들 각각의 전류 합에 의존한다는 점이 도출될 수 있다. 예를 들어, 컬럼 라인의 전류 합이 상대적으로 크다면(또는, 샘플링 전압이 상대적으로 작다면) 커패시터의 시상수(τ)가 작아지기 때문에, 커패시터는 레퍼런스 전압(Vref)까지 보다 빠르게 충전될 것이다. 반대로, 컬럼 라인의 전류 합이 상대적으로 작다면(또는, 샘플링 전압이 상대적으로 크다면) 커패시터의 시상수(τ)가 커지기 때문에, 커패시터는 레퍼런스 전압(Vref)까지 보다 느리게 충전될 것이다.
어느 컬럼 라인에서의 전류 합은 그 컬럼 라인에서의 MAC 연산 결과에 대응하는, 상관 관계가 존재한다. 따라서, 이와 같은 상관 관계에 기초하여, 커패시터들 간의 시상수 차이는 결국 MAC 연산 결과의 차이에 대응하는 것으로 추정될 수 있다.
k 비트 해상도를 위하여, 커패시터에 샘플링 전압이 충전되기까지 충전 전압이 변화되는 총 시간 구간은, n개의 서브-시간 구간들로 양자화될 수 있다. n개의 서브-시간 구간들 각각은 n개의 양자화 레벨들 각각에 대응한다.
구체적으로, 컬럼 라인(CLi)에 m개의 메모리 셀들(710)이 연결되어 있는 경우에 대해 설명하도록 한다. 메모리 셀들(710) 각각은 가변저항을 가질 수 있고, 메모리 셀들(710) 각각은 제 1 저항 값(R1_max, R2_max, ..., Rm_max) 또는 제 2 저항 값(R1_min, R2_min, ..., Rm_min) 중 어느 하나를 가질 수 있고, 제 1 저항 값은 제 2 저항 값보다 큰 것으로 가정한다.
컬럼 라인(CLi)에서 m개의 메모리 셀들(710) 각각의 저항 값들이 모두 제 1 저항 값(R1_max, R2_max, ..., Rm_max)을 갖는 경우, m개의 메모리 셀들(710)의 합성 저항 값은 최대이다. 반대로, 컬럼 라인(CLi)에서 m개의 메모리 셀들(710) 각각의 저항 값들이 모두 제 2 저항 값(R1_min, R2_min, ..., Rm_min)을 갖는 경우, m개의 메모리 셀들(710)의 합성 저항 값은 최소이다.
따라서, 컬럼 라인(CLi)에 대한 합성 저항 값은, 메모리 셀들(710)이 모두 제 1 저항 값(R1_max, R2_max, ..., Rm_max)을 갖는 경우로부터 계산된 최대 합성 저항 값과 제 2 저항 값(R1_min, R2_min, ..., Rm_min)을 갖는 경우로부터 계산된 최소 합성 저항 값 사이에 분포하게 된다.
컬럼 라인(CLi)이 최대 합성 저항 값을 갖는 경우는, 컬럼 라인(CLi)에 최소 전류 합을 갖는 컬럼 전류가 흐르는 경우에 대응한다. 반대로, 컬럼 라인(CLi)이 최소 합성 저항 값을 갖는 경우는, 컬럼 라인(CLi)에 최대 전류 합을 갖는 컬럼 전류가 흐르는 경우에 대응한다. 이와 같은 원리에 착안하여, n개의 양자화 레벨들 각각에 대응하는 서브-시간 구간들이 설정될 수 있다.
서브-시간 구간(701)은 컬럼 라인(CLi)에 최소 전류 합을 갖는 컬럼 전류가 흐르는 경우에 대응할 수 있고, 서브-시간 구간(702)은 컬럼 라인(CLi)에 최대 전류 합을 갖는 컬럼 전류가 흐르는 경우에 대응할 수 있다. 예를 들어, 서브-시간 구간(701)은 k 비트 해상도의 각 비트 값이 모두 0인 양자화 레벨에 대응할 수 있고, 서브-시간 구간(702)은 k 비트 해상도의 각 비트 값이 모두 1인 양자화 레벨에 대응할 수 있다.
서브-시간 구간(701)과 서브-시간 구간(702) 사이의 시간 구간은, 나머지 양자화 레벨들에 대응하는 서브-시간 구간들을 포함하고, 나머지 양자화 레벨들의 개수에 따라 동일한 간격들을 갖도록 구분될 수 있다. 다만, 이에 제한되지 않고, 나머지 양자화 레벨들에 대응하는 서브-시간 구간들의 간격들은 동일하지 않도록 구분될 수도 있다. 예를 들어, MAC 연산 결과에 대한 일반적 시뮬레이션 결과에 따르면, 대부분의 MAC 연산 결과의 값들은 가우시안 분포에 의해 정규화되는 것으로 획득될 수 있다. 따라서, 가우시안 분포에 기초하여, 양자화 레벨들에 대응하는 서브-시간 구간들 간격들이 서로 다르게 설정될 수도 있다.
도 7을 참고하면, 그래프(700)에서 서브-시간 구간(701)부터 서브-시간 구간(702)으로 갈수록 양자화 레벨이 1 레벨씩 증가하는 것으로 설정될 수 있다.
다만, 이에 제한되지 않고, 서브-시간 구간(701)부터 서브-시간 구간(702)으로 갈수록 양자화 레벨이 1 레벨씩 감소하는 것으로도 설정될 수 있다. 예를 들어, 도 7에서는 최대 합성 저항을 갖는 경우가 최소 양자화 레벨에 대응하고, 최소 합성 저항을 갖는 경우가 최대 양자화 레벨에 대응하는 것으로 설명되었으나, 그 반대로도 설정될 수도 있다. 즉, 메모리 셀들(710) 각각의 가변저항 값들(제 1 저항 값 및 제 2 저항 값) 각각이 어떠한 논리 값들을 표현할 것인지에 따라 각각의 시간 구간이 나타내는 양자화 레벨이 달라질 수 있다.
도 8은 일 실시예에 따라 비교기에 트리거 펄스(TRIGGER)를 인가하는 타이밍을 설명하기 위한 도면이다.
도 8을 참고하면, 트리거 펄스(TRIGGER)는 소정의 양자화 레벨에 대응하는 타이밍(시점)(810)부터 생성될 수 있다. 여기서, 소정의 양자화 레벨은, 양자화 레벨들 중 최소 양자화 레벨보다 1 레벨 큰 양자화 레벨일 수 있다. 다만, 이에 제한되지 않고, 트리거 펄스(TRIGGER)는 양자화 레벨에 대응하는 시점을 고려하지 않고, 커패시터가 충전을 시작한 이후의 소정의 경과 시점(예를 들어, 40ns 이후)부터 생성될 수도 있다.
트리거 펄스(TRIGGER)는 소정의 양자화 레벨에 대응하는 타이밍(시점)(810)부터 비교기들에 인가되므로, "0000"과 같은 최소 양자화 레벨에서 비교기들이 동작됨에 따른 전력 소모가 감소될 수 있다. 트리거 펄스(TRIGGER)는 최대 양자화 레벨(예를 들어, "1111")보다 1 레벨 작은 양자화 레벨(예를 들어, "1110")에 대응하는 시간 구간까지만 비교기에 인가되는 것으로 생성될 수 있고, 이로써 추가적인 전력 소모의 감소가 도모될 수 있다.
한편, 트리거 펄스(TRIGGER)의 펄스 폭은 양자화 레벨들 각각에 대응하는 서브-시간 구간의 간격 이하로 설정될 수 있다.
인-메모리 프로세싱 디바이스 내에서 비교기는 래치 비교기(latched comparator) 타입으로 구현될 수 있다. 따라서, 비교기는 트리거 펄스(TRIGGER)의 하강 에지에서 비교 결과를 출력할 수 있다. 예를 들어, 시점(820)에 커패시터의 충전 전압이 레퍼런스 전압(Vref)에 도달한 경우, 비교기는 시점(820)에 대응하는 트리거 펄스(TRIGGER)의 하강 에지에서 비교 결과를 나타내는 종료 신호(STOP)를 출력할 수 있다.
종료 신호(STOP)가 출력된 시점은 시간-디지털 컨버팅에 의해 양자화 레벨("1010")로 출력될 수 있다.
어느 컬럼 라인의 커패시터에 인가된 샘플링 전압(또는 그 컬럼 라인의 전류 합)에 따라 커패시터의 시상수가 달라지고, 이에 따라 커패시터의 충전 전압이 레퍼런스 전압(Vref)에 도달하는 시점들도 달라진다. 도 8에 도시된 바와 같이, 4비트 양자화 레벨들의 서브-시간 구간들(830)은, 커패시터의 충전 전압이 레퍼런스 전압(Vref)에 도달하는 시점들에 대응하는 것으로 설정될 수 있다.
도 9는 일 실시예에 따라 인-메모리 프로세싱 디바이스에서 수행되는 시간-디지털 컨버팅을 설명하기 위한 도면이다.
도 9를 참고하면, 제어신호 생성기(910)는 양자화 레벨 결정부(711), 펄스 생성기(712) 및 카운터(713)를 포함한다. 펄스 생성기(712)는 비교기들(720)의 비교 동작을 개시시키기 위한 트리거 펄스(TRIGGER)를 생성한다. 카운터(713)는 비교기들(720) 각각으로부터 제공된 종료 신호(STOP)가 수신된 시점을 식별하기 위한 카운팅 펄스(COUNT)를 생성한다. 트리거 펄스(TRIGGER)와 카운팅 펄스(COUNT)의 인가는 서로 동기화되고, 이에 따라 트리거 펄스(TRIGGER)가 비교기들(720)로 인가되는 타이밍에 카운팅 펄스(COUNT)도 시간-디지털 컨버터(TDC)(730)로 인가될 수 있다.
트리거 펄스(TRIGGER)가 생성되는 타이밍은 양자화 레벨 결정부(711)에 의해 결정될 수 있다. 양자화 레벨 결정부(711)는 설정될 양자화 레벨들의 총 개수(즉, 디지털 값의 비트 수)와, 샘플링 전압을 충전하는 커패시터의 소자 특성(예를 들어, 커패시턴스, 시상수), 각각의 컬럼 라인에 연결된 메모리 셀들의 저항 값들 등을 고려하여, 트리거 펄스(TRIGGER)가 생성되는 타이밍을 결정할 수 있다.
예를 들어, 양자화 레벨 결정부(711)는 앞서 도 7 및 도 8에서 설명된 방식들에 기초하여 트리거 펄스(TRIGGER)가 생성되는 타이밍을 결정할 수 있다. 구체적으로, 양자화 레벨 결정부(711)는 트리거 펄스(TRIGGER)가 소정의 양자화 레벨(즉, 최소 양자화 레벨보다 1 레벨 큰 양자화 레벨)에 대응하는 타이밍(시점)(도 8의 810)부터 생성되도록, 펄스 생성기(912)를 제어할 수 있다. 나아가서, 양자화 레벨 결정부(711)는 트리거 펄스(TRIGGER)가 최대 양자화 레벨보다 1 레벨 작은 양자화 레벨에 대응하는 시간 구간까지만 생성되도록, 펄스 생성기(912)를 제어할 수 있다. 한편, 카운터(913)는 트리거 펄스(TRIGGER)가 인가되는 동안에만 카운팅 펄스(COUNT)를 생성할 수 있다.
비교기들(920)은 비교 동작의 개시 신호로서 트리거 펄스(TRIGGER)를 수신하고, 비교기들(920) 각각에 연결된 커패시터에 현재 충전된 전압과 레퍼런스 전압을 비교한다. 비교기들(920) 각각은 비교기들(920) 각각에 연결된 커패시터에 현재 충전된 전압이 레퍼런스 전압에 도달한 것으로 검출된 경우, 도달한 시점에서 종료 신호(STOP)를 시간-디지털 컨버터(TDC)(930)로 출력한다.
비교기들(920) 각각은 래치 비교기(latched comparator) 타입으로 구현될 수 있다. 따라서, 비교기들(920)은 트리거 펄스(TRIGGER)의 하강 에지에서 비교 결과를 출력할 수 있다. 예를 들어, 비교기 s가 어느 시점에서 커패시터의 충전 전압이 레퍼런스 전압에 도달한 것을 검출한 경우, 비교기 s는 해당 시점에 대응하는 트리거 펄스(TRIGGER)의 하강 에지에서 종료 신호(STOP)를 비교기 s에 연결된 시간-디지털 컨버터(TDC)(930)의 플립플롭으로 출력할 수 있다.
한편, 비교기들(920) 중에서 종료 신호(STOP)가 출력된 비교기는 종료 신호(STOP)의 출력이 완료되었음을 나타내는 신호(done)가 피드백될 수 있고, 신호(done)가 피드백된 비교기는 비활성화(디스에이블)될 수 있다.
시간-디지털 컨버터(TDC)(930)는 비교기들(920) 각각에 연결된 플립플롭들(935)을 포함한다. 플립플롭들(935)은 카운터(913)로부터 수신된 카운팅 펄스(COUNT)에 의해 활성화(인에이블)될 수 있다.
플립플롭들(935) 각각은 카운팅 펄스(COUNT)가 인가되고 있는 동안 비교기들(920) 각각으로부터 종료 신호(STOP)가 수신되면 종료 신호(STOP)가 수신된 시점에서의 현재 카운팅 값(Tout)을 래치(latch)한다. 예를 들어, 비교기 s에 연결된 플립플롭이 카운팅 펄스(COUNT)가 인가되고 있는 동안 비교기 s로부터 종료 신호(STOP)를 수신하면, 플립플롭은 카운팅 펄스(COUNT)의 현재 카운팅 값(Tout_s)을 출력한다.
이와 같이, 시간-디지털 컨버터(TDC)(930) 내 구비된 플립플롭들(935) 각각은 종료 신호(STOP)의 수신 시점에 대응하는 카운팅 값(Tout)을 개별적으로 출력함으로써, 메모리 셀 어레이의 컬럼 라인들(출력 라인들) 각각에 대한 시간-디지털 컨버팅을 수행할 수 있다. 앞서 설명된 바와 같이, 프로세싱 회로(600)는 각 컬럼 라인(출력 라인) 별 카운팅 값(Tout)에 대응하는 양자화 레벨의 디지털 값을 매핑하고, 각 컬럼 라인(출력 라인) 별 매핑된 양자화 레벨의 디지털 값(예를 들어, k비트 해상도)을 출력할 수 있다.
도 10은 일 실시예에 따라 시간-디지털 컨버팅을 통해 컬럼 라인(출력 라인) 별 카운팅 값을 출력하는 것을 설명하기 위한 도면이다.
도 10을 참고하면, 시점들(ta, tb 및 tc) 각각은 커패시터들(Cx, Cy, Cz) 각각에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달한 시점을 나타낸다. 빠른 시간의 순서대로 나열하면, 시점(tb), 시점(ta) 및 시점(tc)의 순서이다.
컬럼 라인들(1001, 1002, 1003)에는 전류 합(Icol_x, Icol_y, Icol_z)을 갖는 컬럼 전류가 각각 흐르고, 전류 합(Icol_x, Icol_y, Icol_z)에 대응하는 샘플링 전압이 커패시터(Cx, Cy, Cz)에 각각 인가된다. 비교기들(1021, 1022, 1023)에는 동일한 시점부터 트리거 펄스(TRIGGER)가 인가되고, 트리거 펄스(TRIGGER)가 인가된 시점부터 비교기들(1021, 1022, 1023)은 각각의 커패시터들(Cx, Cy, Cz)에 현재 충전된 전압과 레퍼런스 전압(Vref)을 비교를 수행한다. 이때, 비교기들(1021, 1022, 1023)은 래치 비교기일 수 있고, 이에 따라 비교기들(1021, 1022, 1023) 각각은 트리거 펄스(TRIGGER)의 하강 에지마다 비교 동작을 수행할 수 있다.
먼저, 시점(tb)에서 비교기(1022)는 커패시터(Cy)에 현재 충전된 전압이 레퍼런스 전압(Vref)에 도달한 것으로 판단하고, 종료 신호(STOP @tb)를 시간-디지털 컨버터(TDC)(1030)의 플립플롭(1032)로 출력한다. 한편, 종료 신호(STOP @tb)의 출력이 완료된 비교기(1022)는 비활성화(디스에이블)될 수 있다.
시간-디지털 컨버터(TDC)(1030)는 트리거 펄스(TRIGGER)의 인가에 동기화되어 카운팅 펄스(COUNT)가 인가된다. 플립플롭(1032)은 종료 신호(STOP @tb)가 수신된 시점(tb)에서의 카운팅 펄스(COUNT)의 카운팅 값(Tout @tb)을 래치한다. 이로써, 컬럼 라인들(1001, 1002, 1003) 중 컬럼 라인(1002)에 대한 시간-디지털 컨버팅이 먼저 완료된다. 한편, 카운팅 값(Tout @tb)은 매핑된 양자화 레벨의 디지털 값으로 출력될 수 있다.
다음으로, 시점(ta)에서 비교기(1021)는 종료 신호(STOP @ta)를 플립플롭(1031)로 출력한다. 종료 신호(STOP @ta)의 출력이 완료된 비교기(1021)는 비활성화(디스에이블)될 수 있다. 플립플롭(1031)은 종료 신호(STOP @ta)가 수신된 시점(ta)에서의 카운팅 펄스(COUNT)의 카운팅 값(Tout @ta)을 래치한다. 카운팅 값(Tout @ta)은 카운팅 값(Tout @tb)와는 다른 값에 해당하므로, 카운팅 값(Tout @ta)에 매핑된 양자화 레벨의 디지털 값은 카운팅 값(Tout @tb)은 매핑된 양자화 레벨의 디지털 값과 다를 수 있다. 다만, 서로 다른 시점들(ta, tb)에서 카운팅 값들(Tout @ta, Tout @tb)이 출력되었다 할지라도, 서로 다른 시점들(ta, tb)이 동일한 양자화 레벨에 대응하는 동일한 서브-시간 구간에 속한 경우에는 동일한 양자화 레벨의 디지털 값으로 시간-디지털 컨버팅될 수 있다.
시점(tc)에서 비교기(1023)는 종료 신호(STOP @tc)를 플립플롭(1033)로 출력한다. 종료 신호(STOP @tc)의 출력이 완료된 비교기(1021)는 비활성화(디스에이블)될 수 있다. 플립플롭(1033)은 종료 신호(STOP @tc)가 수신된 시점(tc)에서의 카운팅 펄스(COUNT)의 카운팅 값(Tout @tc)을 래치한다.
인-메모리 프로세싱 디바이스 내의 프로세싱 회로는 상술한 바와 같은 시간-디지털 컨버팅을 통해, 각 컬럼 라인(출력 라인) 별 MAC 연산을 수행할 수 있다. 본 실시예들에 따른 인-메모리 프로세싱 디바이스는 메모리와 연산부가 분리된 폰 노이만(Von Neumann) 구조와 달리 데이터 전달의 속도 및 전력소모가 개선될 수 있다. 또한, 인-메모리 프로세싱 디바이스는 개별 컬럼 라인들에 ADC들(analog-to-digital converters)를 구비할 필요가 없으므로, ADC들이 구비된 아키텍쳐에 비해 소모 전력 및 회로에서 차지하는 면적이 감소될 수 있다.
한편, 설명된 실시예들에서는, 입력 신호의 전압 값 및 메모리 셀의 저항 값이 온(ON)에 해당하는 값(또는 논리 1) 및 오프(OFF)에 해당하는 값(또는 논리 0)과 같이 바이너리 값을 가지는 것을 가정하여 설명하였으나, 본 실시예들이 이에 제한하는 것은 아니다. 입력 신호의 전압 값 및 메모리 셀의 저항 값은 다중 상태(multi-state)로 구별되는 값을 가질 수도 있다. 예를 들어, 한 입력 라인(로우 라인)에 2비트의 값이 입력되는 경우, "00"에 대해서는 입력 신호(입력 전압)가 플로팅(floating)되고, "01"에 대해서는 제 1 전압 값, "10"에 대해서는 제 1 전압 값보다 큰 제 2 전압 값, "11"에 대해서는 제 2 전압 값보다 큰 제 3 전압 값이 입력 신호로서 할당될 수 있다. 또한, 메모리 셀이 2비트의 값을 지시하는 경우, 메모리 셀에 "00"에 대해서는 제 1 저항 값, "01"에 대해서는 제 1 저항 값보다 큰 제 2 저항 값, "10"에 대해서는 제 3 저항 값", "11"에 대해서는 제 4 저항 값이 할당될 수도 있다. 각 입력 라인(로우 라인)에 수신되는 입력 신호 및 각 메모리 셀이 2비트 다중 상태를 지시하는 것으로 제한되는 것은 아니고, 그 이상의 비트에 대응하는 다중 상태를 지시할 수도 있고, 바이너리 체계 외 다른 체계에 따른 값이 할당될 수도 있다.
도 11은 일 실시예에 따라 인-메모리 프로세싱을 수행하는 방법의 흐름도이다. 도 11을 참고하면, 인-메모리 프로세싱의 수행 방법은 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 11의 방법에도 적용될 수 있다.
1101 단계에서, 프로세싱 회로(600)의 제어신호 생성기(630)는 제어신호(트리거 펄스(TRIGGER) 및 카운팅 펄스(COUNT))를 리셋한다.
1102 단계에서, 메모리 셀 어레이(690)의 각각의 로우 라인을 통해 복수의 메모리 셀들(610)에 입력 신호가 인가된다.
1103 단계에서, 프로세싱 회로(600)의 커패시터들(620) 각각은 메모리 셀 어레이(690)의 각각의 컬럼 라인을 통해 흐르는 컬럼 전류의 전류 합에 대응하는 샘플링 전압을 충전한다.
1104 단계에서, 프로세싱 회로(600)의 제어신호 생성기(630)는 설정된 양자화 레벨에 기초하여, 제어신호(트리거 펄스(TRIGGER) 및 카운팅 펄스(COUNT))를 생성한다. 트리거 펄스(TRIGGER)는 비교기들(640)로 인가되고, 카운팅 펄스(COUNT)는 시간-디지털 컨버터(TDC)(650)로 인가된다.
1105 단계에서, 프로세싱 회로(600)의 비교기들(640)은 트리거 펄스(TRIGGER)가 인가되는 동안, 각각에 연결된 커패시터들(620)에 현재 충전된 전압(Vc)과 레퍼런스 전압(Vref)을 비교한다.
1106 단계에서, 비교기들(640) 각각은 커패시터들(620)에 현재 충전된 전압(Vc)이 레퍼런스 전압(Vref)에 도달하였는지 여부를 판단한다. 현재 충전된 전압(Vc)이 레퍼런스 전압(Vref)에 도달한 것으로 결정한 비교기는 종료 신호(STOP)를 시간-디지털 컨버터(TDC)(650)로 출력하고, 1107 단계가 수행된다. 그렇지 않으면, 1106 단계가 다시 수행된다.
1107 단계에서, 종료 신호(STOP)를 출력한 비교기는 비활성화(디스에이블)된다.
1108 단계에서, 프로세싱 회로(600)의 시간-디지털 컨버터(TDC)(650)는 카운팅 펄스(COUNT)의 현재 카운팅 값을 출력하는 시간-디지털 컨버팅을 수행한다.
1109 단계에서, 프로세싱 회로(600)의 출력부(660)는 카운팅 값에 대응하는 양자화 레벨의 디지털 값을 출력한다.
도 12는 일 실시예에 따른 컴퓨팅 장치를 나타내는 블록도이다.
도 12를 참고하면, 컴퓨팅 장치(1200)는 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 컴퓨팅 장치(1200)가 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 컴퓨팅 장치(1200)는 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
컴퓨팅 장치(1200)는 호스트 프로세서(1210), RAM(1220), 인-메모리 프로세싱 디바이스(1230), 메모리 디바이스(1240), 센서 모듈(1250) 및 통신 모듈(1260)을 포함할 수 있다. 컴퓨팅 장치(1200)는 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 컴퓨팅 장치(1200)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다. 인-메모리 프로세싱 디바이스(1230)는 앞서 도면들에서 설명된 인-메모리 프로세싱 디바이스를 포함하는 장치로서, 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 뉴럴 네트워크 장치에 해당할 수 있다.
호스트 프로세서(1210)는 컴퓨팅 장치(1200)의 전반적인 동작을 제어한다. 호스트 프로세서(1210)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(multi-core)을 포함할 수 있다. 호스트 프로세서(1210)는 메모리 디바이스(1240)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 호스트 프로세서(1210)는 메모리 디바이스(1240)에 저장된 프로그램들을 실행함으로써, 인-메모리 프로세싱 디바이스(1230)의 기능을 제어할 수 있다. 호스트 프로세서(1210)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(1220)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리 디바이스(1240)에 저장된 프로그램들 및/또는 데이터는 호스트 프로세서(1210)의 제어 또는 부팅 코드에 따라 RAM(1220)에 일시적으로 저장될 수 있다. RAM(1220)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
인-메모리 프로세싱 디바이스(1230)는 앞서 도면들에서 설명된 뉴로모픽 연산, 예를 들어 MAC 연산을 수행하고, MAC 연산 결과를 출력할 수 있다. 다만, 인-메모리 프로세싱 디바이스(1230)는 이 밖에도 다양한 인-메모리 컴퓨팅을 수행할 수 있다.
메모리 디바이스(1240)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리 디바이스(1240)는 인-메모리 프로세싱 디바이스(1230)의 연산 수행 과정에 필요한 데이터들(예를 들어, 입력 신호 데이터, 웨이트 데이터 등)과 연산 결과 데이터(예를 들어, MAC 연산 결과(즉, 양자화 레벨 데이터) 등)을 저장할 수 있다.
메모리 디바이스(1240)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리 디바이스(1240)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리 디바이스(1240)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 컴퓨팅 장치(1200)가 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1250)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1250)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 변환된 데이터를 인-메모리 프로세싱 디바이스(1230)에 입력 데이터로서 제공할 수도 있다. 예를 들어, 센서 모듈(1250)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 인-메모리 프로세싱 디바이스(1230)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1250)은 다양한 종류의 데이터를 인-메모리 프로세싱 디바이스(1230)에 제공할 수 있다.
통신 모듈(1260)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1260)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution), 5G (5th Generation) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
도 13은 뉴럴 네트워크의 일 예를 설명하기 위한 도면이다.
도 13을 참조하면, 뉴럴 네트워크(1300)는 딥 뉴럴 네트워크(DNN, deep neural network)의 예시에 해당할 수 있다. 설명의 편의를 위해 뉴럴 네트워크(1300)가 2개의 히든 레이어들(hidden layers)을 포함하는 것으로 도시되었으나, 다양한 수의 히든 레이어들을 포함할 수 있다. 또한, 도 13에서 뉴럴 네트워크(1300)는 입력 데이터를 수신하기 위한 별도의 입력 레이어(input layer)(1310)를 포함하는 것으로 도시되었으나, 입력 데이터가 히든 레이어에 직접 입력될 수 있다.
뉴럴 네트워크(1300)에서 출력 레이어(output layer)를 제외한 레이어들의 인공 노드들은 출력 신호를 전송하기 위한 링크들을 통해 다음 레이어의 인공 노드들과 연결될 수 있다. 이들 링크를 통해 인공 노드에는 이전 레이어에 포함된 인공 노드들의 가중된 입력들(weighted inputs)에 관한 활성 함수(activation function)의 출력이 입력될 수 있다. 가중된 입력은 인공 노드의 입력(노드값)에 웨이트(weight)가 곱해진 것으로, 입력은 액손 값들에 해당하고, 웨이트는 시냅틱 웨이트들에 해당한다. 웨이트는 뉴럴 네트워크(1300)의 파라미터로 지칭될 수 있다. 활성 함수는 시그모이드(sigmoid), 하이퍼볼릭 탄젠트(hyperbolic tangent; tanh) 및 렐루(rectified linear unit; ReLU)를 포함할 수 있고, 활성 함수에 의해 뉴럴 네트워크(1300)에 비선형성이 형성될 수 있다.
딥러닝 알고리즘 구동을 위한 인-메모리 프로세싱(in-memory processing) 또는 인-메모리 컴퓨팅(in-memory computing)에 앞서 도면들에서 설명된 인-메모리 프로세싱 디바이스가 이용될 수 있다. 예를 들어, 뉴럴 네트워크(1300)의 노드(1321) 간에 전달되는 가중된 입력의 산출은 MAC 연산으로 구성될 수 있다. 이러한 뉴럴 네트워크(1300)에 포함된 임의의 한 노드(1321)의 출력은 아래 수학식 1과 같이 나타낼 수 있다.
Figure pat00001
수학식 1은 임의의 레이어에서 m개의 입력 값에 대한 i번째 노드(1321)의 출력 값 yi를 나타낼 수 있다. xj는 이전 레이어의 j번째 노드의 출력 값을 나타낼 수 있고, wj,i는 j번째 노드의 출력 값 및 현재 레이어의 i번째 노드(1321)에 적용되는 웨이트를 나타낼 수 있다. f()는 활성 함수를 나타낼 수 있다. 수학식 1에 나타난 바와 같이, 활성 함수에 대해, 입력값 xj 및 웨이트 wj,i의 곱셈 누적 결과가 사용될 수 있다. 다시 말해, 원하는 시점에 적절한 입력 값 xj 및 가중치 wj,i을 곱하고 더하는 연산(MAC 연산)이 반복될 수 있다. 이러한 용도 외에도, MAC 연산을 필요로 하는 다양한 응용분야가 있으며, 이를 위해 아날로그 영역에서 MAC 연산을 처리할 수 있는 뉴로모픽 장치가 사용될 수 있다.
인-메모리 프로세싱 디바이스의 복수의 메모리 셀들은, 복수의 노드들을 포함하는 하나 이상의 레이어로 구성되는 뉴럴 네트워크(1300)에서, 복수의 노드들을 연결하는 연결선의 연결 가중치에 대응하는 저항(resistance)을 가질 수 있다. 메모리 셀들이 배치된 입력 라인들(로우 라인들)을 따라 제공되는 입력 신호는, 노드 값 xj에 대응하는 값을 나타낼 수 있다. 따라서, 인-메모리 프로세싱 디바이스는, 뉴럴 네트워크(1300)의 실시에 요구되는 연산들 중 적어도 일부를 수행할 수 있다.
한편, 인-메모리 프로세싱 디바이스의 적용은 반드시 뉴로모픽 연산에만 한정되는 것은 아니고, 이 밖에도 아날로그 회로 특성을 사용한 복수 입력 데이터를 저전력으로 빠르게 처리해야 하는 연산에도 활용될 수 있다.
도 14는 일 실시예에 따라 인-메모리 프로세싱을 수행하는 방법의 흐름도이다. 도 14를 참고하면, 인-메모리 프로세싱의 수행 방법은 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 14의 방법에도 적용될 수 있다.
1401 단계에서, 메모리 셀 어레이(690)의 각각의 로우(row) 라인을 통해 복수의 메모리 셀들(610)에 입력 신호가 인가된다.
1402 단계에서, 프로세싱 회로(600)는 메모리 셀 어레이(690)의 각각의 컬럼 라인을 통해 흐르는 컬럼 전류의 전류 합에 대응하는 샘플링 전압을 각각의 컬럼 라인에 연결된 커패시터(620)에 충전한다.
1403 단계에서, 프로세싱 회로(600)는 커패시터(620)의 충전 시간에 따라 구분된 양자화 레벨들 중 소정의 양자화 레벨에 대응하는 타이밍에 생성된 트리거 펄스를 비교기들에 인가함으로써 커패시터(620)에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 수행한다.
1404 단계에서, 프로세싱 회로(600)는 현재 충전된 전압이 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 샘플링 전압에 대응하는 양자화 레벨을 결정한다.
한편, 상술한 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예들에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 실시예가 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 실시예에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 인-메모리(in-memory) 프로세싱을 수행하는 장치에 있어서,
    입력 신호들이 각각의 로우(row) 라인을 통해 인가되는 경우 각각의 컬럼(column) 라인을 통해 흐르는 컬럼 전류의 전류 합(current sum)을 제공하는, 복수의 메모리 셀들을 포함하는 메모리 셀 어레이;
    상기 각각의 컬럼 라인의 상기 전류 합에 대응하는 샘플링 전압을 충전하는 커패시터를 포함하는 샘플링 회로; 및
    상기 커패시터의 충전 시간에 따라 구분된 양자화 레벨들 중 소정의 양자화 레벨에 대응하는 타이밍에 생성된 트리거 펄스의 인가에 의해 상기 커패시터에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 시작하고, 상기 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 상기 샘플링 전압에 대응하는 양자화 레벨을 결정하는 프로세싱 회로를 포함하는, 장치.
  2. 제 1 항에 있어서,
    상기 프로세싱 회로는
    상기 소정의 양자화 레벨에 대응하는 상기 타이밍에 상기 트리거 펄스를 생성하고, 상기 트리거 펄스의 생성에 동기화되어 카운팅 펄스를 생성하는 제어신호 생성기; 및
    상기 트리거 펄스의 인가에 의해 활성화되는 상기 컬럼 라인 별로 연결된 비교기들을 포함하는, 장치.
  3. 제 1 항에 있어서,
    상기 양자화 레벨들 각각은
    상기 커패시터에 상기 샘플링 전압이 충전되기까지 충전 전압이 변화되는 총 시간 구간으로부터 구분된 서브-시간 구간들 각각에 대응하는, 장치.
  4. 제 3 항에 있어서,
    상기 서브-시간 구간들은
    상기 메모리 셀들의 저항 값 및 상기 커패시터의 커패시턴스 중 적어도 하나에 기초하여 결정되는, 장치.
  5. 제 1 항에 있어서,
    상기 트리거 펄스가 인가되는 상기 타이밍에 대응하는 상기 소정의 양자화 레벨은, 상기 양자화 레벨들 중 최소 양자화 레벨보다 1 레벨 큰 양자화 레벨인, 장치.
  6. 제 1 항에 있어서,
    상기 프로세싱 회로는
    상기 비교 동작의 개시 신호로서 상기 트리거 펄스를 수신하고, 상기 커패시터에 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 것으로 비교된 경우 상기 도달한 시점에서 종료 신호를 출력하는, 상기 컬럼 라인 별로 연결된 비교기들; 및
    상기 종료 신호가 수신된 경우, 상기 종료 신호가 수신된 시점에서 상기 트리거 펄스에 동기화되어 인가된 카운팅 펄스의 카운팅 값을 디지털 값으로 출력하는 시간-디지털 컨버터(TDC)를 포함하는, 장치.
  7. 제 6 항에 있어서,
    상기 시간-디지털 컨버터(TDC)는
    상기 종료 신호가 수신된 경우 상기 종료 신호가 수신된 시점에서의 현재 카운팅 값을 래치(latch)하는, 상기 비교기들 각각에 연결된 플립플롭들(flip-flops)을 포함하는, 장치.
  8. 제 6 항에 있어서,
    상기 비교기들 중에서 상기 종료 신호가 출력된 비교기는 비활성화되는, 장치.
  9. 제 1 항에 있어서,
    상기 비교기들은 래치 비교기(latched comparator) 타입으로 구현되는, 장치.
  10. 제 1 항에 있어서,
    상기 트리거 펄스는
    상기 양자화 레벨들 중 최대 양자화 레벨보다 1 레벨 작은 양자화 레벨에 대응하는 시간 구간까지 인가되는, 장치.
  11. 제 1 항에 있어서,
    상기 양자화 레벨들 중 최소 양자화 레벨은 하나의 컬럼 라인에 포함된 복수의 메모리 셀들이 최대 합성 저항을 갖는 경우에 대응하고,
    상기 양자화 레벨들 중 최대 양자화 레벨은 하나의 컬럼 라인에 포함된 복수의 메모리 셀들이 최소 합성 저항을 갖는 경우에 대응하는,
    장치.
  12. 컴퓨팅 장치에 있어서,
    호스트 프로세서;
    메모리 디바이스; 및
    인-메모리 프로세싱 디바이스를 포함하고,
    상기 인-메모리 프로세싱 디바이스는
    입력 신호들이 각각의 로우(row) 라인을 통해 인가되는 경우 각각의 컬럼(column) 라인을 통해 흐르는 컬럼 전류의 전류 합(current sum)을 제공하는, 복수의 메모리 셀들을 포함하는 메모리 셀 어레이;
    상기 각각의 컬럼 라인의 상기 전류 합에 대응하는 샘플링 전압을 충전하는 커패시터를 포함하는 샘플링 회로; 및
    상기 커패시터의 충전 시간에 따라 구분된 양자화 레벨들 중 소정의 양자화 레벨에 대응하는 타이밍에 생성된 트리거 펄스의 인가에 의해 상기 커패시터에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 시작하고, 상기 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 상기 샘플링 전압에 대응하는 양자화 레벨을 결정하는 프로세싱 회로를 포함하는,
    컴퓨팅 장치.
  13. 제 12 항에 있어서,
    상기 프로세싱 회로는
    상기 소정의 양자화 레벨에 대응하는 상기 타이밍에 상기 트리거 펄스를 생성하고, 상기 트리거 펄스의 생성에 동기화되어 카운팅 펄스를 생성하는 제어신호 생성기; 및
    상기 트리거 펄스의 인가에 의해 활성화되는 상기 컬럼 라인 별로 연결된 비교기들을 포함하는, 컴퓨팅 장치.
  14. 제 12 항에 있어서,
    상기 양자화 레벨들은
    상기 커패시터에 상기 샘플링 전압이 충전되기까지 충전 전압이 변화되는 총 시간 구간으로부터 구분된 서브-시간 구간들 각각에 대응하는, 컴퓨팅 장치.
  15. 제 12 항에 있어서,
    상기 트리거 펄스가 인가되는 상기 타이밍에 대응하는 상기 소정의 양자화 레벨은, 상기 양자화 레벨들 중 최소 양자화 레벨보다 1 레벨 큰 양자화 레벨인, 컴퓨팅 장치.
  16. 제 12 항에 있어서,
    상기 프로세싱 회로는
    상기 비교 동작의 개시 신호로서 상기 트리거 펄스를 수신하고, 상기 커패시터에 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 것으로 비교된 경우 상기 도달한 시점에서 종료 신호를 출력하는, 상기 컬럼 라인 별로 연결된 비교기들; 및
    상기 종료 신호가 수신된 경우, 상기 종료 신호가 수신된 시점에서 상기 트리거 펄스에 동기화되어 인가된 카운팅 펄스의 카운팅 값을 디지털 값으로 출력하는 시간-디지털 컨버터(TDC)를 포함하는, 컴퓨팅 장치.
  17. 제 16 항에 있어서,
    상기 시간-디지털 컨버터(TDC)는
    상기 종료 신호가 수신된 경우 상기 종료 신호가 수신된 시점에서의 현재 카운팅 값을 래치(latch)하는, 상기 비교기들 각각에 연결된 플립플롭들(flip-flops)을 포함하는, 컴퓨팅 장치.
  18. 제 16 항에 있어서,
    상기 비교기들 중에서 상기 종료 신호가 출력된 비교기는 비활성화되는, 컴퓨팅 장치.
  19. 인-메모리(in-memory) 프로세싱을 수행하는 방법에 있어서,
    메모리 셀 어레이의 각각의 로우(row) 라인을 통해 복수의 메모리 셀들에 입력 신호를 인가하는 단계;
    상기 메모리 셀 어레이의 각각의 컬럼(column) 라인을 통해 흐르는 컬럼 전류의 전류 합(current sum)에 대응하는 샘플링 전압을 상기 각각의 컬럼(column) 라인에 연결된 커패시터에 충전하는 단계;
    상기 커패시터의 충전 시간에 따라 구분된 양자화 레벨들 중 소정의 양자화 레벨에 대응하는 타이밍에 생성된 트리거 펄스를 비교기들에 인가함으로써 상기 커패시터에 현재 충전된 전압과 레퍼런스 전압 간의 비교 동작을 수행하는 단계; 및
    상기 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 시점에서 시간-디지털 컨버팅을 수행함으로써 상기 샘플링 전압에 대응하는 양자화 레벨을 결정하는 단계를 포함하는, 방법.
  20. 제 19 항에 있어서,
    상기 소정의 양자화 레벨에 대응하는 상기 타이밍에 상기 트리거 펄스를 생성하는 단계; 및
    상기 트리거 펄스의 생성에 동기화된 카운팅 펄스를 생성하는 단계를 더 포함하고,
    상기 양자화 레벨을 결정하는 단계는
    시간-디지털 컨버터(TDC)가 비교기로부터 상기 커패시터에 현재 충전된 전압이 상기 레퍼런스 전압에 도달한 것을 나타내는 종료 신호를 수신한 경우, 상기 종료 신호가 수신된 시점에서 상기 카운팅 펄스의 카운팅 값을 디지털 값으로 출력함으로써 상기 양자화 레벨을 결정하는, 방법.
KR1020200061746A 2020-05-22 2020-05-22 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 KR20210144417A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020200061746A KR20210144417A (ko) 2020-05-22 2020-05-22 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치
CN202011211418.9A CN113707193A (zh) 2020-05-22 2020-11-03 具有存储器内处理的设备和方法
US17/141,474 US11587616B2 (en) 2020-05-22 2021-01-05 Apparatus and method with in-memory processing
EP21172460.4A EP3913629A1 (en) 2020-05-22 2021-05-06 Apparatus and method with in-memory processing
JP2021085813A JP2021185479A (ja) 2020-05-22 2021-05-21 インメモリプロセシングを行う装置、及びそれを含むコンピューティング装置
US17/992,143 US11804266B2 (en) 2020-05-22 2022-11-22 Apparatus and method with in-memory processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200061746A KR20210144417A (ko) 2020-05-22 2020-05-22 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR20210144417A true KR20210144417A (ko) 2021-11-30

Family

ID=75825650

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200061746A KR20210144417A (ko) 2020-05-22 2020-05-22 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치

Country Status (5)

Country Link
US (2) US11587616B2 (ko)
EP (1) EP3913629A1 (ko)
JP (1) JP2021185479A (ko)
KR (1) KR20210144417A (ko)
CN (1) CN113707193A (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10796729B2 (en) * 2019-02-05 2020-10-06 Micron Technology, Inc. Dynamic allocation of a capacitive component in a memory device
KR20210144417A (ko) * 2020-05-22 2021-11-30 삼성전자주식회사 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치
KR20220004430A (ko) * 2020-07-03 2022-01-11 삼성전자주식회사 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치
US20220027130A1 (en) * 2020-07-27 2022-01-27 Robert Bosch Gmbh Time domain ratiometric readout interfaces for analog mixed-signal in memory compute crossbar networks
KR20220020097A (ko) 2020-08-11 2022-02-18 삼성전자주식회사 프로세싱 장치 및 이를 포함하는 전자 시스템
US11809838B2 (en) * 2020-09-08 2023-11-07 Macronix International Co., Ltd. Memory device and operation method thereof
US11469373B2 (en) 2020-09-10 2022-10-11 Rockwell Collins, Inc. System and device including memristor material
US11631808B2 (en) 2020-12-07 2023-04-18 Rockwell Collins, Inc. System and device including memristor material
US11462267B2 (en) * 2020-12-07 2022-10-04 Rockwell Collins, Inc. System and device including memristor material
US11456418B2 (en) 2020-09-10 2022-09-27 Rockwell Collins, Inc. System and device including memristor materials in parallel
TWI752823B (zh) * 2021-02-17 2022-01-11 國立成功大學 記憶體系統
WO2023120723A1 (ja) * 2021-12-23 2023-06-29 株式会社ソリトンシステムズ 非線形関数演算装置、シグモイド関数演算装置、双曲線正接関数演算装置、ソフトマックス関数演算装置及び非線形関数演算方法
JP7274070B1 (ja) * 2021-12-23 2023-05-15 株式会社ソリトンシステムズ 非線形関数演算装置、シグモイド関数演算装置、双曲線正接関数演算装置、ソフトマックス関数演算装置及び非線形関数演算方法
US11942144B2 (en) 2022-01-24 2024-03-26 Stmicroelectronics S.R.L. In-memory computation system with drift compensation circuit
WO2023171683A1 (ja) * 2022-03-11 2023-09-14 ヌヴォトンテクノロジージャパン株式会社 ニューラルネットワーク演算回路
GB2620785A (en) * 2022-07-21 2024-01-24 Advanced Risc Mach Ltd Improved spiking neural network apparatus

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188615B1 (en) * 1999-10-29 2001-02-13 Hewlett-Packard Company MRAM device including digital sense amplifiers
JP4088954B2 (ja) * 2002-03-04 2008-05-21 日本電気株式会社 半導体記憶装置の読み出し回路
US7817073B2 (en) * 2007-06-15 2010-10-19 Micron Technology, Inc. Integrators for delta-sigma modulators
KR20120134169A (ko) 2011-06-01 2012-12-12 삼성전자주식회사 전압-온도 센서 및 이를 포함하는 시스템
US9571082B2 (en) 2015-04-17 2017-02-14 Taiwan Semiconductor Manufacturing Co., Ltd. High resolution time-to-digital convertor
JP6846297B2 (ja) 2016-06-20 2021-03-24 キオクシア株式会社 演算装置
US10528865B2 (en) 2016-06-21 2020-01-07 International Business Machines Corporation System to duplicate neuromorphic core functionality
KR102314300B1 (ko) 2017-02-10 2021-10-21 한국전자통신연구원 뉴로모픽 연산 장치
US10559370B2 (en) * 2018-03-22 2020-02-11 Sandisk Technologies Llc System and method for in-situ programming and read operation adjustments in a non-volatile memory
US11048434B2 (en) 2018-09-28 2021-06-29 Intel Corporation Compute in memory circuits with time-to-digital computation
US11755899B2 (en) * 2019-11-11 2023-09-12 Silicon Storage Technology, Inc. Precise programming method and apparatus for analog neural memory in an artificial neural network
KR20210144417A (ko) * 2020-05-22 2021-11-30 삼성전자주식회사 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치

Also Published As

Publication number Publication date
US20210366542A1 (en) 2021-11-25
CN113707193A (zh) 2021-11-26
EP3913629A1 (en) 2021-11-24
JP2021185479A (ja) 2021-12-09
US20230078279A1 (en) 2023-03-16
US11587616B2 (en) 2023-02-21
US11804266B2 (en) 2023-10-31

Similar Documents

Publication Publication Date Title
KR20210144417A (ko) 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치
US10692570B2 (en) Neural network matrix multiplication in memory cells
US11348002B2 (en) Training of artificial neural networks
KR20220004430A (ko) 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치
US11620505B2 (en) Neuromorphic package devices and neuromorphic computing systems
US11531871B2 (en) Stacked neuromorphic devices and neuromorphic computing systems
CN110378475A (zh) 一种基于多位并行二进制突触阵列的神经形态计算电路
KR20210154502A (ko) 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
KR20220020097A (ko) 프로세싱 장치 및 이를 포함하는 전자 시스템
KR20220010362A (ko) 뉴럴 네트워크 장치 및 그의 동작 방법
US20210383203A1 (en) Apparatus and method with neural network
KR102650660B1 (ko) 뉴로모픽 장치 및 뉴로모픽 장치에서 멀티-비트 뉴로모픽 연산을 처리하는 방법
EP4198830A1 (en) Neural network device and electronic system including the same
US20230113627A1 (en) Electronic device and method of operating the same
KR20200094534A (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치에서 멀티-비트 연산을 처리하는 방법
JP2021157788A (ja) ニューロモーフィック装置、電子システム及びその駆動方法
KR20220141652A (ko) 멀티-비트 연산 장치 및 방법
US11901907B2 (en) Electronic device and method of operating the same
US20230298663A1 (en) Neural network based method and device
KR20230090758A (ko) 뉴럴 네트워크 회로 및 장치
CN117408319A (zh) 神经网络分类器

Legal Events

Date Code Title Description
A201 Request for examination