# ReDCIM: Reconfigurable Digital ComputingIn-Memory Processor With Unified FP/INT Pipeline for Cloud AI Acceleration 筆記摘要 ## Previous Approaches v.s ReDCIM | Column 1 | Accuracy | Flexibility | Efficiency | | ------------------------ | --------------------------------------------------------- | -------------------- | ---------- | | DCIM | good (Digital, no accuracy loss) | fixed INT MAC | good | | ReDCIM | good | good | good | | Analog CIM Architectures | accuracy loss(due to signal margin and process variation) | only accurate on INT | good | ![螢幕擷取畫面 2024-05-24 132249](https://hackmd.io/_uploads/SJvONo6XA.png) ## The Limatation of previous CIM Design * Analog CIM: 主要機制為將模型的參數存在SRAM中,藉由控制memory內的電流以及電壓搭配Input模擬出MAC運算,好處是功耗低,但是壞處是僅適用於Bit width較低的情境,另外因為Analog的電路會有Signal margin使結果產生誤差,故這樣的設計較適合用在終端的Inference,因為終端Inference不需要太高的精度,功耗低才是最重要的考量。 * Digital CIM: 將digital INT MAC單元直接整合進SRAM裡面,解決了Analog的準確性問題,但是因為運算相關電路是固定的設計,無法在 FP/INT 運算間自由切換。 ## The strengths of ReDCIM ![螢幕擷取畫面 2024-05-24 124901](https://hackmd.io/_uploads/rJY23cTXR.png) ## Solve technical limatations in privious CIM design. * 在FP 的 MAC中,需要在memory內處理複雜的exponent alignment(指數對位)問題,會造成efficiency下降。 Solution: 利用pipeline將exponent alignment 以及 MAC 切開,同時將pre-alignment的工作放到 memory 外,在memory內就單純進行乘加運算即可。 <img src="https://hackmd.io/_uploads/HkwgpapXR.png" width="300"/><img src="https://hackmd.io/_uploads/Skwe6aamC.png" width="300"/> * 在FP的MAC中,能耗佔比較高的是INT mantissa MAC的部分 Solution: 利用Bitwise in-Memory Booth Multiplication (BM2) architecture 來加速第一點切出的pipeline中, CIM-based INT MAC的部分 <img src="https://hackmd.io/_uploads/Skjug-C70.png" width="300"/><img src="https://hackmd.io/_uploads/HJi_l-CQA.png" width="300"/> * 在過去的 AI 處理器中,FP跟INT的運算單元是分開的,一次只能使用一種模式做運算,這使得要同時支援FP跟INT運算所需面積較大,單位面積的能效降低 Solution: 採用可繼承與可重構式的記憶體內累加單元來同時支援FP以及INT的運算。 <img src="https://hackmd.io/_uploads/HyrAY-RmA.png" width="300"/><img src="https://hackmd.io/_uploads/B1S0FbAmR.png" width="300"/> ## Solution1 : IN-MEMORY Alignment-Free FP MAC Pipeline ### Pre-alignment: 過去的作法: ![螢幕擷取畫面 2024-06-08 145032](https://hackmd.io/_uploads/ByqHktZSA.png) 在FP-MAC運算中,將數字以Mantissa+的格式,乘以分別的權重,再將這些運算好的數字加入partial sum(E0)裡面,又因為這些乘積的exponent不一樣,所以在最後的accumulate的值都要先進行alignment,這在記憶體裡面會造成較大負擔 本文做法: ![螢幕擷取畫面 2024-06-08 145930](https://hackmd.io/_uploads/ByEDWFZrA.png) 在做multiply運算時直接先將exponent值pre-align成各自的local maximum,如此一來就會讓exponent的值保持一至,不需要再額外進行alignment