[SRAM-PIM Core Circuit] All-Digital SRAM Based CIM (Study Paper)

"An 89TOPS/W and 16.3TOPS/mm² All Digital SRAM-Based Full-Precision CIM Macro in 22nm for ML Edge Applications"

1. Introduction

최근 AI 기술이 Edge Device까지 확산되어, AI Edge Device를 위한 HW 가속기 중요

Edge Device에서 AI 기술을 사용하는 Edge Computing
· 장점 : 보안 / Low Latency / 효율적인 Network Bandwidth 사용
· 한계 : 배터리로 동작하는 소형 Edge Device에서 고성능 AI를 구동하기 어려움
→ 전력 소모 대부분은 메모리 Access ∴ 메모리 내부에서 직접 연산을 수행하여 데이터 이동을 최소화

기존의 CIM 연구는 전류/전압의 물리적 특성을 이용하여 연산이 빠르고 효율적인 Analog 방식에 집중
But, Noise에 취약해 계산 오차 발생 가능성이 높아 정확도가 부족 → 높은 정확도가 요구되는 일부 Application에는 적합 X

∴ CNN의 MAC 연산을 위한 6T SRAM 기반 All-Digital CIM 제안
· 프로그래밍 가능한 bit 폭(Macro당 1~8-bit)을 가진 입력 활성화 값 지원
· 부호 있는 값과 없는 값 모두 처리 가능하며 Weight는 4가지 bit 폭(4, 8, 12, 16)을 지원
→ 모든 AI 모델들이 높은 정밀도(ex. 32-bit) 필요 X ∴ 상황에 따라 데이터의 크기를 조절(가변 정밀도)하여 연산 효율성↑ 
→ 여러 개의 Macro를 타일처럼 배치하여 서로 다른 구조를 가진 신경망에 대응할 수 있는 유연성 존재

2. Architecture

· Bit-Serial Multiplication : 데이터를 1-bit씩 순차적으로 처리하여 회로 면적↓
· Parallel Adder Tree : 계산된 결과들을 병렬로 더해 빠르게 최종 합을 구함
→ 256개의 입력 입력 데이터가 모두 동시에 각자의 첫 번째 bit를 꺼내서 계산 (256개의 입력 데이터가 순차적으로 하나씩 X)
→ Weight와 입력 데이터를 재사용하여 메모리 접근 에너지 크게 감소

3. Implementation & Operation

SRAM Mode : 연산 전에, 학습된 Weight를 SRAM 메모리에 미리 Load
CIM Mode : MAC 연산 수행 (AI 추론 단계)
256개의 입력 데이터 모두 64개의 연산 Unit에 들어가 각자 서로 다른 Weight와 곱셈
→ 열 별로 누적 합이 수행되며, 총 64개의 출력(64개의 Adder Tree 사용)

Push Rule을 사용하지 않는 6T SRAM Cell과 4T NOR Gate가 각각 1-bit Weight 저장과 bit 단위 곱셈을 위해 사용 (그림 우측 상단)
4-bit를 구현하기 위해 1-bit Cell 4개를 병렬로 사용 (4개의 열을 Weight로 사용)x(64개의 출력)=256 ∴ 물리적으로는 256x256
※ Push Rule : 파운드리에서 면적을 위해 제공하는 공격적인 설계 (사용하지 않는 다는 것은 표준 Logic 공정과 호환성 & 수율↑)

· CIM 동작 시, 256개의 입력 데이터들이 동시에 MSB부터 Bit-Serial 방식으로 입력 → 입력이 4-bit이므로, 총 4번의 Cycle 필요
· 매 Cycle마다 (1-bit 입력)x(4-bit Weight) 연산을 256개 동시에 수행하여 부분 합을 생성
· 부분 합 누산기 회로는 Pipeline 방식으로 데이터 처리가 연속적
∴ 4-bit 입력에 대한 MAC연산은 총 5 Cycle 소요

첫 번째 수식은 부호 없는 입력과 Weight에 대한 표현이며, 각 bit 위치에 Weight를 두어 각 Cycle의 결과를 더하여 최종 값을 계산
ex) 1011 (11) → 8 + 0 + 2 + 1 = 11
두 번째 수식은 부호 있는 입력과 Weight에 대한 표현이며, 2의 보수 표현법을 사용하여 음수를 처리
ex) 1011 (-5) → -8 + 0 + 2 + 1 = -5

Analog CIM)
→ ADC의 정밀도(8-bit)에 의해 제한 (전압/전류를 읽을 때 ADC의 한계로 정밀도↓)

Digital CIM)
→ Overflow로 인한 정확도 손실을 없애기 위해 충분한 출력 bit 수 확보 (고정밀 연산 가능)
→ 데이터/Weight 재사용뿐만 아니라, 입·출력의 데이터 형식이 동일하여 데이터 형식 변환에 소요되는 에너지 & Latency↓

4. Key Features & Result

Energy Efficiency
Edge Device는 전력이 제한적 ∴ 에너지 효율성을 나타내는 TOPS/W가 가장 중요
DVS(Dynamic Voltage Scaling) : 작업 부하에 따라 전압을 조절
위 그림의 왼쪽과 같이 Weight Update에는 높은 공급 전압을 사용하고, MAC 연산에는 낮은 공급 전압을 사용한다.

위 그림의 오른쪽과 같이 28T Adder만 사용하는 대신 28T와 14T Adder를 번갈아 배치하면 TOPS/W가 30% 증가

※ 28T Adder : 신호가 매우 안정적이고 Noise에 강하지만, 28개의 Tr로 인해 면적과 전력 소모가 큼
※ 14T Adder : 28T와 비교해서 면적과 전력 소모가 작지만, 신호가 통과할 때 전압이 약간 떨어지거나, 신호 세기가 약해짐
→ 14T만 계속 연결하면 신호가 죽어 계산에 오차 발생

에너지 소비량은 Weight의 Sparsity와 입력 활성화 Toggle Rate에 영향을 받음
Weight가 '0'인 경우 MAC 연산을 하지 않고 Weight Update를 진행 → 다른 Cell의 MAC 연산과 동시에 진행하여 처리 속도↑
※ Sparsity : 데이터 값이 '0' → 희소성이 높다 = 계산을 안해도 되는 '0'이 많다 = 에너지 소모↓
※ Toggle Rate : 신호가 0 ↔ 1이 얼마나 자주 변화하는지 표현 → 변화가 적을수록 에너지 소모↓

Programmability
제안 된 CIM은 다수의 Macro를 직렬/병렬/2D 배열로 연결해 유연하게 확장 가능
→ 왼쪽 그림과 같이 서로 다른 구조와 bit 폭 정밀도를 가진 다양한 신경망 지원 가능 (정밀도가 낮은 모델 ~ 높은 모델)
ex)
· 칩을 3단으로 직렬 연결하면 64개의 채널에 대한 3x3 필터의 Convolution 연산 수행 가능
· 오른쪽 그림과 같이 열에 부호가 없는 Weight가 할당되면 부호 확장을 위한 추가 전가산기 비활성화 → 불필요한 전력 소모↓

5. Conclusion

6T SRAM Based All-Digital CIM
· 압도적인 Throughput
· 유연한 정밀도 사용으로 정확도 손실↓
· 높은 Energy Efficiency

위와 같은 장점으로 AI Edge Device를 위한 HW 가속기로 적합

6. Thinking

▶ 부호가 없는 경우 (SIGN=0)
SIGN=0이므로 모든 AND Gate 연산 결과는 0, SUM = C
▶ 부호가 있는 경우 (SIGN=1)
② 001 : (양수)+(양수)+(올림수 O)=(음수)? → HW가 연산 범위를 충분히 보장하여 해당 상황 발생 X
⑦ 110 : (음수)+(음수)+(올림수 X)=(양수)? → HW가 연산 범위를 충분히 보장하여 해당 상황 발생 X
③ 010 : (양수)+(음수)+(올림수 X)=(음수) → SUM=1 타당
⑧ 111 : (음수)+(음수)+(올림수 O)=(음수) → SUM=1 타당
④ 011 : (양수)+(음수)+(올림수 O)=(양수) → SUM=0 타당 

왼쪽 그림은 Shmoo Plot으로 칩이 정상적으로 작동하는 범위를 나타내며 전압이 높을수록 성능이 좋은 것을 보여준다.
오른쪽 그림은 전압이 낮을수록 절대적인 성능(TOPS)은 낮아지지만, 에너지 효율(TOPS/W)은 올라가는 반비례 관계를 보여준다.

NOR Gate 사용 이유
· Inverter를 통해 0/1로 신호를 확정한 후, 연산 진행 → AND Gate는 추가적으로 Inverter 필요
· NAND와 NOR 모두 드모르간 법칙을 사용하여 4TR로 곱셈 연산 구현 가능
· But, NOR 구조는 Tr들이 병렬로 연결되어 있어 직렬구조인 NAND보다 Pull-Down 속도가 빠르거나, SRAM과 통합하기에 더 유리

Accumulator에서 20-bit로 확장하는 이유
28(256개의 입력 데이터) x 28(입력 정밀도) x 24(Weight 정밀도) = 220
If 12-bit Weight → 28 x 28 x 212(Weight 정밀도) = 228

Sparsity
· 데이터가 '0'인 값은 MAC 연산을 진행하지 않고 Weight Update 진행
· 데이터가 '0'이 아닌 값은 MAC 연산 후, Weight Update 진행
→ MAC 연산 후, 업데이트하는 몇몇 행들만 마저 업데이트하여 Weight Update 모드에서 소요되는 시간↓
→ MAC 연산을 진행하지 않아 전력 소모↓

7. Reference

"An 89TOPS/W and 16.3TOPS/mm² All Digital SRAM-Based Full-Precision CIM Macro in 22nm for ML Edge Applications"

댓글

이 블로그의 인기 게시물

[Mini-NPU RTL] NN Reference Model

[Mini-NPU RTL] TPU (Study Paper)