ISSCC論文詳解2024 34.2——雙端口設計實現高面積利用的浮點/整數存算

本文將要介紹的文獻主題為浮點存內計算,題目為《A 16nm 96Kb Integer/Floating-Point Dual-Mode-Gain-CellComputing-in-Memory Macro Achieving 73.3-163.3TOPS/W and 33.2-91.2TFLOPS/W for AI-Edge Devices》,下面本文將從文章基本信息與背景知識、創新點解析和現有工作對比三個方面進行論文詳解。

一.文章基本信息[1]

(1)研究團隊:

臺灣臺積電,臺灣國立清華大學,臺灣工業技術研究院。

(2)研究背景:

當前先進的AI邊緣芯片需要計算靈活性和高能效,并對推理精度提出了更高的要求。浮點(FP)數值表示可用于需要高推理精度的復雜神經網絡,然而,這種方法比定點整數(INT)數值表示需要更高的能量和更多的參數存儲。目前許多存內計算(CIM)架構針對?INT乘累加運算(INT-MAC)具有良好的能效,然而很少能夠支持FP乘累加運算(FP-MAC)。因此,開發既支持INT又支持FP運算且能有效應對上述挑戰的計算架構變得尤為重要。

(3)面臨挑戰:

FP運算可支持需要高精度的復雜神經網絡,但是通常需要更多的功耗,特別是在高密度存儲單元內進行計算時,如何有效管理能耗和散熱已成為一個關鍵科學問題。此外,FP運算提出更多參數存儲需求,而隨著大模型技術的發展,神經網絡本身也需要越來越多的參數存儲需求,因此FP存算的網絡部署面臨著空間和資源不足的挑戰。

在本文介紹的文獻中,研究團隊實現INT/FP雙模(DM)乘累加操作(MAC)時,主要面臨以下挑戰:

①低面積效率:在執行INT-MAC操作期間,FP-MAC功能會閑置,導致資源未充分利用;

②高系統級延遲:小容量SRAM-CIM在沒有同時寫入與計算功能的情況下,神經網絡數據更新中斷會導致延遲增加;

③高能耗:計算過程中系統到CIM架構的頻繁數據傳輸增加了能耗。

(4)本文工作:

為了解決上述面臨挑戰,研究團隊提出了一種INT/FP DM宏結構,簡要概括如下:

①DM區域輸入處理方案(ZB-IPS):消除指數計算中的減法,并在INT模式下復用對齊電路,從而提升能效比和面積效率;

②DM本地計算單元(DM-LCC):復用指數加法作為INT-MAC中的加法樹階段,進一步提高INT模式下的面積效率;

③基于靜止的雙端口增益單元陣列(SB-TP-GCA):支持數據的同時更新與計算,減少系統到CIM架構及內部數據訪問,從而改善能效和降低延遲。

  1. 相關名詞解釋:

①FP:Floating Point,浮點數。浮點數由三部分組成:符號位、指數部分、尾數部分,根據這三部分的不同,浮點數具有多個種類,其中FP32和FP16是常用的浮點數類型。FP32如圖1所示,一共有32bit,符號位為1bit、指數位8bit、尾數位23bit,提供了較高的精度和動態范圍,適用于大多數科學計算和通用計算任務;FP16如圖2所示,一共有16bit,符號位為1bit、指數位5bit、尾數位10bit,相對于FP32提供了較低的精度,但可以減少存儲空間和計算開銷,主要應用于深度學習和機器學習等計算密集型任務[2]。

圖1 FP32位數組成[2]

圖2 FP16位數組成[2]

②INT:Integer,整數。INT8表示8位整數,是常用的整數類型,使用8bit內存來存儲每個數值,最高位代表符號位,可以表示范圍從-128到127的整數。主要用于對圖像、音頻等進行量化處理,以減少計算量和存儲需求。

③MAC:Multiply Accumulate,是在數字信號處理器或一些微處理器中的特殊運算,具體是將乘法器乘積結果輸入累加器,累加器再將幾個周期的乘積相加。

④BF:BF16指的是一種16位寬的浮點數據類型,全稱為Bfloat16。這種數據類型由Google的TensorFlow團隊提出,用于優化深度學習模型的性能,近年來在深度學習和高性能計算領域受到越來越多的關注,因為它在保持良好的數值范圍的同時,減少了數據的位寬,從而可以提高計算速度和降低功耗。它包含:1位符號位(Sign bit)、8位指數(Exponent)、7位尾數(Mantissa)。與傳統的IEEE 754標準的單精度浮點數(FP32)相比,FP32有1位符號位、8位指數和23位尾數。盡管BF16的尾數較短,但它保持了與FP32相同的指數范圍,這意味著它在表示數值的范圍上與FP32相當,但在精度上有所降低。

二.本文主要工作

1.雙模CIM(DM-CIM)的結構與數據流

本文創新性的提出了面積利用率更高的雙模CIM結構和數據流,可以支持整型數INT8和浮點數BF16兩種模式的計算。相比于傳統的雙模CIM結構,傳統雙模CIM在進行INT計算時的exp加法器與對齊電路處于閑置狀態,使得芯片面效與面積利用率較低。在本文的工作中,INT模式下DM-ADD結構充當2*NACCU的加法器樹,并利用對齊電路作為輸入稀疏感知電路(INAC),極大的提升了INT模式下的能效與面效。

圖3 傳統雙模CIM在INT模式下存在資源閑置

雙模CIM包括基于DM區域的輸入處理單元(ZB-IPU)、DM-GC計算陣列(DM-GCCA)、數字移位加法器(DSaA)和時序控制器(CTRL)。其中的DM-GCCA由64個GC計算模塊(GC-CB)組成,每個GC計算塊包含一個用于64b存儲數據和16b固定數據的SB-TP-GCA,以及一個包含DM-ADD和DM多路復用器(DM-MUX)的DM-LCC。DM-GCCA可以執行兩種模式的計算:

1)BF16模式:

在此模式下,DM-CIM的各個模塊均處于工作狀態。SB-TP-GCA存儲1b符號數+7b尾數+8b指數。第一步,DM-ADD會將8b的輸入指數和8b的權重指數相加,也即得到了指數部分積(PDE);第二步,ZB-IPU找到最大的PDE值并根據對齊的INMA來對齊每一個輸入尾數INM;第三步,選擇器(DM-MUX)計算PDM;第四步,DSaA將指數和尾數相結合,輸出結果。

圖4 BF16模式下的數據流

2)INT8模式:

在此模式下,DM-CIM的各個模塊同樣均處于工作狀態。SB-TP-GCA存儲兩個8b的權重。第一步,DM-ADD將兩個權重相加得到pSUM,通過利用權重數據復用可以將其用于多個計算;第二部,ZB-IPU檢測輸入值的稀疏度來減少DM-GCCA和DSaA中的MAC能耗,并解碼兩個按位IN0[k]和IN1[k]作為DM-MUX的選擇信號;第三步,DM-MUX對IN0和IN1執行部分MAC運算并生成pMAC值;第四步,DSaA累加64個pMACV,輸出結果。

圖5 INT8模式下的數據流

2.基于DM區域的輸入處理單元操作(ZB-IPU方案)

ZB-IPU方案/模塊是處理BF16模式下的對齊和INT8模式下的稀疏性檢測的關鍵模塊,該模塊創新性地提出了基于區域檢測對齊的方案(ZDBA),在這個方案下的對齊操作僅使用3個反相器就能完成,代替傳統的n比特減法器,顯著降低了模塊的能量與面積開銷。此外,ZB-IPU模塊也支持INT8模式下的稀疏性檢測,總之,他也可以執行兩種模式的計算:

1)BF16模式:

在此模式下,ZDBA方案下的對齊操作分為兩步。第一步,pEMAXF 查找 PDE-MAX?的 MSB-6b (PDE-MAX[8:3])。然后ZBU根據PDE-MAX[8:3]生成3個區域參考(PDE-REF1~3),這三個區域參考將作為后續對齊時的重要依據;第二步,每個PDE(n)根據以下條件被分類為三個區域(ZFG=1/2/3)中的一個,DM-IPB根據通過反轉PDE[2:0](LSB3b)獲得的區域移位數(NSHZ)來對齊INM,這是PDE和PDE-REF之間的差值。以圖中的PDE(0)=011111101 (253)為例,它是PDE-MAX,并且PDE-REF1=011111111(255),則PDE(0)位于 zone-0(ZFG=1),它僅需對PDE(0)[2:0]進行反轉,即101反轉為010,反轉值為2(NSH(0)=2),這樣一來,就可以利用三個反相器完成對齊的操作。如圖6為BF16模式下的對齊分類區域、對齊輸出和時序示意圖。

圖6 BF16模式下的對齊操作

2)INT8模式:

在此模式下,我們只需要對ZDBA方案下的參考值置0,即可完成稀疏度檢測,ZB-IPU此時相當于輸入稀疏感知電路,可以大幅降低后續計算的功耗與面積,在圖7的表格中可以明顯看出其對于輸入的操作。

圖7 INT8模式下的稀疏度檢測

3.基于固定端口的雙端口增益單元(SB-TP-GCA)

為了應對傳統CIM在計算過程中反復進行系統和CIM的數據傳輸所造成的高能耗的挑戰,本文提出了一種支持并行數據更新和計算的方法,減少系統與CIM交換內部數據間的時間,改善延時和能量消耗。

圖8 雙端口計算流程

如上圖所示,是SB-TP-GCA這一設計的雙端口工作時序圖。對比傳統CIM的順序執行,本文介紹的工作使用了雙口工作,一口負責讀寫、一口負責計算,以解決延時問題,提升計算效率。能效方面的提升主要依靠數據復用,降低讀寫次數的方式來實現。

圖9 芯片雙端口中三個模式對應執行電路與執行時序圖

上圖所示是電路的設計圖和時序圖。

SB-TP-GCA結構允許在進行乘加運算的同時進行數據更新。這種并行操作減少了系統在不同時間段內需要進行的數據傳輸次數,從而降低了總能耗。并且,陣列內部的靜態單元可以在多個計算周期內重用權重數據,減少了每次計算所需的數據傳輸量。通過減少內部數據訪問頻率,有效地降低了能耗。每個SB-TP-GCA列由四個4T增益單元(GC)、一個4T自刷新單元(SRU)和一個7T靜態單元(STU)組成。在存儲更新模式下,數據從全局位線(GBL)傳輸到SRU,然后通過SRU驅動寫入位線(WBL)以更新選定的GC單元。這種存儲單元設計減少了不必要的數據移動和功耗。SB-TP-GCA提供了三種操作模式(靜態更新、存儲更新和自刷新),針對不同模式的分類可以針對使用場景管理數據的存取和刷新,進一步減少了功耗。例如,在靜態更新模式下,存儲的數據可以通過讀位線(RBL)傳輸到自刷新單元(SRU)進行刷新,而無需頻繁的全局數據傳輸。

通過這以上幾點改進,優化高功耗問題。

三、性能對比與拓展

文中將該工作與已有的相似工作進行對比,性能對比表和芯片電鏡圖如圖所示,可以看到本工作在面積效率和能效上更優。

圖10 本文芯片性能對比

本工作與以往工作的主要區別在于采用雙端口設計,本文基于這一想法開展多項優化。從本文針對的計算能效、傳輸延時、浮點/整數計算支持三個角度來看:

(1)計算能效/面效方面:[1]采用雙端口設計,提高數據復用,減少數據流動,提高計算能效;[3]模擬域和數字域結合,將兩類計算模式按照一定比例進行耦合,兼具兩種計算模式的優點來提高計算效率和準確度;[4]設計雙位存儲器和FCU浮點計算單元,提升吞吐率,采用高精確低近似的乘法器,提高面銷和能效;[5]提出BM2控制器,使用按位輸入的Booth編碼,部分積重編碼,減少近50%的循環次數和位乘法次數,以提升計算能效。

(2)傳輸延時方面:[1]采用雙端口設計,讀寫和計算并行,提高計算效率;[3]使乘法的中間結果在同一列累積。

(3)浮點支持方面:[1]設計了同芯片雙模式,針對該模式設計了一種新型輸入數據處理方式,在計算浮點數時將其用于尾數對齊,計算整數時將其用于稀疏度檢測,最大化面積利用效率;[4]提出了FCU,解決浮點與整數映射不一致的問題,利用同一個MAC模塊;[5]實現了一種無指數對齊的浮點乘累加計算流水線,使CIM專注提升尾數乘累加的計算速度

針對浮點支持方面,已有的工作主要針對尾數計算算法進行改進,以提升效率。在思路上是共性的,即對浮點計算部分尾數乘累加計算流程進行優化,以盡可能減小計算周期數。早期的浮點存算正如本文背景所說,采用分離程度較高的硬件進行工作。近期的浮點存算工作,已進行了一定改進,但也未能充分利用面積資源,主要的資源浪費集中在指數對齊計算方面,整數計算本不需該計算模式,因此在計算整數時,這部分浮點計算硬件未能得到應用,如下圖所示。

圖11 已有浮點存算工作中存在的問題

相比之下,本文方案在設計了ZB-IPS的輸入調整模塊設計,在整數計算和浮點計算時只有數據流的不同,在實現浮點存算計算效率提升的同時,使所有硬件模塊均被充分利用。

綜上,本文所介紹的ISSCC2024 34.2這篇工作向浮點存算中引入雙端口以支持浮點/整數雙模計算,最大化面積利用效率并提升計算速度、提升能效。其中輸入處理單元是將尾數對齊于整數稀疏度判斷繼承在一起,是極其巧妙的設計。

參考文獻

[1]W. -S. Khwa et al,“34.2 A 16nm 96Kb Integer/Floating-Point Dual-Mode-Gain-Cell-Computing-in-Memory Macro Achieving 73.3-163.3TOPS/W and 33.2-91.2TFLOPS/W for AI-Edge Devices,”2024 IEEE International Solid-State Circuits Conference (ISSCC). IEEE, 2024.

[2]FP32、FP16 和 INT8-CSDN博客.

[3]?Wu, Ping-Chun, et al. “A 22nm 832Kb hybrid-domain floating-point SRAM in-memory-compute macro with 16.2-70.2 TFLOPS/W for high-accuracy AI-edge devices.” 2023 IEEE International Solid-State Circuits Conference (ISSCC). IEEE, 2023.

[4]?Guo, An, et al. “A 28nm 64-kb 31.6-TFLOPS/W digital-domain floating-point-computing-unit and double-bit 6T-SRAM computing-in-memory macro for floating-point CNNs.” 2023 IEEE International Solid-State Circuits Conference (ISSCC). IEEE, 2023.

[5]?Tu, Fengbin, et al. “A 28nm 29.2 TFLOPS/W?BF16 and 36.5 TOPS/W?INT8 reconfigurable digital CIM?processor with unified FP/INT?pipeline and bitwise in-memory booth multiplication for cloud deep learning acceleration.” 2022 IEEE International Solid-State Circuits Conference (ISSCC). Vol. 65. IEEE, 2022.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37122.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37122.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Jmeter的分布式壓測環境搭建及簡單壓測實踐

寫在前面 平時在使用Jmeter做壓力測試的過程中,由于單機的并發能力有限,所以常常無法滿足壓力測試的需求。因此,Jmeter還提供了分布式的解決方案。本文是一次利用Jmeter分布式對業務系統登錄接口做的壓力測試的實踐記錄。按照慣例&#xff0…

仿迪恩城市門戶分類信息網discuz模板

Discuz x3.3模板 仿迪恩城市門戶分類信息網 (GBK) Discuz模板 仿迪恩城市門戶分類信息網(GBK)

【深度學習】卷積神經網絡CNN

李宏毅深度學習筆記 圖像分類 圖像可以描述為三維張量(張量可以想成維度大于 2 的矩陣)。一張圖像是一個三維的張量,其中一維代表圖像的寬,另外一維代表圖像的高,還有一維代表圖像的通道(channel&#xff…

怎樣查看vsphere client 的登錄日志

- 問題摘要: 怎樣查看vsphere client 的登錄日志 - 解決方案/工作方法 1.登錄vsphere client > vc > Monitor > Tasks and Events > Events, 查看日志 2. 查看VC 的websso.log日志 /var/log/vmware/sso/websso.log 3. 可以把websso.log文件拿到本地電…

前端Web開發HTML5+CSS3+移動web視頻教程 Day1 HTML 第一天

鏈接 HTML 介紹 HTML&#xff1a;HyperText Markup Language&#xff0c;超文本標記語言&#xff0c;是一種用于創建網頁的標準標記語言。 HTML 運行在瀏覽器上&#xff0c;由瀏覽器來解析。 對于中文網頁需要使用 <meta charset"utf-8"> 聲明編碼&#xf…

多圖示例:如何呈現論文結果中的各種圖表

本文根據《Journal of the American College of Cardiology》上曾發表的一篇文章《Making Sense of Statistics in Clinical Trial Reports》&#xff0c;來全面而具體地說明臨床試驗論文中&#xff0c;各種類型數據與結果使用圖表的正確展示方法。 本文將著重介紹基線數據、試…

3.Android逆向協議-APP反反編譯及回編譯

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;微塵網校 上一個內容&#xff1a;2.Android逆向協議-了解常用的逆向工具 在實際應用場景中會閱讀smail代碼&#xff0c;比如調試app&a…

【ai】tx2 nx :ubuntu查找NvInfer.h 路徑及哪個包、查找符號

在Ubuntu系統中,你可以使用多種方法來查找某個頭文件的路徑。這里有幾種常用的方法: 使用find命令: find命令是一個非常強大的工具,可以在文件系統中搜索匹配特定條件的文件。例如,如果你想查找名為stdio.h的頭文件,可以使用以下命令:bash 復制代碼 sudo find / -name …

響應頭缺省xss防御頭(X-XSS-Protection、X-Content-Type-Options)

HTTP X-Content-Type-Options 缺失 Web 服務器對于 HTTP 請求的響應頭缺少 X-Content-Type-Options,這意味著此網站更易遭受跨站腳本攻擊(XSS)。X-Content-Type-Options 響應頭相當于一個提示標志,被服務器用來提示客戶端一定要遵循在 Content-Type 首部中對 MIME 類型 的…

Python頭歌數據聚合

在Python中進行數據聚合通常涉及到使用Pandas庫&#xff0c;它是一個功能強大的數據分析工具。以下是一些基本的步驟和示例代碼&#xff0c;展示如何使用Pandas進行數據聚合&#xff1a; 導入Pandas庫: import pandas as pd讀取數據: 假設您有兩個CSV文件&#xff0c;我們可以使…

嵌入式Linux系統編程 — 4.5 strcmp、strchr 等函數實現字符串比較與查找

目錄 1 字符串比較 1.1 strcmp() 函數 1.2 strncmp() 函數 1.3 示例程序 2 字符串查找 2.1 strchr() 函數 2.2 strrchr() 函數 2.3 strstr() 函數 2.4 strpbrk() 函數 2.5 示例程序 1 字符串比較 strcmp() 和 strncmp() 函數是C語言標準庫中用于比較兩個字符串的函…

經典排序算法詳解

目錄 創作不易&#xff0c;如對您有幫助&#xff0c;還望一鍵三連&#xff0c;謝謝&#xff01; 前言 學習目標&#xff1a; 直接插入排序 基本思想&#xff1a; 代碼 希爾排序&#xff1a; gap取值 代碼 特性總結 選擇排序 基本思想 代碼 堆排序 思想 代碼 冒…

[CTF]-PWN:mips反匯編工具,ida插件retdec的安裝

IDA是沒有辦法直接按F5來反匯編mips的匯編的&#xff0c;而較為復雜的函數直接看匯編不太現實&#xff0c;所以只能借用插件來反匯編 先配置環境&#xff0c;下載python3.4以上的版本&#xff0c;并將其加入到環境變量中 下載retdec 地址&#xff1a;Release v1.0-ida80 ava…

蘋果開發者證書申請流程

蘋果開發者證書申請流程&#xff1a; 1.Certificates 后面加號 2.iOS Distribution (App Store and Ad Hoc) 點擊continue 3.選擇Upload a Certificate Signing Request To manually generate a Certificate, you need a Certificate Signing Request (CSR…

Unity關于Addressables.Release釋放資源內存問題

前言 最近在編寫基于Addressables的資源管理器&#xff0c;對于資源釋放模塊配合MemoryProfiler進行了測試&#xff0c;下面總結下測試Addressables.Release的結論。 總結 使用Addressables.Release釋放資源時&#xff0c;通過MemoryProfiler檢查內存信息發現加載的內容還在…

多租戶與低代碼開發的應用:解鎖企業數字化轉型的無限可能

在數字化轉型的浪潮中&#xff0c;多租戶與低代碼開發已經成為推動企業快速、靈活、安全地構建和部署應用的關鍵技術。本文將深入探討這兩種技術的結合如何為企業帶來前所未有的變革和機遇。 多租戶架構&#xff1a;資源共享與隔離的藝術 多租戶架構&#xff0c;是一種高級的軟…

一文讓你簡單明了的知道云管理平臺的作用

隨著云計算的飛速發展&#xff0c;越來越多的企業實現了上云。因此云管理平臺也在云計算環境中扮演著至關重要的角色&#xff0c;在企業上云后充分發揮作用。今天我們小編就來為大家簡單講解一下云管平臺的作用。 一文讓你簡單明了的知道云管理平臺的作用 作用1、提高工作效率…

思考-生涯思考-GPT-5對人們的影響

GPT-5 一年半后發布&#xff1f;對此你有何期待&#xff1f; IT之家6月22日消息&#xff0c;在美國達特茅斯工程學院周四公布的采訪中&#xff0c;OpenAI首席技術官米拉穆拉蒂被問及GPT-5是否會在明年發布&#xff0c;給出了肯定答案并表示將在一年半后發布。此外&#xff0c;…

20240629 每日AI必讀資訊

&#x1f680; Google 深夜突襲&#xff0c;Gemma 2 狂卷 Llama 3 - Gemma2性能超越Llama3&#xff0c;提供9B和27B版本&#xff0c;性能接近70B模型但大小僅為其40% - Gemma2支持高效推理&#xff0c;單個GPU即可實現全精度推理&#xff0c;廣泛的硬件支持 - Gemma2兼容多種…

CMake之嵌套的CMakeLists

文章目錄 前言項目結構節點關系如何嵌套多個cmake示例程序cmake 總結 前言 在現代軟件開發中&#xff0c;CMake 是一個非常重要的工具&#xff0c;它允許開發者編寫可移植的構建腳本來管理項目。對于大型項目&#xff0c;通常會有多個模塊或子項目&#xff0c;這時候就需要用到…