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을 선택한다.
인접한 2개의 CIM bank가 set-associative group을 구성하며, 본 논문에서는 16개의 CIM bank를 사용하여 총 8개의 group으로 구성하였다.
각 group에 대해 weight/activation sparsity는 3가지 경우로 분류된다.
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배 감소하였다.
대부분의 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를 필요로 한다.
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을 감소시킨다.