KR20210028063A - 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법 - Google Patents

곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법 Download PDF

Info

Publication number
KR20210028063A
KR20210028063A KR1020200046244A KR20200046244A KR20210028063A KR 20210028063 A KR20210028063 A KR 20210028063A KR 1020200046244 A KR1020200046244 A KR 1020200046244A KR 20200046244 A KR20200046244 A KR 20200046244A KR 20210028063 A KR20210028063 A KR 20210028063A
Authority
KR
South Korea
Prior art keywords
voltage
input
accumulator circuit
time
capacitor
Prior art date
Application number
KR1020200046244A
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 US16/987,863 priority Critical patent/US11573792B2/en
Priority to CN202010812126.4A priority patent/CN112445456A/zh
Priority to EP20193761.2A priority patent/EP3789870B1/en
Publication of KR20210028063A publication Critical patent/KR20210028063A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G04HOROLOGY
    • G04FTIME-INTERVAL MEASURING
    • G04F10/00Apparatus for measuring unknown time intervals by electric means
    • G04F10/005Time-to-digital converters [TDC]

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

일 실시예에 따른 곱셈 누적기 회로는, 복수의 저항기들의 저항 값을 설정하고 복수의 저항기들에 공급되는 전압을 스위칭함으로써 입력 데이터 및 가중치의 곱 연산 누적에 대응하는 합성 저항을 형성하고, 합성 저항과 연결된 커패시터의 충전 시간을 디지털 값으로서 출력할 수 있다.

Description

곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법{COMPUTING DEVICE AND METHOD USING MULTIPLIER-ACCUMULATOR CIRCUIT}
이하, 곱셉 누적기 회로에 관한 기술이 제공된다.
MAC(multiply and accumulate) 연산(operation)이라고도 알려져 있는 벡터 매트릭스 곱셈 오퍼레이션은 다양한 분야에서 어플리케이션의 성능을 좌우한다. 예를 들어, 다중 레이어를 포함하는 뉴럴 네트워크(neural network)의 머신 러닝(machine learning) 및 인증 동작에 있어서, MAC 오퍼레이션이 수행될 수 있다. 입력 신호는 입력 벡터를 형성하는 것으로 간주될 수 있으며, 이미지, 바이트 스트림 또는 기타 데이터 세트에 대한 데이터일 수 있다. 입력 신호에 웨이트(weight)가 곱해지고 누적된 MAC 오퍼레이션의 결과로부터 출력 벡터가 구해지고, 이 출력 벡터는 다음 레이어에 대한 입력 벡터로 제공될 수 있다. 이와 같은 MAC 오퍼레이션은 다수의 레이어에 대해 반복되기 때문에, 뉴럴 네트워크 처리 성능은 주로 MAC 오퍼레이션의 성능에 의해 결정된다.
일 실시예에 따른 곱셈 누적기(MAC, multiply-accumulator) 회로는, 입력 신호에 응답하여 전압이 인가되는 복수의 저항기들; 상기 복수의 저항기들에 연결되고 상기 전압의 인가에 따라 전하를 충전하는 커패시터; 및 상기 입력 신호, 상기 복수의 저항기들, 및 상기 커패시터의 조합에 따른 상기 커패시터의 충전 시간을 디지털 값으로 변환하는 시간-디지털 변환기(TDC, time-to-digital converter)를 포함할 수 있다.
곱셈 누적기 회로는 각각 상기 복수의 저항기들 및 상기 커패시터를 포함하는 복수의 출력 라인들을 더 포함하고, 각 출력 라인의 커패시터는 동일한 커패시턴스를 가질 수 있다.
곱셈 누적기 회로는 상기 복수의 저항기들 및 상기 커패시터에 연결되고, 상기 커패시터에 충전되는 전하량에 대응하는 대상 전압(target voltage)을 기준 전압(reference voltage)에 대해 비교한 비교 결과를 출력하는 비교기를 더 포함하고, 상기 시간-디지털 변환기는, 상기 비교기의 비교 결과에 기초하여 상기 충전 시간을 지시하는 시간 정보를 상기 디지털 값으로 변환할 수 있다.
상기 시간 정보는, 상기 비교 결과가 출력된 시점(time instant)을 지시하는 정보를 포함할 수 있다.
상기 비교기는, 상기 입력 신호에 따른 전압에 의해 상기 커패시터가 충전되면서 상기 대상 전압이 상기 기준 전압을 초과하는 경우에 응답하여, 상기 비교 결과를 출력할 수 있다.
상기 입력 신호는, 입력 데이터에 대응하며 복수의 입력 라인들에 입력되는 일련의 입력 전압 신호들을 포함할 수 있다.
상기 복수의 저항기들은 서로 병렬로 연결되고, 상기 복수의 저항기들 각각의 일단은 스위치를 통해 전압을 수신 가능하게 구성되고, 타단은 상기 커패시터 및 비교기에 연결될 수 있다.
상기 복수의 저항기들 중 상기 입력 신호에 의해 상기 전압이 인가된 하나 이상의 저항기가 합성 저항을 형성하고, 상기 시간-디지털 변환기는, 상기 합성 저항, 및 상기 커패시터의 커패시턴스의 조합에 대응하는 상기 충전 시간을 상기 디지털 값으로 변환할 수 있다.
상기 시간-디지털 변환기는, 상기 충전 시간으로서, 상기 입력 신호가 수신되는 시작 시점으로부터 상기 비교 결과가 출력되는 출력 시점까지 경과된 시간에 관한 시간 정보를 상기 디지털 값으로 출력할 수 있다.
상기 시간-디지털 변환기는, 시작 시점으로부터 경과된 시간을 지시하는 디지털 값을 출력하는 단일 글로벌 카운터; 및 상기 비교 결과가 출력되는 시점에서 상기 단일 글로벌 카운터에 의해 출력되는 디지털 값을 참조하는 참조부를 포함할 수 있다.
복수의 출력 라인들 각각은 복수의 저항기들, 커패시터, 및 비교기를 포함하고, 상기 단일 글로벌 카운터는, 상기 복수의 출력 라인들의 비교기들과 연결되며, 상기 참조부는, 상기 복수의 출력 라인들의 비교기들의 비교 결과를 참조하는 복수의 홀드 회로들(hold circuits)을 포함하고, 상기 복수의 홀드 회로들 각각은, 상기 복수의 출력 라인들 중 대응하는 출력 라인에 포함된 비교기로부터 비교 결과가 출력되는 시점을 참조할 수 있다.
상기 복수의 홀드 회로들 각각은, 플립플랍 회로(flip-flop circuit)로 구성될 수 있다.
상기 복수의 저항기들은, 복수의 노드들을 포함하는 레이어를 포함하는 뉴럴 네트워크에서, 상기 복수의 노드들을 연결하는 연결선의 연결 가중치에 대응하는 저항(resistance)을 가질 수 있다.
곱셈 누적기 회로는 상기 시간-디지털 변환기에 의해 생성된 디지털 값에 매핑된 값을 각 출력 라인의 출력 값으로 출력하는 출력부를 더 포함할 수 있다.
상기 곱셉 누적기 회로는, 모든 출력 라인에서 상기 입력 신호에 대한 디지털 출력 값을 출력한 후 다음 입력 신호를 수신하기 전까지 상기 커패시터를 임계 전압 미만으로 방전시킬 수 있다.
상기 곱셉 누적기 회로는, 시작 신호에 응답하여 단일 글로벌 카운터의 카운트를 리셋할 수 있다.
상기 곱셉 누적기 회로는, 시작 신호(start signal)에 응답하여, 상기 복수의 저항기들 중 입력 데이터에 의해 지시되는 입력 라인에 대응하는 저항기에 상기 입력 신호를 인가하고, 상기 시간-디지털 변환기는, 상기 시작 신호에 응답하여 경과 시간의 카운트를 시작할 수 있다.
곱셈 누적기 회로는 상기 복수의 저항기들 중 한 저항기에 연결되고, 입력 데이터가 상기 연결된 저항기를 포함하는 입력 라인을 지시하는 경우에 응답하여 시작 신호를 수신할 때 상기 입력 데이터에 따른 입력 전압 신호를 상기 연결된 저항기에 전달하는 스위치를 더 포함할 수 있다.
곱셈 누적기 회로는 상기 복수의 저항기들의 각 저항기의 일단에 연결되는 스위치를 더 포함하고, 상기 스위치는, 해당 저항기가 배치된 입력 라인에서 수신되는 입력 전압 신호가 폐쇄 신호(close signal)인 경우에 응답하여, 공급 전압을 해당 저항기로 전달하며, 해당 저항기가 배치된 입력 라인에서 수신되는 입력 전압 신호가 개방 신호(open signal)인 경우에 응답하여, 해당 저항기의 일단을 개방할 수 있다.
곱셈 누적기 회로는 상기 복수의 저항기들 중 한 저항기에 연결되고, 충전 주기 동안 입력 전압 신호에 응답하여 공급 전압을 상기 연결된 저항기에 인가하는 스위치를 더 포함할 수 있다.
상기 스위치는, 방전 주기 동안 상기 입력 전압 신호에 응답하여 리셋 전압을 상기 연결된 저항기에 인가하고, 상기 공급 전압에 의해 상기 커패시터에 전하가 충전되는 동안 상기 커패시터에 저장된 전하에 따른 대상 전압이 제1 기준 전압을 초과하는 경우에 응답하여 비교 결과를 출력하고, 상기 리셋 전압에 의해 상기 커패시터로부터 전하가 방전되는 동안 상기 커패시터에 저장된 전하에 따른 대상 전압이 제2 기준 전압 미만인 경우에 응답하여 비교 결과를 출력하는 비교기를 더 포함할 수 있다.
일 실시예에 따른 곱셉 누적기 회로에 의해 수행되는 컴퓨팅 방법에 있어서, 입력 신호를 수신하는 단계; 상기 입력 신호에 응답하여 복수의 저항기들에 인가되는 전압에 따라, 상기 복수의 저항기들에 연결되는 커패시터가 전하를 충전하는 단계; 및 상기 입력 신호, 상기 복수의 저항기들, 및 상기 커패시터의 조합에 따른 상기 커패시터의 충전 시간을 디지털 값으로 변환하는 단계를 포함할 수 있다.
도 1은 일 실시예에 따른 곱셈 누적기 회로를 도시한 도면이다.
도 2는 일 실시예에 따른 곱셈 누적기 회로에서 합성 저항 및 연산 결과 간의 매핑 관계를 설명한 도면이다.
도 3은 일 실시예에 따라 복수의 입력 라인들 및 복수의 출력 라인들을 가지는 곱셈 누적기 회로를 설명하는 도면이다.
도 4는 일 실시예에 따른 시간 디지털 변환기(TDC, time-to-digital converter)를 설명하는 도면이다.
도 5는 일 실시예에 따른 시간 디지털 변환기의 참조부를 설명하는 도면이다.
도 6은 일 실시예에 따른 시간 디지털 변환기의 변환 동작을 설명하는 도면이다.
도 7은 일 실시예에 따른 곱셈 누적기 회로를 이용한 컴퓨팅 방법을 설명하는 흐름도이다.
도 8은 일 실시예에 따른 컴퓨팅 방법의 보다 상세한 예시를 설명한다.
도 9는 다른 일 실시예에 따라 스위칭에 의해 공급 전압이 인가되는 곱셈 누적기 회로를 설명하는 도면이다.
도 10 내지 도 12는 도 9에 도시된 곱셈 누적기 회로의 충전 주기 동작 및 방전 주기 동작을 설명하는 도면이다.
도 13은 일 실시예에 따른 곱셈 누적기 회로에 의해 구현될 수 있는 뉴럴 네트워크 연산의 예시를 설명하는 도면이다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있기에 본 출원의 범위가 이러한 실시예로만 제한되거나 한정되는 것은 아니다. 오히려, 실시예들에 대한 모든 변경, 균등물 내지 대체물이 본 출원의 범위에 포함되는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 권리범위를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수 개의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 일 실시예에 따른 곱셈 누적기 회로를 도시한 도면이다. 도 2는 일 실시예에 따른 곱셈 누적기 회로에서 합성 저항 및 연산 결과 간의 매핑 관계를 설명한 도면이다.
곱셈 누적기 회로(100)는 곱셈 결과를 누적한 값을 출력하는 회로일 수 있다. 일 실시예에 따른 곱셈 누적기 회로(100)는 복수의 저항기들(110), 커패시터(C), 및 시간 디지털 변환기(TDC, time-to-digital converter)(140)를 포함할 수 있다. 또한, 곱셈 누적기 회로(100)는 시간 디지털 변환기(140)로 전달되는 시간 정보를 생성하기 위한 비교기(130)를 더 포함할 수 있다.
복수의 저항기들(110)에는 입력 신호에 응답하여 전압이 인가될 수 있다. 일 실시예에 따르면 복수의 저항기들(110)은 서로 병렬로 연결될 수 있으며, 전압이 인가된 저항기들이 합성 저항을 형성할 수 있다. 복수의 저항기들(110) 각각의 일단은 스위치를 통해 전압을 수신하고, 타단은 커패시터(C) 및 비교기(130)에 연결될 수 있다. 복수의 저항기들(110)에는 입력 신호의 입력 전압 신호가 직접 인가될 수도 있으며, 입력 신호에 의해 공급 전압이 인가될 수도 있다.
서로 병렬로 연결된 복수의 저항기들(110)은, 입력 신호에 응답하여 합성 저항을 형성할 수 있고, 합성 저항 값은 입력 데이터 및 가중치 데이터 간의 곱셈 누적 결과 값에 대응할 수 있다. 예를 들어, 복수의 저항기들(110) 중 전압이 인가된 저항기들은 합성 저항 형성에 포함될 수 있고, 전압이 인가되지 않은 저항기들은 합성 저항의 형성으로부터 배제될 수 있다. 예를 들어, 전압이 인가된 저항기는 해당 저항기 자체의 제1 저항 값(예를 들어, 100 kohm)을 나타낼 수 있고, 전압이 인가되지 않은 저항기는 일단이 개방되었으므로 해당 저항기 자체의 저항 값보다 충분히 큰 제2 저항 값(예를 들어, 10 Mohm)을 나타낼 수 있다. 제1 저항 값 성분을 가지는 저항기 및 제2 저항 값 성분을 가지는 저항기가 병렬로 연결되어 합성 저항을 형성하는 경우, 제2 저항 값이 제1 저항 값보다 충분히 크다면 합성 저항 값에서 제2 저항 값은 실질적으로 무시되거나, 합성 저항 값에서 제2 저항 값에 의한 영향이 작을 수 있다. 따라서, 합성 저항의 형성에 참여하는 저항기는 입력 전압 신호의 전압 값 및 저항기의 저항 값의 비트 곱(bitwise multiplication) 결과에 대응할 수 있고, 입력 전압 신호의 전압값이 바이너리인 경우 합성 저항 값은 비트 곱 결과들의 합에 대응할 수 있다. 상술한 합성 저항은 도 1에 도시된 바와 같이 커패시터와 연결되므로, 합성 저항 값 및 커패시턴스에 의해 곱셈 누적기 회로(100)의 시상수(time constant)가 결정될 수 있다. 시상수에 의해 커패시터의 충전 시간이 결정되므로, 합성 저항 값은 커패시터의 충전 시간으로부터 추론될 수 있다. 결과적으로 비트 곱 결과들의 합이 시상수에 따른 커패시터의 충전 시간으로부터 추론될 수 있다. 충전 시간은 아래 비교기(130)의 동작과 연관지어 상세히 설명한다.
아울러, 합성 저항 값이 비트 곱 결과만 지시하는 것으로 한정하는 것은 아니다. 후술하겠으나 입력 전압 신호의 전압값이 바이너리가 아닌 다중 상태(예를 들어, 다중 비트)를 지시하는 경우, 합성 저항의 형성에 참여하는 저항기는 입력 전압 신호의 전압 값 및 저항기의 저항 값의 곱 결과에 대응하고, 합성 저항 값은 곱 결과들의 합에 대응할 수 있다.
참고로, 도 1에서는 시작 신호(START)에 응답하여 입력 신호를 구성하는 입력 전압 신호가 저항기에 인가되는 예시를 설명한다. 곱셈 누적기 회로(100)는 복수의 저항기들(110)의 일단에 개별적으로 연결된 복수의 스위치들(101)을 더 포함할 수 있다. 예를 들어, 제1 스위치(SW1)는 제1 저항기(R1)의 일단에 연결되고, 제j 스위치(SWj)는 제j 저항기(Rj)의 일단에 연결되며, 제m 스위치(SWm)는 제m 저항기(Rm)의 일단에 연결될 수 있다. 여기서, m은 1이상의 정수일 수 있고, j는 1이상 m 이하의 정수일 수 있다. 복수의 스위치들(101)의 타단은 입력 전압 신호들(V1 내지 Vm)을 수신할 수 있다. 예를 들어, 제j 스위치(SWj)의 타단은 제j 입력 전압 신호 Vj를 수신할 수 있다.
입력 신호는 입력 데이터에 대응하는 신호로서, 복수의 입력 라인들에 입력되는 일련의 입력 전압 신호들(V1 내지 Vm)을 포함할 수 있다. 예를 들어, 제j 입력 전압 신호는 제j 스위치(SWj)를 통해 시작 신호(START)에 응답하여 제j 저항기(Rj)로 인가될 수 있다. 다만, 모든 저항기에 입력 전압 신호들(V1 내지 Vm)이 항상 인가되는 것은 아니고, 입력 데이터에 따라, 일부 저항기에 입력 전압 신호가 인가되고, 일부 저항기에는 입력 전압 신호가 인가되지 않을 수도 있다.
예를 들어, 입력 데이터가 해당 스위치와 연결된 저항기를 포함하는 입력 라인을 지시하는 경우에 응답하여, 해당 스위치는 시작 신호(START)를 수신할 때 입력 데이터에 따른 입력 전압 신호를 해당 스위치와 연결된 저항기에 전달할 수 있다. 반대로, 입력 데이터가 해당 입력 라인을 지시하지 않는 경우, 해당 입력 라인의 스위치가 시작 신호(START)를 수신하여 폐쇄(close)되더라도, 저항기로 전압이 공급되지 않을 수 있다. 입력 신호가 해당 입력 라인으로 인가되는 입력 전압 신호를 포함하지 않으므로, 해당 입력 라인의 저항기에 전압이 공급되지 않을 수 있다. 따라서 해당 입력 라인의 저항기의 일단은 플로팅(float)될 수 있고, 합성 저항의 형성으로부터 배제될 수 있다. 앞서 설명한 바와 같이, 일단이 개방된 저항기는 자체 저항 값보다 매우 큰 저항 값을 나타내므로 합성 저항 값에서 무시되거나 합성 저항에 미치는 영향이 작을 수 있다.
커패시터(C)는 복수의 저항기들(110)에 연결되고 전압의 인가에 따라 전하를 충전할 수 있다. 예를 들어, 입력 전압 신호를 통하거나 스위칭을 통해 전압이 인가된 복수의 저항기들(110)을 통해 흐르는 전류에 의해 커패시터(C)에 전하가 충전될 수 있다. 도 1에서는 커패시터(C)가 복수의 저항기들(110)에 인가되는 입력 전압 신호를 통해 전하를 충전하는 예시를 설명한다.
비교기(130)는 복수의 저항기들(110) 및 커패시터(C)에 연결될 수 있다. 비교기(130)는 커패시터(C)에 충전되는 전하량에 대응하는 대상 전압(Vo)(target voltage)을 기준 전압(Vref)(reference voltage)에 대해 비교한 비교 결과를 출력할 수 있다. 비교기(130)는 연산증폭기(OP amp, operational amplifier)로 구성될 수 있고, 연산증폭기의 한 입력 노드에 복수의 저항기들(110)의 타단 및 커패시터(C)의 일단이 연결될 수 있다. 연산증폭기의 다른 입력 노드는 기준 전압(Vref)을 수신할 수 있다. 대상 전압(Vo)은 커패시터(C)에 충전된 전하량에 대응하는 전압으로서, 복수의 저항기들(110) 및 입력 신호에 의해 형성되는 합성 저항 및 커패시터(C)의 커패시턴스에 의해 결정되는 시상수(time constant)에 따라 시간에 걸쳐 변화할 수 있다. 기준 전압(Vref)은 전압 변화 시간(예를 들어, 충전 시간 또는 방전 시간)의 측정 기준이 되는 전압을 나타낼 수 있다. 예를 들어, 비교기(130)는 입력 신호에 따른 전압에 의해 커패시터(C)가 충전되면서 대상 전압(Vo)이 기준 전압(Vref)을 초과하는 경우에 응답하여, 비교 결과를 출력할 수 있다. 도 1에서 비교 결과는 대상 전압(Vo)이 기준 전압(Vref)을 초과하는 것을 나타낼 수 있고, 비교 결과가 출력되는 시점을 출력 시점이라고 나타낼 수 있다. 비교기(130)는 비교 결과로서 카운트 종료 신호(STOP)를 생성할 수 있다.
시간 디지털 변환기(140)는 입력 신호, 복수의 저항기들(110), 및 커패시터(C)의 조합에 따른 커패시터(C)의 충전 시간을 디지털 값으로 변환할 수 있다. 시간 디지털 변환기(140)는 비교기(130)의 비교 결과에 기초하여 충전 시간을 디지털 값으로 변환할 수 있다. 예를 들어, 충전 시간은 비교기(130)의 비교 결과가 출력되는 출력 시점 및 시작 신호(START)가 주어진 시작 시점 간의 시간 차이일 수 있다. 시간 정보는 충전 시간을 지시하는 정보로서, 아래 도 4 및 도 5에서 후술하는 시작 시점으로부터 출력 시점까지 카운터에 의해 카운트된 클럭 개수를 지시하는 정보일 수 있다.
참고로, 도 1에 도시된 복수의 저항기들(110), 비교기(130), 및 시간 디지털 변환기(140)는 한 출력 라인에 대응할 수 있다. 시작 신호(START)에 응답하여, 곱셈 누적기 회로(100)가 입력 전압 신호를 복수의 저항기들(110)에 인가할 수 있다. 복수의 저항기들(110) 중 입력 전압 신호가 인가된 저항기들끼리 상술한 바와 같이 합성 저항을 형성할 수 있다. 입력 신호의 인가에 응답하여, 이러한 저항기들 및 커패시터(C) 간의 고유 응답(natural response)에 의해, 커패시터(C)의 대상 전압(Vo)이 증가할 수 있다. 예를 들어, 시작 신호(START)가 주어진 이후, 저항기 및 커패시터(C)를 포함하는 회로의 동작은 하기 수학식 1과 같이 표현될 수 있다.
[수학식 1]
Figure pat00001
상술한 수학식 1에서, j는 1이상 m이하의 정수를 나타낼 수 있다. Vj는 제j 입력 라인에 인가되는 제j 입력 전압 신호를, Rj는 제j 입력 라인에 배치된 제j 저항기에 대한 저항 값을, C는 커패시터(C)의 커패시턴스 값을 나타낼 수 있다. 참고로, 입력 데이터가 일련의 바이너리 값들로 구성되는 입력 비트 시퀀스이면, 곱셈 누적기 회로(100)에서 복수의 입력 라인들 각각은 비트 시퀀스의 각 비트 위치에 대응할 수 있다. 비트 위치의 비트 값이 1이면 해당 비트 위치에 대응하는 입력 라인에 전압 값을 가지는 입력 전압 신호가 인가될 수 있다. 반대로, 비트 위치의 비트 값이 0이면 해당 비트 위치에 대응하는 입력 라인에 입력 전압 신호가 인가되지 않을 수 있다. 또한, 복수의 저항기들(110)의 저항 값은 입력 비트 시퀀스의 각 비트에 곱해지는 비트 값에 대응할 수 있다. 예를 들어, 복수의 저항기들(110) 중 1의 비트 값에 대응하는 저항기는 제1 저항 값을 가지고, 0의 비트 값에 대응하는 저항기는 제1 저항 값보다 충분히 큰 제2 저항 값을 가질 수 있다. 앞서 설명한 바와 같이 제1 저항 값을 가지는 저항기 및 제2 저항 값을 가지는 저항기에 의해 형성되는 합성 저항에서, 제1 저항 값보다 큰 제2 저항 값의 크기는 무시될 수 있다.
상술한 수학식 1에 대한 경계 조건(boundary condition)은 하기 수학식 2와 같이 나타낼 수 있다.
[수학식 2]
Figure pat00002
상술한 수학식 2에서 Vo(0+)는 대상 전압(Vo)의 초기값을 나타낼 수 있고, Vo(∞)는 대상 전압(Vo)의 수렴값을 나타낼 수 있다. 상술한 수학식 1 및 수학식 2로부터 대상 전압(Vo)은 아래 수학식 3과 같이 유도될 수 있다.
[수학식 3]
Figure pat00003
상술한 수학식 3에서 합성 저항(Ro)은 서로 병렬로 연결된 저항기들에 의해 형성되고, 합성 저항 성분 값은 아래 수학식 4와 같이 나타낼 수 있다.
[수학식 4]
Figure pat00004
상술한 수학식 4에서 제j 저항기가 0의 비트 값에 대응하거나 제j 저항기의 일단이 개방되는 경우(예를 들어, 입력 전압 신호가 인가되지 않은 경우) Rj는 제1 저항 값보다 큰 제2 저항 값을 나타낼 수 있다. 제j 저항기가 1의 비트 값에 대응하면서 제j 저항기의 일단에 입력 전압 신호가 인가되는 경우, Rj는 제1 저항 값을 나타낼 수 있다.
입력 신호가 인가된 후 충전되는 커패시터(C)의 대상 전압(Vo)이 기 설정된 기준 전압(Vref)을 초과하는 경우, 비교기(130)는 카운트 종료 신호(STOP)를 출력할 수 있다. 여기서, 대상 전압(Vo)이 기 설정된 기준 전압(Vref)과 동일해지는 충전 시간(Tout)과 관련하여, 상술한 수학식 3을 아래 수학식 5와 같이 나타낼 수 있다.
[수학식 5]
Figure pat00005
상술한 수학식 5를 충전 시간(Tout)에 대해 다시 정리하면 아래 수학식 6과 같이 나타낼 수 있다.
[수학식 6]
Figure pat00006
상술한 수학식 6에 나타난 바와 같이 충전 시간(Tout)은 합성 저항(Ro)의 선형함수로서, 합성 저항(Ro)에 비례할 수 있다. 앞서 설명한 바와 같이, 합성 저항(Ro)을 형성하는 개별 Rj 값은 제j 입력 라인에서 입력 데이터의 비트 값 및 저항기에 의해 지시되는 비트 값 간의 비트 곱 결과에 대응할 수 있다. 예를 들어, 1의 비트 값이 낮은 저항 값 (예를 들어, 100kohm), 0의 비트 값이 높은 저항 값 (예를 들어, 10Mohm)에 대응하면, 합성저항(Ro)는 곱 연산 누적 결과에서 1인 비트의 개수에 따라 도 2의 그래프(200)와 같은 반비례 관계를 나타낼 수 있다. 도 2의 그래프(200)에서 x축은 1의 비트 값에 대응하는 저항기의 개수로서 합산 비트 수를 나타내고, y축은 100 kohm이 1로 정규화된(normalized) 합성저항 값을 나타낼 수 있다. 이러한 반비례 관계에 기초하여, 곱 연산 누적기 회로는 추정된 합성 저항(Ro)로부터 비트 곱 결과에 따른 비트 개수를 추정할 수 있다.
정리하면, 충전 시간(Tout)은 합성 저항(Ro)에 비례하고, 합성 저항(Ro)은 도 2의 그래프와 같이 입력 데이터 및 복수의 저항기들(110)에 의해 지시되는 값들 간의 곱 연산 누적 결과에 매핑될 수 있다. 바이너리 연산에서, 곱 연산 누적 결과는 덧셈에 사용된 1의 비트 값의 개수에 대응할 수 있다.
곱셈 누적기 회로(100)는 상술한 바와 같이 곱 연산 누적 결과에 대응하는 충전 시간(Tout)을 디지털 값으로 출력할 수 있다. 예를 들어, 곱셈 누적기 회로(100)의 시간 디지털 변환기(140)는 시작 신호(START) 및 카운트 종료 신호(STOP) 사이의 시간 차이(예를 들어, 충전 시간)를 기준 클럭(CLK)의 개수로 카운트할 수 있고, 카운트된 기준 클럭(CLK)의 개수를 디지털 값으로 출력할 수 있다.
일 실시예에 따른 곱셈 누적기 회로(100)는 메모리와 연산부가 분리된 폰 노이만(Von Neumann) 구조와 달리 데이터 전달의 속도 및 전력소모가 개선될 수 있다. 또한, 곱셈 누적기 회로(100)는 메모리와 연산부가 통합된 인메모리 컴퓨팅(in memory computing) 아키텍쳐에서 ADC(analog-to-digital converter)를 이용하여 디지털 신호로 양자화 하여 활성함수의 입력으로 사용하는 구조와 달리, 모든 열에 독립적인 ADC를 구성할 필요가 없으므로, 소모 전력 및 회로에서 차지하는 면적이 감소될 수 있다.
참고로, 상술한 도 1 및 도 2에서는 입력 전압 신호의 전압 값 및 저항기의 저항 값이 온(ON)에 해당하는 값 및 오프(OFF)에 해당하는 값과 같이 바이너리 값을 가지는 것을 가정하여 설명하였으나, 이로 한정하는 것은 아니다. 입력 전압 신호의 전압 값 및 저항기의 저항 값은 다중 상태(multi-state)로 구별되는 값을 가질 수도 있다. 예를 들어, 한 입력 라인에 2비트의 값이 입력되는 경우, "00"에 대해서는 입력 전압 신호가 플로팅(floating)되고, "01"에 대해서는 제1 전압 값, "10"에 대해서는 제1 전압 값보다 큰 제2 전압 값, "11"에 대해서는 제2 전압 값보다 큰 제3 전압 값이 입력 전압 신호에 할당될 수 있다. 각 저항기가 2비트의 값을 지시하는 경우, "00"에 대해서는 제1 저항 값, "01"에 대해서는 제1 저항 값보다 큰 제2 저항 값, "10"에 대해서는 제3 저항 값", "11"에 대해서는 제4 저항 값이 저항기에 할당될 수도 있다. 각 입력 라인에 수신되는 신호 및 각 저항기가 2비트 다중 상태를 지시하는 것으로 한정하는 것은 아니고, 그 이상의 비트에 대응하는 다중 상태를 지시할 수도 있고, 바이너리 체계 외 다른 체계에 따른 값이 할당될 수도 있다.
도 1 및 도 2에서는 복수의 입력 라인들 및 하나의 출력 라인을 포함하는 곱셈 누적기 회로를 설명하였다. 아래 도 3에서는 복수의 출력 라인들을 포함하는 곱셈 누적기 회로를 설명한다.
도 3은 일 실시예에 따라 복수의 입력 라인들 및 복수의 출력 라인들을 가지는 곱셈 누적기 회로를 설명하는 도면이다.
일 실시예에 따른 곱셈 누적기 회로(300)는 개별적으로 입력 신호를 수신 가능한 복수의 입력 라인들 및 개별적으로 출력 신호를 출력하는 복수의 출력 라인들을 포함할 수 있다. 복수의 출력 라인들 각각은 복수의 저항기들, 커패시터(320), 및 비교기(330)를 포함할 수 있다. 복수의 입력 라인들의 각 입력 라인은 복수의 출력 라인들에 교차할 수 있다. 도 3에 도시된 곱셈 누적기 회로(300)는 m개의 입력 라인들 및 n개의 출력 라인들을 포함할 수 있다. 입력 라인 및 출력 라인은 서로에 대해 수직으로 교차하는 것으로 도시되었으나, 이로 한정하는 것은 아니다. 곱셈 누적기 회로(300)는 복수의 저항기들, 복수의 커패시터들, 복수의 비교기들, 단일 시간 디지털 변환기(340), 및 출력부(350)를 포함할 수 있다.
복수의 저항기들은 복수의 출력 라인들 및 복수의 입력 라인들을 따라 배치될 수 있다. 예를 들어, 복수의 저항기들은 출력 라인을 따라 복수의 입력 라인들마다 배치될 수 있다. 복수의 저항기들 각각은 복수의 입력 라인들 중 해당 저항기(310)가 배치된 입력 라인을 통해 전압을 수신하도록 구성될 수 있다. 예를 들어, 제j 입력 라인(391)을 따라 배치된 저항기들은 제j 입력 전압 신호(bj)를 시작 신호에 응답하여 수신하도록 구성될 수 있다. 도 3에서 입력 전압 신호들(b1 내지 bm)은 바이너리 값을 지시하는 전압을 가질 수 있다. 예를 들어, 1의 비트 값을 지시하는 입력 전압 신호는 정해진 전압을 나타낼 수 있고, 0의 비트 값을 지시하는 입력 전압 신호는 플로팅 전압(floating voltage)을 나타낼 수 있다. 복수의 저항기들이 배치된 구조를 메모리 어레이(390)라고도 나타낼 수 있다.
복수의 커패시터들은 복수의 출력 라인들마다 개별적으로 배치될 수 있다. 복수의 커패시터들 각각은 복수의 출력 라인들 중 해당 커패시터(320)가 배치된 출력 라인을 따라 배치되는 저항기들의 타단 및 비교기(330)에 연결될 수 있다. 복수의 커패시터들 각각은 해당 저항기들을 통해 수신되는 전압에 응답하여 전하를 충전할 수 있다. 예를 들어, 제i 출력 라인(392)에 배치된 커패시터(320)는, 제i 출력 라인(392)에 배치된 저항기들에 인가되는 전압에 따른 전하를 충전할 수 있다. 참고로, 복수의 커패시터들은 서로 동일한 커패시턴스를 가질 수 있다. 복수의 출력 라인들이 단일 글로벌 카운터의 출력을 공유하므로, 각 출력 라인이 동일한 스케일의 충전 시간 또는 방전 시간을 가져야 하기 때문이다. 충전 시간 및 방전 시간은 합성 저항 값 및 커패시턴스에 대응하는 시상수에 비례하는 스케일을 나타낼 수 있다.
복수의 비교기들은 복수의 출력 라인들마다 개별적으로 배치될 수 있다. 복수의 비교기들 각각은 복수의 출력 라인들 중 해당 비교기(330)가 배치된 출력 라인을 따라 배치되는 저항기들의 타단 및 커패시터(320)와 연결되어, 해당 커패시터(320)의 대상 전압 및 기준 전압을 비교한 결과를 출력할 수 있다. 예를 들어, 제i 출력 라인(392)에 배치된 비교기(330)는, 제i 출력 라인(392)에 배치된 커패시터(320)의 대상 전압 및 기준 전압을 비교하고, 대상 전압이 기준 전압을 초과하는 경우에 응답하여, 제i 카운트 종료 신호(STOPi)를 출력할 수 있다.
시간 디지털 변환기(340)는 복수의 출력 라인들마다 카운트 종료 신호들을 수신하고, 시간 정보를 디지털 값으로 변환할 수 있다. 예를 들어, 시간 디지털 변환기(340)는 n개의 출력 라인들마다 개별적으로 시간 정보에 대응하는 디지털 값을 출력할 수 있다. 시간 디지털 변환기(340)는 시간 정보에 대응하는 n개의 디지털 값을 출력할 수 있다. 예를 들어, 시간 디지털 변환기(340)는 제i 카운트 종료 신호(STOPi)의 수신에 응답하여, 시작 신호(START)에 대응하는 시작 시점 및 카운트 종료 신호(STOPi)에 대응하는 출력 시점 간의 시간 차이를 지시하는 제i 시간 정보(Tout,i)를 생성할 수 있다. 제i 시간 정보(Tout,i)는 제i 충전 시간이라고도 나타낼 수 있다.
출력부(350)는 시간-디지털 변환기에 의해 생성된 디지털 값에 매핑된 값을 각 출력 라인의 출력 값(OUTs)으로 출력할 수 있다. 앞서 설명한 바와 같이 출력값(OUTs)은 시간 정보를 지시하는 디지털 값이 곱셈 누적 결과(multiplication accumulated result)에 대응하는 숫자로 매핑된 값일 수 있다. 예를 들어, 곱셉 누적기 회로는 매핑 테이블(예를 들어, 룩업 테이블)을 통해 제i 시간 정보(Tout,i)에 매핑된 제i 출력 값(OUTi)을 출력할 수 있다. 각 출력 라인마다 출력 값이 출력되므로, 출력부(350)는 n개의 출력 라인들에 대해 n개의 출력 값을 출력할 수 있다.
아래에서는 시간 디지털 변환기(340)에 포함되는 단일 글로벌 카운터를 설명한다.
도 4는 일 실시예에 따른 시간 디지털 변환기(TDC, time-to-digital converter)를 설명하는 도면이다. 도 5는 일 실시예에 따른 시간 디지털 변환기의 참조부를 설명하는 도면이다.
도 4는 도 3에서 상술한 시간 디지털 변환기의 예시적인 구성을 설명한다. 시간 디지털 변환기는 단일 글로벌 카운터(441) 및 참조부(442)를 포함할 수 있다.
단일 글로벌 카운터(441)는 시작 시점으로부터 경과된 시간을 지시하는 디지털 값을 출력할 수 있다. 단일 글로벌 카운터(441)는, 복수의 출력 라인들의 비교기들과 연결될 수 있다. 예를 들어, 단일 글로벌 카운터(441)는 시작 시점으로부터 기준 클럭(CLK)이 발생된 개수를 카운트할 수 있다. 따라서, 단일 글로벌 카운터(441)는 추가적인 동기화 동작이 없더라도, 개별 출력 라인에 대해 동일한 시작 시점을 기준으로 경과한 시간(예를 들어, 충전 시간 또는 방전 시간)을 기준 클럭 단위로 카운트할 수 있다.
참조부(442)는 비교 결과가 출력되는 시점에서 단일 글로벌 카운터(441)에 의해 출력되는 디지털 값을 참조할 수 있다. 참조부(442)는, 복수의 출력 라인들의 비교기들의 비교 결과를 참조하는 복수의 홀드 회로들(hold circuits)을 포함할 수 있다. 복수의 홀드 회로들 각각은, 복수의 출력 라인들 중 대응하는 출력 라인에 포함된 비교기로부터 비교 결과가 출력되는 시점을 참조할 수 있다. 예를 들어, 각 홀드 회로는 카운트 종료 신호가 수신된 출력 시점에서 단일 글로벌 카운터(441)에 의해 카운트된 기준 클럭(CLK)의 개수를 홀드할 수 있다. 출력 시점에서 홀드된 기준 클럭(CLK)의 개수는 시간 정보(예를 들어, 충전 시간 또는 방전 시간)에 대응할 수 있고, 시간 정보(Tout)로 출력될 수 있다.
단일 글로벌 카운터(441)는 복수의 홀드 회로들의 홀드 여부와 무관하게 기준 클럭(CLK)을 카운트할 수 있고, 각 홀드 회로는 나머지 홀드 회로와 독립적으로 동작할 수 있다. 예를 들어, 해당 홀드 회로가 카운트 종료 신호를 수신한 시점에 대응하는 시간 정보를 홀드하더라도, 단일 글로벌 카운터(441)는 계속해서 기준 클럭(CLK)을 카운트할 수 있다.
도 5에 도시된 바와 같이, 복수의 홀드 회로들 각각은, 플립플랍 회로(flip-flop circuit)로 구성될 수 있다. 단일 글로벌 카운터(441)는 클럭 생성부(544)로부터 기준 클럭을 수신하고, 시작 신호(START)에 응답하여 기준 클럭의 개수를 카운트할 수 있다. 각 플립플랍 회로는, 대응하는 출력 라인의 비교기로부터 카운트 종료 신호(STOPs)를 수신하는 경우에 응답하여, 시작 시점으로부터 카운트 종료 신호(STOPs)가 출력된 출력 시점까지 카운트된 기준 클럭의 개수를 지시하는 디지털 값을 홀드할 수 있다. 플립 플랍 회로(543)들에 의해 홀드되는 디지털 값은 시간 정보(Touts)를 지시할 수 있다. 시간 정보(Touts)는, 비교기의 비교 결과가 출력된 시점(time instant)을 지시하는 정보를 포함할 수 있다.
따라서 곱셈 누적기 회로에서 복수의 홀드 회로들이 각각 독립적으로 단일 글로벌 카운터(441)의 기준 클럭의 개수를 병렬적으로 카운트할 수 있다. 이 때, 홀드 회로가 간단한 플립플랍 구조로 구현되므로 전력 소모 및 회로에서 차지하는 면적이 최소화될 수 있다. 또한, 복수의 출력 라인들에 대해 여러 카운터가 배치될 필요가 없으므로, 곱셈 누적기 회로는 보다 간단한 소자들로 구현될 수 있다.
참고로, 아래 도 13에서 후술하는 뉴럴 네트워크의 일부 연산을 도 5에 도시된 곱셈 누적기 회로로 구현할 경우, 뉴럴 네트워크의 연결 가중치 값(Wj,i)은 내장 메모리에 대응하는 저항기들에 저장될 수 있다. 앞서 설명한 바와 유사하게, 입력 신호(b1 내지 bm)가 입력되는 시작 시점에서 시작 신호(START)가 시간 디지털 변환기(340)에 인가될 수 있다. 단일 글로벌 카운터(441)는 시작 신호(START)에 응답하여 카운트를 시작한다. 개별 저항기에서 입력 신호(b1 내지 bm) 및 연결 가중치 값(Wj,i) 간의 비트 곱셈(예를 들어, XNOR) 연산에 대응하는 저항 성분이 결정될 수 있다. 각 저항기의 저항 성분은 상술한 바와 같이 입력 전압 신호의 인가 여부 및 각 저항기의 내부 저항 값에 따라 달라질 수 있다. 비교기의 입력부에서는 전체 비트 곱셈 연산 결과에 대응하는 합성 저항 및 커패시터의 조합에 따라 결정되는 과도 특성(transient behavior)이 관측될 수 있다. 과도 특성에 의해 커패시터의 대상 전압이 미리 정해진 기준 전압(Vref)에 도달하는 경우에 응답하여, 비교기는 카운트 종료 신호(STOP)를 시간 디지털 변환기(340)에 전달하고, 시간 디지털 변환기는 시간 값을 디지털 값으로 출력할 수 있다.
도 6은 일 실시예에 따른 시간 디지털 변환기의 변환 동작을 설명하는 도면이다.
출력 라인에 배치된 커패시터의 대상 전압(639)은 도 6에 도시된 바와 같이 시상수(time constant)에 대응하는 고유 응답을 따라 점진적으로 증가할 수 있다. 커패시터에 점진적으로 전하가 충전되기 때문이다. 이 때, 도 5에서 상술한 클럭 생성부는 기준 클럭을 생성할 수 있고, 단일 글로벌 카운터는 시작 시점(START)으로부터 기준 클럭의 개수를 카운트할 수 있다. 단일 글로벌 카운터는 대상 전압(639)이 기준 전압(Vref)과 동일해지는 출력 시점(STOP) 이후에도 계속해서 기준 클럭의 개수를 카운트할 수 있다. 참조부의 홀드 회로는 시작 시점(START)으로부터 출력 시점(STOP)까지 카운트된 기준 클럭의 개수를 지시하는 디지털 값을 홀드할 수 있다. 예를 들어, 도 6에 도시된 예시에서, 시작 시점(START)으로부터 출력 시점(STOP)까지 6개의 기준 클럭이 생성되었고, 홀드 회로는 "6"의 디지털 값을 출력할 수 있다.
도 7은 일 실시예에 따른 곱셈 누적기 회로를 이용한 컴퓨팅 방법을 설명하는 흐름도이다.
우선, 단계(710)에서 곱셈 누적기 회로는 입력 신호를 수신할 수 있다. 예를 들어, 곱셈 누적기 회로는 개별 입력 라인을 통해 입력 신호를 수신할 수 있다. 입력 신호에 따라, 개별 입력 라인 별로 저항기에 전압이 인가되거나, 인가되지 않을 수 있다.
그리고 단계(720)에서 입력 신호에 응답하여 복수의 저항기들에 인가되는 전압에 따라, 복수의 저항기들에 연결되는 커패시터가 전하를 충전할 수 있다.
이어서 단계(730)에서 시간 디지털 변환기는 입력 신호, 복수의 저항기들, 및 커패시터의 조합에 따른 커패시터의 충전 시간을 디지털 값으로 변환할 수 있다.
도 8은 일 실시예에 따른 컴퓨팅 방법의 보다 상세한 예시를 설명한다.
우선, 단계(801)에서 곱셈 누적기 회로는 커패시터를 리프레시(refresh)할 수 있다. 예를 들어, 곱셉 누적기 회로는, 모든 출력 라인에서 입력 신호에 대한 디지털 출력 값을 출력한 후 다음 입력 신호를 수신하기 전까지 커패시터를 임계 전압 미만으로 방전시킬 수 있다. 곱셈 누적기 회로는 커패시터의 양단에 걸리는 전압이 임계 전압(예를 들어, 0V) 미만이 될 때까지 커패시터의 전하를 방전시킬 수 있다.
그리고 단계(810)에서 곱셈 누적기 회로는 곱셈 누적 연산을 시작할 지 여부를 결정할 수 있다. 예를 들어, 곱셈 누적기 회로는 시작 신호의 발생에 응답하여 다음 동작들을 수행할 수 있다. 곱셈 누적기 회로는 입력 신호가 수신되는 경우에 응답하여 시작 신호를 발생시킬 수 있다.
이어서 단계(815)에서 단일 글로벌 카운터는 시작 신호에 응답하여 카운트를 리셋할 수 있다. 예를 들어, 단일 글로벌 카운터는 기준 클럭의 개수를 0으로 리셋할 수 있다.
그리고 단계(820)에서 곱셈 누적기 회로는 입력 신호에 따라 저항기 및 커패시터로 전압을 인가할 수 있다. 예를 들어, 곱셉 누적기 회로는, 시작 신호(start signal)에 응답하여, 복수의 저항기들 중 입력 데이터에 의해 지시되는 입력 라인에 대응하는 저항기에 입력 신호를 인가할 수 있다. 입력 라인들을 통해 전압이 인가되면, 커패시터의 대상 전압이 고유 응답을 따라 점진적으로 증가할 수 있다.
단계(831)에서 단일 글로벌 카운터는 충전 시간을 카운트할 수 있다. 예를 들어, 단일 글로벌 카운터는 시작 신호가 생성된 시작 시점부터 기준 클럭의 개수를 카운트할 수 있다. 따라서 시간-디지털 변환기는, 시작 신호에 응답하여 경과 시간의 카운트를 시작할 수 있다.
그리고 단계(832)에서 비교기는 커패시터의 대상 전압이 기준 전압을 초과하는 지 여부를 결정할 수 있다. 비교기는 대상 전압이 기준 전압을 초과하는 경우 비교 결과를 출력할 수 있다. 대상 전압이 기준 전압 이하인 경우, 단계(831)로 되돌아가서 단일 글로벌 카운터가 기준 클럭의 개수를 계속해서 카운트할 수 있다.
이어서 단계(833)에서 시간 디지털 변환기는 충전 시간에 대응하는 디지털 값을 출력할 수 있다. 시간 디지털 변환기는 충전 시간으로서, 입력 신호가 수신되는 시작 시점으로부터 비교 결과가 출력되는 출력 시점까지 경과된 시간에 관한 시간 정보를 디지털 값으로 출력할 수 있다.
참고로, 도 1 내지 도 8에서는 입력 전압 신호가 저항기에 인가되는 예시를 설명하였으나, 이로 한정하는 것은 아니다. 아래 도 9에서는 입력 전압 신호 대신 공급 전압이 인가되는 예시를 설명한다.
도 9는 다른 일 실시예에 따라 스위칭에 의해 공급 전압이 인가되는 곱셈 누적기 회로를 설명하는 도면이다.
일 실시예에 따르면 곱셈 누적기 회로(900)는 복수의 저항기들(110) 각각에 연결되는 스위치를 포함할 수 있다. 도 9에서 입력 라인들마다 배치된 복수의 스위치들(901)은 SW'1 내지 SW'm으로 도시되었다.
복수의 스위치들(901)은 시작 신호에 응답하여 개방되거나 폐쇄될 수 있다. 복수의 스위치들(901)은 시작 신호가 발생한 후, 제공되는 스위칭 신호에 기초하여 양단을 연결하거나 분리할 수 있다. 스위칭 신호로서 입력 전압 신호가 수신될 수 있으며, 입력 전압 신호가 온 상태(ON state)에 대응하는 제1 전압 값을 나타내는 경우, 스위치는 양단을 연결하고, 오프 상태(OFF state)에 대응하는 제2 전압 값을 나타내는 경우, 스위치는 양단을 분리할 수 있다. 스위치가 금속 산화물 반도체 전계 효과 트랜지스터(MOSFET, Metal-Oxide-Semiconductor Field-Effect Transistor)로 구현되는 경우, 스위치는 게이트 노드를 통해 스위칭 신호를 수신할 수 있다. 예를 들어, 스위치의 게이트 노드는 입력 전압 신호를 수신할 수 있다.
복수의 스위치들(901) 각각은, 해당 스위치와 연결된 저항기가 배치된 입력 라인에서 수신되는 입력 전압 신호가 폐쇄 신호(close signal)인 경우, 공급 전압(VDD)을 해당 저항기로 전달하고, 개방 신호(open signal)인 경우, 해당 저항기의 일단을 개방할 수 있다. 예를 들어, 제j 입력 라인에 입력되는 제j 입력 전압 신호(Vj)가 폐쇄 신호이면 제j 스위치(SW'j)는 양단을 연결함으로써, 타단에서 수신된 공급 전압(VDD)을 일단에 연결된 제j 저항기(Rj)로 전달하고, 개방 신호인 경우, 제j 스위치(SW'j)는 양단을 분리함으로써, 제j 저항기(Rj)의 일단을 플로팅시킬 수 있다.
도 9에 설명하는 바와 같이 공급 전압(VDD)을 저항기에 인가하는 경우, 후술하는 바와 같이 충전 주기 뿐만 아니라 방전 주기 동안에도 곱셈 누적기 회로(900)가 동작할 수 있다.
도 10 내지 도 12는 도 9에 도시된 곱셈 누적기 회로의 충전 주기 동작 및 방전 주기 동작을 설명하는 도면이다.
곱셈 누적기 회로에서, 커패시터의 축전 용량에는 한계가 있으므로, 커패시터는 충전 후 방전될 필요가 있다. 따라서, 곱셈 누적기 회로는 도 10에 도시된 바와 같이 충전 주기(1010) 및 방전 주기(1020)를 반복할 수 있다. 여기서, 일 실시예에 따른 곱셈 누적기 회로는 충전 주기(1010) 뿐만 아니라 방전 주기(1020) 동안에도 곱셈 누적 결과를 산출할 수 있다.
도 11은 충전 주기(1010) 및 방전 주기(1020)에서의 곱셈 누적기 회로를 이용한 컴퓨팅 방법을 설명하는 흐름도이다.
우선, 단계(1111)에서 곱셈 누적기 회로는 커패시터를 완전 방전시킬 수 있다. 예를 들어, 곱셉 누적기 회로는 커패시터에 연결된 저항기에 접지 전압을 공급할 수 있다. 커패시터의 일단은 저항기에 연결되고, 타단은 접지에 연결되므로, 곱셈 누적기 회로는 접지 전압을 공급함으로써 커패시터를 방전시킬 수 있다.
그리고 단계(1112)에서 곱셈 누적기 회로는 충전 주기의 곱셈 누적 연산을 시작할 지 여부를 결정할 수 있다. 이어서 단계(1113)에서 단일 글로벌 카운터는 시작 신호에 응답하여 카운트를 리셋할 수 있다. 단계들(1112, 1113)의 상세는 도 8에서 상술한 단계들(810, 815)와 유사하므로 설명을 생략한다.
이어서 단계(1114)에서 곱셈 누적기 회로는 입력 신호에 따라 저항기 및 커패시터로 공급 전압을 제공할 수 있다. 예를 들어, 스위치는 충전 주기 동안 입력 전압 신호에 응답하여 공급 전압을 연결된 저항기에 인가할 수 있다. 도 9에 도시된 곱셈 누적기 회로에서 제j 입력 라인에 입력되는 제j 입력 전압 신호가 온 상태를 지시하는 경우, 제j 스위치(SW'j)의 양단이 연결될 수 있고, 공급 전압이 제j 저항기(Rj)를 통해 커패시터(C)로 제공될 수 있다. 반대로 제j 입력 라인에 입력되는 제j 입력 전압 신호가 오프 상태를 지시하는 경우, 제j 스위치(SW'j)의 양단이 분리될 수 있고, 제j 저항기(Rj)의 일단이 플로팅될 수 있다. 따라서, 복수의 저항기들 중 온 상태를 수신한 입력 라인의 저항기는 합성 저항을 형성할 수 있고, 오프 상태를 수신한 입력 라인의 저항기는 합성 저항의 형성으로부터 배제될 수 있다.
그리고 단계(1115)에서 곱셈 누적기 회로의 단일 글로벌 카운터는 충전 시간을 카운트할 수 있다. 단계(1114)에서 상술한 바에 따라 온 상태의 저항기를 통해 공급 전압이 전달되면, 커패시터는 전하를 충전할 수 있다. 커패시터에 전하가 충전될수록, 커패시터의 대상 전압은 온 상태의 저항기에 의해 형성된 합성 저항 및 커패시터에 대응하는 고유 응답에 따라 증가할 수 있다. 곱셈 누적기 회로는 커패시터가 전하를 충전하는 시간을 기준 클럭의 개수로서 카운트할 수 있다.
이어서 단계(1116)에서 비교기는 대상 전압 및 제1 기준 전압(Vref1)을 비교할 수 있다. 비교기는 공급 전압에 의해 커패시터에 전하가 충전되는 동안 커패시터에 저장된 전하에 따른 대상 전압이 제1 기준 전압(Vref1)을 초과하는 경우에 응답하여 비교 결과를 출력할 수 있다. 대상 전압이 제1 기준 전압(Vref1)에 도달하기 전까지, 단일 글로벌 카운터는 계속해서 기준 클럭의 개수를 카운트할 수 있다.
그리고 단계(1117)에서 시간 디지털 변환기는 충전 시간에 대응하는 디지털 값을 출력할 수 있다. 예를 들어, 시간 디지털 변환기는 시작 시점으로부터 상술한 단계(1116)에서 비교 결과가 출력된 출력 시점까지 카운트된 기준 클럭의 개수를 지시하는 디지털 값을, 충전 시간으로서 출력할 수 있다. 충전 시간은 디지털 코드 값으로 출력될 수 있다.
이후, 단계(1121)에서 곱셉 누적기 회로는 커패시터를 완전 충전할 수 있다.
그리고 단계(1122)에서 곱셉 누적기 회로는 방전 주기의 곱셈 누적 연산을 시작할 지 여부를 결정할 수 있다. 이어서 단계(1123)에서 단일 글로벌 카운터는 시작 신호에 응답하여 카운트를 리셋할 수 있다. 단계들(1122, 1123)의 상세는 도 8에서 상술한 단계들(810, 815)과 유사하므로 설명을 생략한다.
이어서 단계(1124)에서 곱셈 누적기 회로는 입력 신호에 따라 저항기 및 커패시터로 리셋 전압을 제공할 수 있다. 리셋 전압은 접지 전압에 대응할 수 있다. 예를 들어, 스위치는, 방전 주기 동안 입력 전압 신호에 응답하여 리셋 전압을 연결된 저항기에 인가할 수 있다. 도 9에 도시된 곱셈 누적기 회로에서 제j 입력 라인에 입력되는 제j 입력 전압 신호가 온 상태를 지시하는 경우, 제j 스위치(SW'j)의 양단이 연결될 수 있고, 리셋 전압(예를 들어, 접지 전압)이 제j 저항기(Rj)를 통해 커패시터(C)로 제공될 수 있다. 반대로 제j 입력 라인에 입력되는 제j 입력 전압 신호가 오프 상태를 지시하는 경우, 제j 스위치(SW'j)의 양단이 분리될 수 있고, 제j 저항기(Rj)의 일단이 플로팅될 수 있다. 따라서 방전 주기에서도 충전 주기와 유사하게 복수의 저항기들 중 온 상태를 수신한 입력 라인의 저항기는 합성 저항을 형성할 수 있고, 오프 상태를 수신한 입력 라인의 저항기는 합성 저항의 형성으로부터 배제될 수 있다.
그리고 단계(1125)에서 곱셈 누적기 회로의 단일 글로벌 카운터는 방전 시간을 카운트할 수 있다. 단계(1124)에서 상술한 바에 따라 온 상태의 저항기를 통해 리셋 전압이 전달되면, 커패시터는 충전되었던 전하를 방전시킬 수 있다. 커패시터에 전하가 방전될수록, 커패시터의 대상 전압은 온 상태의 저항기에 의해 형성된 합성 저항 및 커패시터에 대응하는 고유 응답에 따라 감소할 수 있다. 곱셈 누적기 회로는 커패시터가 전하를 방전하는 시간을 기준 클럭의 개수로서 카운트할 수 있다.
이어서 단계(1126)에서 비교기는 대상 전압 및 제2 기준 전압(Vref2)을 비교할 수 있다. 비교기는 리셋 전압에 의해 커패시터로부터 전하가 방전되는 동안 커패시터에 저장된 전하에 따른 대상 전압이 제2 기준 전압 미만(Vref2)인 경우에 응답하여 비교 결과를 출력할 수 있다. 대상 전압이 제2 기준 전압(Vref2)에 도달하기 전까지, 단일 글로벌 카운터는 계속해서 기준 클럭의 개수를 카운트할 수 있다.
그리고 단계(1127)에서 시간 디지털 변환기는 방전 시간에 대응하는 디지털 값을 출력할 수 있다. 예를 들어, 시간 디지털 변환기는 시작 시점으로부터 상술한 단계(1126)에서 비교 결과가 출력된 출력 시점까지 카운트된 기준 클럭의 개수를 지시하는 디지털 값을, 방전 시간으로서 출력할 수 있다. 방전 시간은 디지털 코드 값으로 출력될 수 있다.
도 12의 예시에서 제1 충전 주기(1211)에서 비교기는 해당 주기의 시작 시점으로부터 4개의 기준 클럭이 카운트된 시점에서 비교 결과를 출력하고, 시간 디지털 변환기는 "4"를 지시하는 시간 정보(Tout)를 출력할 수 있다. 제1 방전 주기(1222)에서 비교기는 해당 주기의 시작 시점으로부터 5개의 기준 클럭이 카운트된 시점에서 비교 결과를 출력하고, 시간 디지털 변환기는 "5"를 지시하는 시간 정보(Tout)를 출력할 수 있다. 제2 충전 주기(1213)에서 비교기는 해당 주기의 시작 시점으로부터 4개의 기준 클럭이 카운트된 시점에서 비교 결과를 출력하고, 시간 디지털 변환기는 "4"를 지시하는 시간 정보(Tout)를 출력할 수 있다. 제2 방전 주기(1224)에서 비교기는 해당 주기의 시작 시점으로부터 6개의 기준 클럭이 카운트된 시점에서 비교 결과를 출력하고, 시간 디지털 변환기는 "6"을 지시하는 시간 정보(Tout)를 출력할 수 있다.
따라서, 곱셈 누적기 회로는 충전과 방전을 교대로 진행함으로써 단순 방전으로 낭비될 수도 있는 전력을 재활용함으로써, 전력 누수를 최소화할 수 있다.
도 13은 일 실시예에 따른 곱셈 누적기 회로에 의해 구현될 수 있는 뉴럴 네트워크 연산의 예시를 설명하는 도면이다.
뉴럴 네트워크(1300)(neural network)는 딥 뉴럴 네트워크(DNN, deep neural network)의 예시에 해당할 수 있다. DNN은 완전 연결 네트워크(fully connected network), 딥 컨볼루셔널 네트워크(deep convolutional network) 및 리커런트 뉴럴 네트워크(recurrent neural network) 등을 포함할 수 있다. 뉴럴 네트워크(1300)는 딥 러닝에 기반하여 비선형적 관계에 있는 입력 데이터 및 출력 데이터를 서로 매핑함으로써 객체 분류, 객체 인식, 음성 인식 및 이미지 인식 등을 수행할 수 있다. 딥 러닝은 빅 데이터 세트로부터 이미지 또는 음성 인식과 같은 문제를 해결하기 위한 기계 학습 기법으로 지도식(supervised) 또는 비지도식(unsupervised) 학습을 통해 입력 데이터 및 출력 데이터를 서로 매핑할 수 있다.
도 13에는 설명의 편의를 위해 히든 레이어가 2개의 레이어를 포함하는 것으로 도시되었나, 히든 레이어는 다양한 수의 레이어들을 포함할 수 있다. 또한, 도 13에서 뉴럴 네트워크(1300)는 입력 데이터를 수신하기 위한 별도의 입력 레이어(1310)를 포함하는 것으로 도시되었으나, 입력 데이터가 히든 레이어에 직접 입력될 수 있다. 뉴럴 네트워크(1300)에서 출력 레이어를 제외한 레이어들의 인공 노드들은 출력 신호를 전송하기 위한 링크들을 통해 다음 레이어의 인공 노드들과 연결될 수 있다. 링크들의 수는 다음 레이어에 포함된 인공 노드들의 수에 대응할 수 있다.
히든 레이어에 포함된 각각의 인공 노드에는 이전 레이어에 포함된 인공 노드들의 출력이 가중된 형태로 입력될 수 있다. 가중된 형태의 입력은 가중된 입력(weighted input)이라 불릴 수 있으며, 이는 이전 레이어에 포함된 인공 노드들의 출력에 가중치(weight)가 곱해진 것이다. 가중치는 뉴럴 네트워크(1300)의 파라미터로 지칭될 수 있다. 이런 가중된 입력들의 합에 활성 함수(activation function)가 적용되어 다음 레이어로 출력될 수 있다. 활성 함수는 시그모이드(sigmoid), 하이퍼볼릭 탄젠트(hyperbolic tangent; tanh) 및 렐루(rectified linear unit; ReLU)를 포함할 수 있고, 활성 함수에 의해 뉴럴 네트워크(1300)에 비선형성이 형성될 수 있다. 출력 레이어에 포함된 각각의 인공 노드에는 이전 레이어에 포함된 인공 노드들의 출력이 가중된 형태로서 가중된 입력들이 입력될 수 있다.
딥러닝 알고리즘 구동을 위한 인메모리 연산(In memory computing)에 도 1 내지 도 12에서 상술한 곱셈 누적기 회로가 적용될 수 있다. 예를 들어, 뉴럴 네트워크(1300)의 노드(1321) 간에 전달되는 가중된 입력의 산출은 곱셉과 덧셈을 반복하는 MAC 연산으로 구성될 수 있다. 뉴럴 네트워크(1300)의 임의의 한 노드(1321)의 출력은 아래 수학식 7과 같이 나타낼 수 있다.
[수학식 7]
Figure pat00007
상술한 수학식 7은 임의의 레이어에서 m개의 가중된 입력 값들에 대한 i번째 노드(1321)의 출력 값 yi를 나타낼 수 있다. xj는 이전 레이어의 j번째 출력 값(예를 들어, 노드 값)을 나타낼 수 있고, wj,i는 이전 레이어의 j번째 출력 값 및 i번째 노드(1321)에 적용되는 가중치를 나타낼 수 있다. wj,ixj는 해당 레이어의 i번째 노드(1321)에 있어서 m개의 가중된 입력 값들 중 j번째 가중된 입력을 나타낼 수 있고, f()는 활성화 함수를 나타낼 수 있다. 수학식 7에 나타난 바와 같이, 활성화 함수에 대해, 노드 값 xj 및 가중치 wj,i의 곱셈 누적 결과가 사용될 수 있다. 다시 말해, 원하는 시점에 적절한 노드 값 xj 및 가중치 wj,i을 로드(load)해야 하는 메모리 접근 동작(memory access operation)과 이들을 곱하고 더하는 MAC연산이 반복될 수 있다.
일 실시예에 따르면 곱셈 누적기 회로의 복수의 저항기들은, 복수의 노드들을 포함하는 레이어를 포함하는 뉴럴 네트워크(1300)에서, 27
복수의 노드들을 연결하는 연결선의 연결 가중치에 대응하는 저항(resistance)을 가질 수 있다. 복수의 저항기들이 배치된 입력 라인들을 따라 제공되는 입력 전압 신호는, 노드 값 xj에 대응하는 값을 나타낼 수 있다. 따라서, 곱셈 누적기 회로는, 뉴럴 네트워크(1300)의 실시에 요구되는 연산들 중 적어도 일부를 수행할 수 있다. 참고로, 곱셈 누적기 회로에서 저항기의 저항값들은 고정되는 것은 아니고, 상술한 바와 같이 메모리에 저장된 가중치 값에 대응하는 저항값으로 변경될 수도 있다.
다만, 일 실시예에 따른 곱셈 누적기 회로의 적용을 이로 한정하는 것은 아니고, 이외에도 아날로그 회로 특성을 사용한 복수 입력 데이터를 저전력으로 빠르게 처리해야하는 연산 동작에도 활용될 수 있다.
일 실시예에 따른 곱셈 누적기 회로는 TDC(Time to digital converter)를 사용한 인 메모리 연산(In memory computing) 구조의 아날로그 덧셈, 디지털 변환 회로를 결합한 저전력 구조를 가질 수 있다. 앞서 설명한 바와 같이, 곱셈 누적기 회로는 하나의 TDC, 더 나아가 단일 글로벌 카운터를 이용하여 복수개의 열 데이터(column data)(예를 들어, 출력 라인들에 대응하는 데이터)를 연산할 수 있다. 시작 신호(START)가 동기화되므로, 종료 신호(STOP)에 해당하는 카운트 값만 열(column)별로 독립적으로 참조할 수 있기 때문이다. 따라서 하나의 TDC로 인 메모리에서 전체 어레이의 병렬 연산이 커버될 수 있다. 기존 ADC 구조의 경우, 개별 열(column)마다 ADC가 각각 요구되고, 비트 정확도(bit precision)를 높이기 위해 복잡한 구조가 요구되는 바, 필요하는 전력과 면적이 크다. 다만, 일 실시예에 따른 곱셈 누적기 회로와 같은 TDC 구조는, 간단한 카운터를 사용하여 덧셈값을 디지털화(digitize)하므로 회로가 간단하다. 또한, 단일 TDC로 전체 어레이 연산을 커버하므로 소모 전력, 및 크기가 감소될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다.  예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.  
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
300: 곱셈 누적기 회로
310: 저항기
320: 커패시터
330: 비교기
340: 시간 디지털 변환기
350: 출력부
391: 입력 라인
392: 출력 라인
390: 메모리 어레이

Claims (22)

  1. 곱셈 누적기(MAC, multiply-accumulator) 회로에 있어서,
    입력 신호에 응답하여 전압이 인가되는 복수의 저항기들;
    상기 복수의 저항기들에 연결되고 상기 전압의 인가에 따라 전하를 충전하는 커패시터; 및
    상기 입력 신호, 상기 복수의 저항기들, 및 상기 커패시터의 조합에 따른 상기 커패시터의 충전 시간을 디지털 값으로 변환하는 시간-디지털 변환기(TDC, time-to-digital converter)
    를 포함하는 곱셉 누적기 회로.
  2. 제1항에 있어서,
    각각 상기 복수의 저항기들 및 상기 커패시터를 포함하는 복수의 출력 라인들
    을 더 포함하고,
    각 출력 라인의 커패시터는 동일한 커패시턴스를 가지는,
    곱셈 누적기 회로.
  3. 제1항에 있어서,
    상기 복수의 저항기들 및 상기 커패시터에 연결되고, 상기 커패시터에 충전되는 전하량에 대응하는 대상 전압(target voltage)을 기준 전압(reference voltage)에 대해 비교한 비교 결과를 출력하는 비교기
    를 더 포함하고,
    상기 시간-디지털 변환기는,
    상기 비교기의 비교 결과에 기초하여 상기 충전 시간을 지시하는 시간 정보를 상기 디지털 값으로 변환하는,
    곱셉 누적기 회로.
  4. 제3항에 있어서,
    상기 시간 정보는,
    상기 비교 결과가 출력된 시점(time instant)을 지시하는 정보를 포함하는,
    곱셉 누적기 회로.
  5. 제4항에 있어서,
    상기 비교기는,
    상기 입력 신호에 따른 전압에 의해 상기 커패시터가 충전되면서 상기 대상 전압이 상기 기준 전압을 초과하는 경우에 응답하여, 상기 비교 결과를 출력하는,
    곱셉 누적기 회로.
  6. 제1항에 있어서,
    상기 입력 신호는,
    입력 데이터에 대응하며 복수의 입력 라인들에 입력되는 일련의 입력 전압 신호들을 포함하는,
    곱셈 누적기 회로.
  7. 제1항에 있어서,
    상기 복수의 저항기들은 서로 병렬로 연결되고,
    상기 복수의 저항기들 각각의 일단은 스위치를 통해 전압을 수신 가능하게 구성되고, 타단은 상기 커패시터 및 비교기에 연결되는,
    곱셉 누적기 회로.
  8. 제1항에 있어서,
    상기 복수의 저항기들 중 상기 입력 신호에 의해 상기 전압이 인가된 하나 이상의 저항기가 합성 저항을 형성하고,
    상기 시간-디지털 변환기는,
    상기 합성 저항, 및 상기 커패시터의 커패시턴스의 조합에 대응하는 상기 충전 시간을 상기 디지털 값으로 변환하는,
    곱셉 누적기 회로.
  9. 제1항에 있어서,
    상기 시간-디지털 변환기는,
    상기 충전 시간으로서, 상기 입력 신호가 수신되는 시작 시점으로부터 상기 비교 결과가 출력되는 출력 시점까지 경과된 시간에 관한 시간 정보를 상기 디지털 값으로 출력하는,
    곱셉 누적기 회로.
  10. 제1항에 있어서,
    상기 시간-디지털 변환기는,
    시작 시점으로부터 경과된 시간을 지시하는 디지털 값을 출력하는 단일 글로벌 카운터; 및
    상기 비교 결과가 출력되는 시점에서 상기 단일 글로벌 카운터에 의해 출력되는 디지털 값을 참조하는 참조부
    를 포함하는 곱셉 누적기 회로.
  11. 제10항에 있어서,
    복수의 출력 라인들 각각은 복수의 저항기들, 커패시터, 및 비교기를 포함하고,
    상기 단일 글로벌 카운터는,
    상기 복수의 출력 라인들의 비교기들과 연결되며,
    상기 참조부는,
    상기 복수의 출력 라인들의 비교기들의 비교 결과를 참조하는 복수의 홀드 회로들(hold circuits)을 포함하고,
    상기 복수의 홀드 회로들 각각은,
    상기 복수의 출력 라인들 중 대응하는 출력 라인에 포함된 비교기로부터 비교 결과가 출력되는 시점을 참조하는,
    곱셉 누적기 회로.
  12. 제11항에 있어서,
    상기 복수의 홀드 회로들 각각은,
    플립플랍 회로(flip-flop circuit)로 구성되는,
    곱셉 누적기 회로.
  13. 제1항에 있어서,
    상기 복수의 저항기들은,
    복수의 노드들을 포함하는 레이어를 포함하는 뉴럴 네트워크에서, 상기 복수의 노드들을 연결하는 연결선의 연결 가중치에 대응하는 저항(resistance)을 가지는,
    곱셉 누적기 회로.
  14. 제1항에 있어서,
    상기 시간-디지털 변환기에 의해 생성된 디지털 값에 매핑된 값을 각 출력 라인의 출력 값으로 출력하는 출력부,
    를 더 포함하는 곱셉 누적기 회로.
  15. 제1항에 있어서,
    상기 곱셉 누적기 회로는,
    모든 출력 라인에서 상기 입력 신호에 대한 디지털 출력 값을 출력한 후 다음 입력 신호를 수신하기 전까지 상기 커패시터를 임계 전압 미만으로 방전시키는,
    곱셉 누적기 회로.
  16. 제1항에 있어서,
    상기 곱셉 누적기 회로는,
    시작 신호에 응답하여 단일 글로벌 카운터의 카운트를 리셋하는,
    곱셉 누적기 회로.
  17. 제1항에 있어서,
    상기 곱셉 누적기 회로는,
    시작 신호(start signal)에 응답하여, 상기 복수의 저항기들 중 입력 데이터에 의해 지시되는 입력 라인에 대응하는 저항기에 상기 입력 신호를 인가하고,
    상기 시간-디지털 변환기는,
    상기 시작 신호에 응답하여 경과 시간의 카운트를 시작하는,
    곱셉 누적기 회로.
  18. 제1항에 있어서,
    상기 복수의 저항기들 중 한 저항기에 연결되고, 입력 데이터가 상기 연결된 저항기를 포함하는 입력 라인을 지시하는 경우에 응답하여 시작 신호를 수신할 때 상기 입력 데이터에 따른 입력 전압 신호를 상기 연결된 저항기에 전달하는 스위치
    를 더 포함하는 곱셉 누적기 회로.
  19. 제1항에 있어서,
    상기 복수의 저항기들의 각 저항기의 일단에 연결되는 스위치
    를 더 포함하고,
    상기 스위치는,
    해당 저항기가 배치된 입력 라인에서 수신되는 입력 전압 신호가 폐쇄 신호(close signal)인 경우에 응답하여, 공급 전압을 해당 저항기로 전달하며,
    해당 저항기가 배치된 입력 라인에서 수신되는 입력 전압 신호가 개방 신호(open signal)인 경우에 응답하여, 해당 저항기의 일단을 개방하는,
    곱셉 누적기 회로.
  20. 제1항에 있어서,
    상기 복수의 저항기들 중 한 저항기에 연결되고, 충전 주기 동안 입력 전압 신호에 응답하여 공급 전압을 상기 연결된 저항기에 인가하는 스위치
    를 더 포함하는 곱셉 누적기 회로.
  21. 제20항에 있어서,
    상기 스위치는,
    방전 주기 동안 상기 입력 전압 신호에 응답하여 리셋 전압을 상기 연결된 저항기에 인가하고,
    상기 공급 전압에 의해 상기 커패시터에 전하가 충전되는 동안 상기 커패시터에 저장된 전하에 따른 대상 전압이 제1 기준 전압을 초과하는 경우에 응답하여 비교 결과를 출력하고, 상기 리셋 전압에 의해 상기 커패시터로부터 전하가 방전되는 동안 상기 커패시터에 저장된 전하에 따른 대상 전압이 제2 기준 전압 미만인 경우에 응답하여 비교 결과를 출력하는 비교기
    를 더 포함하는 컴퓨팅 장치.
  22. 곱셉 누적기 회로에 의해 수행되는 컴퓨팅 방법에 있어서,
    입력 신호를 수신하는 단계;
    상기 입력 신호에 응답하여 복수의 저항기들에 인가되는 전압에 따라, 상기 복수의 저항기들에 연결되는 커패시터가 전하를 충전하는 단계; 및
    상기 입력 신호, 상기 복수의 저항기들, 및 상기 커패시터의 조합에 따른 상기 커패시터의 충전 시간을 디지털 값으로 변환하는 단계
    를 포함하는 컴퓨팅 방법.
KR1020200046244A 2019-09-03 2020-04-16 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법 KR20210028063A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/987,863 US11573792B2 (en) 2019-09-03 2020-08-07 Method and computing device with a multiplier-accumulator circuit
CN202010812126.4A CN112445456A (zh) 2019-09-03 2020-08-13 使用乘法器-累加器电路的系统、计算装置和方法
EP20193761.2A EP3789870B1 (en) 2019-09-03 2020-09-01 Method and computing device with a multiplier-accumulator circuit

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190109173 2019-09-03
KR20190109173 2019-09-03

Publications (1)

Publication Number Publication Date
KR20210028063A true KR20210028063A (ko) 2021-03-11

Family

ID=75143356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200046244A KR20210028063A (ko) 2019-09-03 2020-04-16 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20210028063A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11514980B2 (en) 2020-07-03 2022-11-29 Samsung Electronics Co., Ltd. Apparatus and method with in-memory delay dependent processing
US11581042B2 (en) 2020-08-11 2023-02-14 Samsung Electronics Co., Ltd. Processing apparatus and electronic device including the same

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11514980B2 (en) 2020-07-03 2022-11-29 Samsung Electronics Co., Ltd. Apparatus and method with in-memory delay dependent processing
US11756610B2 (en) 2020-07-03 2023-09-12 Samsung Electronics Co., Ltd. Apparatus and method with in-memory delay dependent processing
US11581042B2 (en) 2020-08-11 2023-02-14 Samsung Electronics Co., Ltd. Processing apparatus and electronic device including the same

Similar Documents

Publication Publication Date Title
CN112445456A (zh) 使用乘法器-累加器电路的系统、计算装置和方法
US11615165B2 (en) Systems and methods for mapping matrix calculations to a matrix multiply accelerator
KR102653822B1 (ko) 혼성 신호 컴퓨팅 시스템 및 방법
KR102542532B1 (ko) 혼합-신호 연산 시스템 및 방법
JP2021185479A (ja) インメモリプロセシングを行う装置、及びそれを含むコンピューティング装置
KR102207909B1 (ko) 비트라인의 전하 공유에 기반하는 cim 장치 및 그 동작 방법
KR20210028063A (ko) 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법
US20230359571A1 (en) System and methods for mixed-signal computing
CN110365338B (zh) 用于跳过复位的模数转换器(adc)和模数转换方法
US20220004853A1 (en) Product-sum calculation unit, neuromorphic device, and product-sum calculation method
JP2022008142A (ja) 回路を利用して所定の演算を遂行する装置及び方法
CN113767402A (zh) 模拟神经元的计算高效实施方式
CN115525250A (zh) 内存计算电路
TWI810910B (zh) 具有位元跳過功能性之類比至數位轉換
WO2024125279A2 (en) Hardware for parallel layer-norm compute
US20240211532A1 (en) Hardware for parallel layer-norm compute
KR20230090758A (ko) 뉴럴 네트워크 회로 및 장치
JP2023029223A (ja) インメモリコンピューティング装置及び方法
JP2022176082A (ja) 複製ビットセル基盤のmac演算装置及び方法
Zurla et al. Designing Circuits for AiMC Based on Non-Volatile Memories: a Tutorial Brief on Trade-offs and Strategies for ADCs and DACs Co-design
JP2022173059A (ja) ハイブリッドadc基盤のmac演算回路及び方法

Legal Events

Date Code Title Description
A201 Request for examination