[SRAM-PIM Core Circuit] CIM of a ML Classifier in Standard 6T SRAM (Study Paper)

"In-Memory Computation of a Machine-Learning Classifier in a Standard 6T SRAM Array"


1. Introduction

※ 6T SRAM : 저장을 위한 2개의 Inverter(4개의 트랜지스터) + 2개의 Pass-Gate(2개의 트랜지스터)
ML 알고리즘은 복잡한 신호 속에서 의미 있는 정보를 추론하는 능력이 뛰어나 Sensing Application에서 중요한 역할을 한다.
많은 application에서 시스템은 특정 사건이 발생했을 때 즉각 반응해야 하므로 "Always-on" 감지 및 추론 기능이 필요하다. (like Hey, Siri)
But, 요즘 ML 모델은 너무 복잡해서 한 번의 결정을 내리는데 큰 전력을 소모한다.

대안책 : 저성능인 초저전력 탐지기를 이용해 상황을 감시하고 무언가를 감지했을 때만 고성능 노드를 깨워서 정밀 분석
→ 초저전력 탐지기로 탐지에 소요되는 에너지를 봤더니, 메모리 접근에서 에너지를 가장 많이 소모하는 것을 알아냈다.
∵ 현재 컴퓨터 구조는 폰 노이만 구조로 데이터를 저장하는 메모리(like RAM)와 연산을 하는 Processor(like CPU)가 분리
∴ 데이터를 계산하는 곳으로 옮기는 과정에서 발생하는 에너지와 속도 저하가 전체 성능을 지배하기 때문에 우리가 흔히 쓰는 표준 6T SRAM 내부에서 데이터 저장과 연산을 결합하는 Architecture를 생각했다. (MAC 없이 SRAM 안에서 연산 진행)

2. System Overview


위 그림은 표준 6T Bit-Cell SRAM Array와 2가지 동작모드(저장과 연산)를 지원하기 위해 주변회로를 나타낸 것이다. 학습된 가중치 모델이 각 6T Bit-Cell에 저장된다.
※ 6T SRAM Array : 일반적인 데이터 저장소 역할과 동시에, ML의 연산기 역할을 수행

SRAM Mode) Digital Data를 읽고 쓰는 단계로 학습된 가중치 값을 Bit-Cell에 저장, 한 번에 하나의 WL만 켠다.
※ Write Buffer : 가중치를 Cell에 기록할 때 강한 전압으로 BL을 구동한다.
※ Read Buffer : Cell에 저장된 데이터를 검증하거나 읽을 때 사용한다.

Classify Mode) 연산을 위해 모든 WL을 동시에 활성화하고 각 행의 WL에 Digital 형태가 아닌 "Analog 전압 형태"로 인가한다.
→ 모든 Bit-Cell이 동시에 작동하여 병렬 연산을 수행
※ FV Buffer(Feature Vector Buffer) : 분류할 입력 데이터
※ WLDAC : Digital 입력 데이터(5-bit)을 Analog 전압으로 변환하여 WL에 공급
**WLDAC에서 온 Analog 전압(입력 데이터)과 SRAM Cell에 저장된 데이터(가중치)가 만나 Bit-Cell 전류 생성
**Classify Mode와 SRAM Mode가 WL을 공유하고 있기 때문에 절대로 동시에 켜지면 안된다.
    → 데이터를 읽고 쓸 때는 SRAM_EN만, In-Memory Computation을 할 때는 CLASS_EN만 켜져야 한다.

※ Weak Classify : 데이터의 복잡한 분포를 완벽하게 학습 불가한 저성능 모델
※ Strong Classify : 임의의 복잡한 데이터의 결정 경계도 잘 나누는 고성능 모델
Classify Mode에서 각 SRAM 열은 Weak Classify를 형성 = 하나의 열이 하나의 간단한 연산을 수행한다는 의미
→  SRAM 열 여러 개를 합쳐서 Strong Classify를 만드는 것이 최종 목표

Column-Based Weak Classfier의 동작 원리
준비 : BL/BLB에 VDD와 같은 전압을 미리 충전
입력 : WL에 입력 값(feature)에 해당하는 Analog 전압을 걸어 트랜지스터를 켜서 IBC를 생성 (전류의 양 ∝ 입력 값의 크기)
곱셈 : Bit-Cell에 저장된 데이터(0/1)에 따라 BL/BLB 중 하나에 적용
덧셈 : BL/BLB에 연결된 모든 Cell의 전류를 더함
결과 : 전압 차이가 BL이 더 크면 -1, BLB가 더 크면 +1 Digital 결과를 출력 (전압 차이 대신 내적 합으로 판단 가능)

Example)
상단 Cell 입력값 3 → 왼쪽 하단 nMOS on → BL에서 3만큼 빠져 나감 → 내적값 = -3
하단 Cell 입력값 5 → 오른쪽 하단 nMOS on → BLB에서 5만큼 빠져나감 → 내적값 = +5
BLB의 방전량이 더 큼 → +1 (내적합 = - 3 + 5 = +2 → +1)

한계)
· 비이상성 : Analog 회로 특성 상 전류가 정확하게 비례하지 않고 오차와 비선형성이 존재
· 가중치 제약 : SRAM Cell은 0/1만 저장하므로 가중치를 +/- 1로 밖에 설정 불가

3. Classifier Training

1) 회로 오류인 Bit-Cell 변동과 비선형성을 극복하기 위한 Boosting 학습 기법 사용
  AdaBoost : 여러 개의 Weak Classifier를 반복적으로 훈련, 각 단계에서 이전 반복 단계의 오류를 강조하고 수정하도록 편향
  즉, 1번 분류기가 틀린 문제에 가중치를 더 줘서, 2번 분류기는 그 틀린 문제를 더 집중적으로 공부
  EACB(Error-Adaptive Classifier Boosting) : AdaBoost 알고리즘의 확장
  단순히 데이터의 분류 오차 뿐만 아니라, SRAM 회로가 낸 오차까지 학습에 반영
  이후 여러 열의 결과를 모아서 다수결을 통해 최종적으로 Strong Classifier 구성

2) 강제로 0/1로 변형하여 정보가 손실되는 1-bit 가중치 오류를 극복하기 위한 Quantization
  표준 선형 분류기 훈련 후에 가중치를 1-bit로 양자화(가중치를 단순히 반올림하여 +/- 1로 바꿈)하면, 정확도가 심각 감소
  → 학습이 끝난 후 바꾸는 것이 아닌 학습 과정 중 답은 무조건 +/- 1이라는 제약을 걸고 최적화를 수행한다.

왼쪽 그림 MNIST 0~2 구분 실험
가중치를 10-bit로 양자화한 선형 분류기의 결정 경계 = 96%의 높은 정확도
가중치를 1-bit로 단순 양자화한 분류기의 결정 경계 = 52%로 매우 낮은 정확도(가중치가 +/- 1 밖에 없으므로 기울기는 45˚)
최적화를 사용하여 가중치를 1-bit로 양자화한 분류기 = 91%의 정확도

오른쪽 그림 MNIST 0~9 구분 실험
청녹색 : 64-bit 부동 소수점 가중치를 사용한 선형 분류기의 성능 = 컴퓨터에서 완벽하게 계산한 경우
녹색 : 가중치를 10-bit로 양자화한 분류기 = 한계점
갈색 : 가중치를 1-bit로 단순 양자화한 분류기 = 성능 최악
파란색 : 최적화를 사용하여 가중치를 1-bit로 양자화한 분류기 = 높은 정확도
빨간색 : 실제 칩에 올렸을 때는 HW 오류인 회로 비이상성으로 인해 성능이 저하되지만 EACB를 통해 회복 가능

4. Circuit Design

WLDAC
5-bit 입력 데이터를 아날로그 전류값으로 바꾸기 위해 pMOS Transistor 사용
→ bit가 높을수록 전류를 많이 흘리도록 Transistor 크기(개수)를 설계하여 합산 전류를 만들어냄
Vbias, O는 Offset 전류의 양을 결정
Xoffset(bar)는 Offset 전류원을 흐르게 할지 말지 결정
→ 항상 미세한 전류를 흘려보내는 역할을 하여 WL 전압이 즉각적으로 반응하도록 한다.
Bit-Cell Replica는 IDAC를 받아 WL 전압으로 변환
분류 모드가 켜지면 CLASS_EN이 켜져 마치 메모리 Cell이 '0' 데이터를 저장하고 있는 것처럼 동작
→ Pull-Down 동작을 하여 전류를 흐르게 한다.
오른쪽은 실제 메모리 배열의 한 칸(Bit-Cell)으로 Replica에 의해 만들어진 WL 전압을 받아 IBC를 흐르게 한다.(선형성)
→ 정확한 Analog 전압을 만들기 위해 Replica에서 Transistor의 크기를 R배 크게 만들었다.
→ 수천 개의 메모리 Cell에서 모두 큰 전류가 흐르면 전력 소모가 감당이 안되고 전압 강하가 심해진다.

왼쪽 그림은 입력되는 Digital Code에 따른 전압의 변화이다.
1) 낮은 입력 Digital Code : 전압이 천천히 상승하여 전압 상승 속도 차이가 비선형성을 유발
  입력 코드와 최종적으로 BL이 방전되는 양 사이의 비례 관계가 깨진다.
  → 입력 전류↓ = Transconductance↓ = R↑ = RC↑
  → WLDAC 회로에서 Vbias, O에 의해 전압 상승 속도 향상
2) 높은 WL 전압 : SRAM Cell 내부에서 데이터가 뒤집히는 upset 발생
  → WL 전압을 0.4V 미만으로 제한해서 데이터를 보호

오른쪽 그림은 Offset 전류원인 Vbias, O를 켰을 때와 껐을 때를 나타낸다.
Vbias, O off : 낮은 코드에서 WL 전압 상승이 늦어 메모리 Cell이 늦게 켜지고 그만큼 방전량이 부족해 결과가 부정확
Vbias, O on : 낮은 코드에서 WL 전압 상승이 빨라 메모리 Cell이 제때 켜져서 정확한 양만큼 BL을 방전시켜 정확한 선형 연산 가능

일반 SRAM 모드는 0/1만 구분하면 되므로 전압이 조금만 변해도 동작하지만, Classify 모드는 여러 Cell의 전류를 더해서 아날로그 값을 읽어야 하므로 전압이 크게 변한다.
→ 128개의 Cell에서 전류가 쏟아져 나오면 BL 전압이 뚝 떨어질 수 밖에 없음
→ BL 전압이 낮아지면 Transistor에 걸리는 전압(VDS)이 작아져 원래 흘려야 할 전류보다 적게 흐르는 오류 발생
→ BL 전압이 너무 낮아지면 원래는 꺼져 있어야 할 반대편 Transistor들이 미세하게 켜져 전류를 거꾸로 공급하여 신호 왜곡
즉, 여러 행이 동시에 켜져서 연산을 수행하면 BL 전압이 0V 근처까지 떨어질 수 있는데 이때 정확도가 감소한다.
But, Comparator Offset이 없는 경우 크기를 줄여도 부호를 변경하지 않으므로 분류 결과에는 영향 X

Bit-Cell
왼쪽 그림은 일반적인 SRAM 모드에서 데이터 Read의 회로 상태 (0 → 1 upset 가능)
→ 내부 노드가 GND와의 연결로 0V가 되어야 하지만 Precharge 된 BL에 의해 0V에 도달하지 못함 (전압 분배 법칙)
오른쪽 그림은 Classify 모드(≒ SRAM 모드에서 데이터 Write)의 회로 상태 (1 → 0 upset 가능)
→ Read 동작과 달리 WL 전압이 0.4V 미만으로 제한되기에 내부 노드는 아주 미미한 영향만 받아 큰 SNM 유지

분류 모드의 Static Noise Margin의 평균이 더 높으므로 upset 가능성이 작고 표준편차가 작아 성능이 일정하게 안정적임을 의미

Noise Margin = (Input Range) - (Output Range)
∵ Noise로 인해 Input Range를 벗어날 수 있으므로 Output Range를 작게 설정

Static Noise Margin 구하는 방법
1) 먼저, N3, N4 Tr를 off한 후 Inverter의 동작을 보기
  · nb가 '1'인 경우 : P1 = "off" / N1 = "on" → n에 쌓인 전하가 nMOS를 통해 GND로 빠져 나가 n은 '0'
  · nb가 '0'인 경우 : P1 = "on" / N1 = "off" → VDD 전원이 pMOS를 통해 n에 공급되어 n은 '1'
    → Noise 전압원이 섞여 전압이 약간 변하더라도 pMOS와 nMOS가 올바르게 동작해야 안정적임
2) 두 Inverter의 입력단에 각각 직렬로 Noise 전압원 V1, V2를 연결하여 출력 전압 측정
3) 한쪽 Inverter의 입력 전압에 따른 출력 전압의 관계를 그래프로 나타내며, 두 Inverter의 그래프를 서로 축을 바꿔 겹친다.
4) Butterfly Curve에 형성되는 2개의 Loop 안에 들어갈 수 있는 가장 큰 정사각형의 변의 길이가 SNM

Sense Amplifiers
왼쪽 그림은 Latch 기반 비교기로 아주 작은 전압 차이만 감지하도록 설계된 일반적인 SRAM Sense Amplifier와 달리 입력 범위의 전압 차이를 감지하고 Latch의 피드백을 통해 Digital 신호 레벨로 복구해준다.

가운데 그림은 입력 Switch가 Precharge 단계가 끝나기 직전에 켜지도록 타이밍을 설계 하여 비교 동작을 시작하기 전에 비교기 양쪽 전압을 똑같이 맞춰 초기화시키는 것을 보여준다. BL을 충전할 때 비교기 내부도 같이 연결하여 별도의 회로 없이 0점 조절 역할을 수행한다.

오른쪽 그림은 Comparator Offset을 자체 보상을 통해 HW적으로 먼저 수정하여 EACB 반복 횟수를 줄이는 것을 보여준다. 모든 열의 offset을 log₂C Cycle 내에 최적의 보정값을 찾을 수 있다.
처음에는 절반은 1, 나머지 절반은 0을 저장하도록 하여 보정값을 중립으로 놓고 결과가 -1이 나오면 0 → 1로 바꿔 전압을 높이고 결과가 +1이 나오면 0 → 1로 바꿔 전압을 낮춘다.

5. Prototype Measurements

※ Scan Chain : 테스트 용이성을 위해 데이터를 직렬로 밀어넣는 회로 기법
128x128 6T Bit-Cell Array를 갖춘 Prototype → (81개 행 = 특징 입력) + (32개 행 = Offset 보정) + (15개 행 = 사용 X) = 128

연산은 메모리 내부에서 Analog적으로 처리하고, 그 결과를 합치는 작업은 메모리 밖의 디지털 회로가 담당
0vs1, 0vs2, …, 8vs9 → 총 45개의 분류기로 진행

부스팅된 선형 분류기에 기반한 이상적인 시스템의 시뮬레이션 결과 90% → 목표치
10-bit 가중치를 가진 부스팅 선형 분류기 : 3번의 반복으로 목표치에 수렴
최적화를 사용하여 1-bit 가중치를 양자화한 부스팅 선형 분류기 : 5번의 반복으로 목표치에 수렴
Prototype : 18번의 반복으로 목표치에 수렴 (∵ HW에 의한 회로의 비이상성)
Comparator Offset 보정이 없는 경우 : 더 많은 반복 필요 (∵ EACB 반복으로 보정해야 함)

왼쪽 그림은 에너지 사용량을 보여주며 10-bit 가중치를 가진 부스팅 선형 분류기는 10가지 분류당 71.67nJ 소모
최적화 알고리즘을 사용하여 1-bit 가중치를 양자화한 부스팅 선형 분류기는 7.9nJ 소모
Prototype은 HW적 이점 덕분에 0.63nJ 소모 (CIM으로 인해 데이터를 꺼내오는 Energy가 0이 되어 대폭 감소)
오른쪽 그림은 Energy만 적게 쓴다고 좋은 것이 아니라 속도도 빨라야 하므로 Energy와 시간을 곱한 지표로 낮을수록 좋다.

6. Analysis of In-Memory Architecture

가정) 총 데이터 = D, √D x √D 배열(정사각형 행렬)
1) Bandwidth : (# of Readable at Once) / (Total # of Data)
  폰 노이만 - 한 번에 한 줄(√D)씩 읽어오면, 전체(D)를 다 읽는데 √D번의 시간이 걸린다.(읽어오는 횟수 ∝ 1 / 대역폭)
  CIM - 모든 줄을 동시에 활성화하여 병렬 처리
2) Latency : (1 Discharge Time) x (# of Accesses)
  폰 노이만 - 메모리 배열 ∝ BL ∝ Capacitance ∝ 방전 시간, √D번 Access
  CIM - 1번만 Access하고 여러 Cell이 동시에 작동하여 방전 시간 자체는 느려지지 않고 일정하게 유지된다.
3) Energy : (Capacitance) x (# of BL) x (# of Accesses)
  폰 노이만 - 라인 하나당 Capacitance, 총 BL 개수, Access 횟수 ∝ √D
  CIM - 1번만 Access → 라인 하나당 Capacitance, 총 BL 개수 ∝ √D
4) Signal Noise Ratio
  폰 노이만 - D의 크기와 무관하게 최소한의 전압 차이만 생기면 바로 증폭기로 읽어내어 안정적
  CIM - 데이터가 많아지면 1표 차이를 구분하기 어려워져 오류 가능성이 커진다.

7. Conclusion

Standard 6T SRAM을 사용하여 ML Classifier를 구현했다. EACB 알고리즘을 이용하여 단순히 데이터의 분류 오차 뿐만 아니라 회로적 비이상성으로 인한 오류까지 학습하여 보정, Discrete Optimization를 통해 1-bit 가중치에 최적화된 학습 방법을 사용, 그리고 Comparator Offset 보상을 사용하여 전력 소모는 줄이고 정확도는 높였다.

8. Thinking

※ Linear Classify : 가장 단순한 형태의 분류기로 두 그룹으로 분류한다.
※ CNN(Convolution NN) : 필터를 사용해 이미지의 중요한 특징을 찾아내고 이를 기준으로 학습하고 추출한다.

이 논문은 일반적인 딥러닝 모델(CNN, DNN 등)이 아니라, Boosting을 이용한 Linear Classifier를 타겟으로 한다.
DNN : 여러 단계의 연산과 피드백이 필요하며 정밀한 가중치를 표현
  → 데이터 파괴 위험, 낮은 정밀, 비선형 함수 처리 등으로 인해 표준 6T SRAM으로 구현 불가
CNN : Sliding Window 연산인 Convolution 연산 필요, 특징 추출
  → 이미지 정확도가 매우 높다. But, 연산량이 매우 많고 메모리 이동 비용이 크다.
즉, Linear Classifier는 초저전력 탐지기 역할로 항상 켜져있는 상태에서 감지가 되면 CNN, DNN 등을 처리하는 고성능 노드를 깨우는 역할이다.

가중치가 1-bit가 아닌 경우에는 어떻게 동작할까?
6T SRAM은 1-bit의 정보밖에 저장할 수 없기 때문에 회로의 면적과 복잡도가 증가하고 효율성이 떨어진다.
ex) 가중치가 4-bit인 경우
  4개의 SRAM Cell을 사용해야 하므로 메모리 면적이 4배 더 커진다.
  각 bit의 자릿수가 달라 Shift & Add 연산을 추가로 수행해야 하므로 복잡해져 전력 소모가 커진다.
  대신 가중치 정밀도가 넢아져 정확도는 상승한다.

Input Data Flow (가로 방향)
FV Buffer(이미지 데이터 저장)
→ WLDAC(5-bit Digital Input을 Analog 전압으로 변환)
→ WL에 동시에 인가

Output Flow (세로 방향)
128개의 열에 서로 다른 가중치를 가진 Weak Classifier
→ 128개의 Comparator
→ 128개의 +/- 1 판정 결과
→ 칩 외부의 Adder가 최종 판결

(이미지 분류) + (보정) + (잔여) → 잔여는 어쩔 수 없는 낭비 ∵ SRAM Array는 보통 2의 제곱수로 생성되는 것이 표준

이 논문 방식의 단점
1) Reduced SNR
  미세한 아날로그 전압 차이를 감지해야하므로 데이터의 크기가 커질수록 BL에 연결된 Cell이 많아져 Capacitance가 증가하고 이로 인해 신호의 크기가 줄어들어 SNR이 나빠진다.
  → 데이터를 나눠서 처리하여 극복
2) 회로의 비이상성(Variation, 비선형성, Offset)
  아날로그 전류를 이용하므로 회로의 불안정성에 매우 민감하다.
  → Variation과 비선형성은 EACB 알고리즘을 통해 극복
  → 비교기가 가진 고유 Offset은 보상을 통해 극복
3) 많은 수의 분류기 필요
  위의 회로적 단점을 극복하기 위해 소프트웨어(알고리즘)가 더 많이 반복되어야 한다.
4) 확장성의 한계
  데이터의 크기가 너무 커지면 SNR이 급격히 나빠지므로 이를 해결하려면 데이터를 나눠서 처리해야 함
5) 표준 SRAM Array 생성 규칙에 따른 낭비

Analog Logic에 의한 Process Variation
  Analog 회로의 미세한 차이(like Vth)는 계산 결과 오류를 유발할 수 있다.
  I ∝ (VGS - Vth)^2 → Vth가 높으면 전류는 약하게 흐름

선형성
  전압을 선형으로 만들지 않고 전류를 복사한다. (입력 Digital 값 ∝ IDAC ∝ IBC)
  (IDAC 생성 → Replica → 그에 맞는 WL 전압 생성 → 비례하는 IBC 생성)

pMOS의 역할
  Gate의 신호에 따라 on/off되는 Switch이자 전류원 역할

9. Reference

"In-Memory Computation of a Machine-Learning Classifier in a Standard 6T SRAM Array"
"Static Noise Margin Analysis of 6T SRAM"
https://www.youtube.com/watch?v=W1hKf0UUWsw&list=WL&index=68

댓글

이 블로그의 인기 게시물

[Mini-NPU RTL] NN Reference Model

[Mini-NPU RTL] TPU (Study Paper)