A 2.75-to-75.9TOPS/W Computing-in-Memory NN Processor Supporting Set-Associate Block-Wise Zero Skipping and Ping-Pong CIM with Simultaneous Computation and Weight Updating

JuYoung Oh·2022년 1월 10일
0

Problem to solve

  1. 기존의 block-wise sparse strategy는 ADC들을 turn off할 수 있었다. 그러나, zero들을 저장할 필요가 있었고, computing resources에 power gating이 적용되지 않았다.
  2. On-chip SRAM CIM marco의 크기가 모든 weight를 담기에 부족했고, 연산중에 weight들을 update하며 significant한 performane loss가 발생하였다.
  3. ADC의 limited sensing margin으로 인해 큰 NN models에서 정확도가 낮았다.

How to solve

  1. Set-associative block-wise zero-skipping architecture(SABZA)
    • zero-valued weight와 activation을 skip하여 power, storage, execution time을 감소
  2. Ping-pong CIM(PP-CIM)
    • simultaneous computing and weight update
  3. Energy efficient PP-CIM & digital-predictor-assisted 0/2/4b ADC
    • dynamic precision으로 power consumption 감소

CIM processor

Architecture

  • Activation SRAM
  • Weight SRAM
  • CIM cores x4
    • Activation buffer
    • Sparsity scheduling module(SSM)
    • weight index SRAM
    • PP-CIM marco
    • local adder array
  • Instruction SRAM w/ top controller
  • Set-associative adder array
  • Result SRAM

Operation

Weight들은 offline으로 block-wise sparse pattern으로 변환된 후 set-associative compact format으로 저장된다. Top controller는 weight들을 global weight SRAM에서 CIM marco로 보내주며, CIM marco가 weight-stationary MAC 연산을 수행한다.

CIM bank들은 computation/weight-update phase를 번갈아 가며 수행하며, full-time utilization이 가능하다.

SSM은 weight index와 online activation sparsity를 통해 CIM column과 ADC precision을 선택한다.

SABZA & digital-predictor-assisted ADC

인접한 2개의 CIM bank가 set-associative group을 구성하며, 본 논문에서는 16개의 CIM bank를 사용하여 총 8개의 group으로 구성하였다.

각 group에 대해 weight/activation sparsity는 3가지 경우로 분류된다.

  • all-zero : 해당 group을 skip하며 ADC turn off
  • 4개 미만의 non-zeros : 2b ADC precision을 사용하는 듯?
  • 4개 이상의 non-zeros : 4b ADC precision을 사용하는 듯?

CIM bank에는 ADC가 2개 존재한다. A-BMU/B-BMU 각각 1개 씩이며, 한번에 둘 중 한개만 output과 연결된다.

Set-associative compact format으로 저장된 weight의 column index가 activation의 column index와 다를 경우, 추가적인 cycle이 소요된다. 그러나, 이는 NN training 단계에서 최적화가 가능하다. 75%의 sparsity를 가정했을 때, zero-skipping에 비해 storage는 4배, cycle은 3.2배 감소하였다.

PP-CIM

대부분의 NN model들은 weight가 대부분 1MB 이상으로, 현재 CIM macro들의 크기가 약 100 kb 정도이므로 CIM macro에 모두 저장하지 못한다. 따라서 필연적으로 CIM marco 내의 weight update가 필요한데, PP-CIM은 2 phase operation으로 weight update와 computing이 동시에 수행할 수 있다.

CIM bank는 2개의 bitwise-multiply-unit(BMU)로 구성되어있다. 따라서, 1개의 BMU가 weight를 update한다면, 다른 BMU가 연산을 수행한다. 만약 weight update가 끝났는데도 연산이 끝나지 않았다면 weight SRAM이 retention mode로 전환되어 power 소모를 줄인다.

ResNet18(CIFAR-10)에서는 idle weight-update cycle을 감소시켜 1.26배의 성능 향상이 있었으며 특정 layer에서 1.94배의 최대 performance를 달성했다.

CIFAR-10/ImageNet dataset에 대해 1.02~1.3배의 performance와 46~98%의 weight SRAM retention time을 달성하였다.

Additional 100% area를 필요로 하는 simple double-buffering에 비해, PP-CIM은 대략 15%의 area overhead를 필요로 한다.

Internal circuit

PP-CIM은 2개의 BMU(A-BMU/B-BMU)와 1개의 LCC(Local Computing Cell)로 구성되어 있다. 각 BMU는 4개의 6T SRAM으로 구성되어 weight를 저장하며, LCC를 통해 연산을 수행한다.

SRAM array는 128 x 128 크기이고, PP-CIM은 총 8개의 SRAM을 가지고 있으므로 16 x 128 크기의 PP-CIM array로 구성된다.

한 사이클에 최대 32 coloumn에 대해 연산을 수행할 수 있으며, SSM의 digital predictor가 overflow를 방지한다.

기존 연구의 5b ADC 대해 2.07배의 sensing margin을 가진다. 또한, digital predictor가 ADC를 turn off 시키거나 2b/4b의 precision 중에서 선택함으로서 power consumption을 감소시킨다.

0개의 댓글