본문 바로가기
Studies/Circuit Design

Voltage Averaging with Parallel Switched Capacitors

by veritedemoi 2021. 1. 14.

병렬로 연결된 switched capacitor들은 주로 Digital-to-Analog Converter (DAC) 및 Analog-Digital Converter(ADC) 등에 자주 쓰인다. 주로 커패시터가 갖고 있는 $Q = CV$의 성질과 $C=\epsilon \frac{A}{d}$의 성질로 유전율, 극판의 면적, 혹은 사이의 거리 등으로 커패시턴스를 변화시켜서 bit의 위치를 결정한다. 이런 메커니즘으로 LSB부터 MSB까지 디지털과 아날로그 사이를 오가는 방법으로 쓰이게 된다.

 

그런데 얼마 전, 극판의 면적 $A$가 모두 같은 parallel switched capacitors를 쓰는 Quasi-Passive Capacitor DAC를 다룬 논문을 보고 구조가 흥미로운 것 같아 관련 내용을 정리해보고자 한다.

 

그리고 이 구조로 인해 생기는 Voltage Averaging이라는 측면이 Deep Learning에 어떻게 적용되는지 역시 간략하게 다뤄보겠다.

 

 

 

Parallel Switched Capacitors


 

상단의 다이어그램을 보면 $C1$과 $C2$가 모두 $3C$로 같은 커패시턴스(유전율과 극판 간격이 같다고 할 때, 면적이 같음) 임을 알 수 있다. 그리고 $C1$의 node에 $+3V$라는 전압이 걸려있고, 현재는 $C2$ node에 해당하는 스위치가 열려있기 때문에 $C2$에는 전압이 걸려있지 않을 것이다.

 

이 상황에서 다음과 같이 $C2$ node에 해당하는 스위치를 닫게 된다면 $C1$과 $C2$에 걸리는 전압은 어떻게 될까?

 

 

먼저, $C1$에 걸릴 전압을 $(a) V$, $C2$에 걸릴 전압을 $(b) V$라고 해보자. 커패시터는 저항과 달리 전압에 의해 흘려들어오는 전류를 상황에 따라 갖고있을 수 있는 성질의 소자다. (靜電, 정전)

 

즉, 앞서 언급했던 $Q = CV$의 성질에 의해 처음 $+3V$가 $C1$에 인가되었을 때, $Q_{C1_{0}}=3V\times3C=9C$의 전하량을 $C1$이 갖고 있게 된다는 것이다.

 

이 상황에서 스위치가 닫혀 $C2$와 $C1$의 node가 short 된다면, circuit 내의 전하량을 공유하게 된다. 따라서, 총 전하량 $9C$를 커패시터끼리 서로 커패시턴스가 같으므로 $4.5C$씩 나눠갖게 되는 것이다.

 

그렇게 되면서, $Q_{C1_{1}}=Q_{C2_{1}}=(a)V\times3C=(b)V\times3C=4.5C$가 되고, 결론적으로 $(a)V = (b)V = 1.5V$가 되게 된다.


 

 

Voltage Averaging


위에 나온 상황은 커패시터가 2개 밖에 없는 매우 간단한 상황이므로, voltage averaging이 구체적으로 어떻게 일어나는지에 관한 설명은 덧붙이지 않았다. 그렇다면 이런 상황을 한번 생각해보자.

 

 

위와 같이 여러 개의 parallel switched capacitors의 입력 node에 *어떤 data의 input vector와 weight vector의 곱이 전압의 형태로 인가될 때 **$\bf\large V_{out}$을 구하는 게 목적인 상황이다.

 

* ) In-Memory Computing (Processing-in-Memory, Computation-in-Memory)의 핵심 메커니즘이다. 프로세서나 GPU와 달리, Memory의 Discharging, Bitline Charge Destribution 등을 이용해서 머신 러닝 알고리즘에 사용될 수많은 input-/weight vector들 사이의 multiplication을 전기적 성질 (voltage, charge)로 구현하는 것. 전체적인 머신 러닝 알고리즘이 Multiplication-and-Accumulation을 필요로 하기 때문에 이 곱의 값들을 합하는 과정 역시 회로적으로 구현하고, 구현된 값들을 디지털로 변환하는 것까지가 IMC의 전체적인 메커니즘이라고 할 수 있다.

** ) 여기서는 $V_{out}$의 값이 input vector들과 weight vector들이 서로 곱해진 값들을 accumulate 한 값이라고 할 수 있다. 이 $V_{out}$이 알고리즘을 통해 어떤 결과를 도출해내느냐가 머신 러닝 혹은 딥 러닝의 성능을 나타낸다. 

구하려고 하는 $V_{out}$의 값을 수식으로 표현해본다면,

$\large V_{out}=\frac{1}{n}\cdot\left(\sum_{i=1}^nx_{i}w_{i}\right)$ 가 된다.

 

이 부분이 다루려고 했던 voltage averaging technique이다. 커패시터의 면적이 모두 같기 때문에 서로 같은 커패시턴스를 갖고 있고, 그렇게 되면서 정확히 커패시터의 개수만큼 평균이 산출되는 것이다. 그렇다면 이 Averaging이 Deep Learning on Analog/Digital Circuit에서 어떻게 쓰이는지 다뤄보자. 

 

$$\large Y_{k}=\sum_{i=1}^{R\times R\times C} W_{k,i}\times X_{i}$$
라는 CNN에서의 3-D tensor를 1-D vector로 나타낸 식이 있다고 하자. 여기서 filter weight이 binary weight이고, $a_{k}$가 $k$th filter의 common coefficient이다. 
만약 $a_{k}$가 $M_{k}$와 $N$이라는 정수 사이의 비율이라면, 
($\large M$: filter의 개수, $N$: 회로 내에서 1 cycle의 dot product당 더해지는 요소의 개수)

$$\large Y_{k}=a_{k}\sum_{i=1}^{R\times R\times C} W_{k,i}\times X_{i}, w_{i}\in(+1, -1)$$
$$\large =\frac{M_{k}}N\sum_{i=1}^{R\times R\times C} W_{k,i}\times X_{i}, M_{k}, N\in I^{+}$$

그리고 여기서 scaling factor인 $M_{k}$를 나중에 적용하는 방향으로 제쳐두면, 
$$\large Y_{OUT,k}=\frac{1}{N} \sum_{i=1}^{R\times R\times C}w_{k,i}\times X_{IN, i}$$
라는 식이 도출되게 된다.

이는 In-Memory Computing Hardware가 더 나은 Energy Efficiency를 가질 수 있도록 만들어진 알고리즘이다.
Voltage가 낮은 범위에서 쓰일수록 에너지 효율성이 올라가는 점을 이용.

Source: A. Biswas and A. P. Chandrakasan, "CONV-SRAM: An Energy-Efficient SRAM With In-Memory Dot-Product Computation for Low-Power Convolutional Neural Networks," in IEEE Journal of Solid-State Circuits, vol. 54, no. 1, pp. 217-230, Jan. 2019, doi: 10.1109/JSSC.2018.2880918.

 

위의 figure가 이번 포스팅의 전체적인 주제를 주요 아이디어로 사용한 논문에서 제시한 in-memory matrix-vector multiplier의 가장 중요한 구조 요소이다. SRAM에 $n$-bit의 binary weight을 저장하게 되면, 두 bitline을 따라 $V_{pre}$ 혹은 $V_{CM}$에 short 된 스위치가 닫혀 같은 size의 capacitor들로 하여금 proportional voltage를 생성하는 것이다.

그렇게 해서 각 $\bf IMCU$에 해당하는 $V_{C,out,N}$들이 모두 short 되어 $V_{col,N}\propto \frac{1}{N}\sum_{n=1}^N w_{n,1}\cdot x_{n}$ 과 같은 SRAM column당 multiplication-and-accumulation 값들이 average 된 결괏값이 도출된다.

이 구조는 capacitor의 variation due to fabrication 등의 약점은 있지만, 다른 IMC 구조들보다 굉장히 robust하다는 점이 장점이다.

Source: R. Khaddam-Aljameh, P. -A. Francese, L. Benini and E. Eleftheriou, "An SRAM-Based Multibit In-Memory Matrix-Vector Multiplier With a Precision That Scales Linearly in Area, Time, and Power," in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, doi: 10.1109/TVLSI.2020.3037871.


 

 

요약하자면, 딥러닝을 위한 하드웨어 설계에 있어서 DAC 및 ADC의 역할은 굉장히 중요하고, 보다 효율적인 알고리즘 구동을 위한 회로 구조 역시 중요하다. 이 포스팅 전체적으로는 parallel switched capacitor를 이용한 charge domain에서의 컴퓨팅을 중점적으로 다뤘고, 추후 포스팅에서도 또 다른 domain에서 컴퓨팅을 구현하는 회로 구조에 대해 알아보도록 하겠다.

댓글