本發明涉及存內計算,具體涉及一種混合精度浮點數字存算宏及多芯片模組。
背景技術:
1、隨著人工智能模型變得越來越復雜和龐大,例如大語言模型(如gpt、bert等)和擴散模型(diffusion?models),它們對于數值精度的要求也越來越高。這些模型通常需要使用浮點(fp,floating?point)格式來確保足夠的精度,以支持復雜的數學運算和梯度更新過程。
2、近期的cim(compute-in-memory,存內計算)設計主要集中在支持經典的高精度浮點格式,如單精度浮點(fp32)、半精度浮點(fp16),以及腦浮點(bf16)。盡管這些格式提供了較高的數值精度,但它們也帶來了顯著的存儲開銷和位操作負擔,從而限制了性能提升的空間。
3、此外,在處理卷積神經網絡(cnn)和transformer架構網絡中的不同層及張量形狀時,傳統的cim宏單元需要頻繁進行片外存儲器訪問(external?memory?access,片外存儲訪問)。這種重復的訪問不僅增加了延遲,還消耗了大量的帶寬資源。特別是在多芯片模組(multi-chip?module,多芯片模組)環境中,片外存儲訪問和芯片間通信帶寬成為制約系統可擴展性的瓶頸。
技術實現思路
1、有鑒于此,本發明實施例提供一種混合精度浮點數字存算宏及多芯片模組。
2、本發明第一方面提供了一種混合精度浮點數字存算宏,包括hfp-cim陣列、輸入激活內存、最大指數查找器、加法樹、fp組合器以及c2c連接器;所述hfp-cim陣列分別連接所述輸入激活內存、所述最大指數查找器和所述加法樹;所述fp組合器分別連接所述最大指數查找器和所述加法樹;所述c2c連接器連接所述輸入激活內存、并通過多路復用器連接所述hfp-cim陣列和所述fp組合器。
3、進一步地,所述c2c連接器包括輸入激活接收器、輸入激活發射器、部分和輸出激活接收器、部分和輸出激活發射器、權重接收器和權重發射器;其中所述輸入激活接收器和所述輸入激活發射器連接所述輸入激活內存;所述權重接收器通過多路復用器連接所述hfp-cim陣列;所述權重發射器通過多路復用器連接所述hfp-cim陣列;所述部分和輸出激活發射器通過多路復用器連接所述部分和輸出激活接收器、所述hfp-cim陣列及所述fp組合器;
4、所述輸入激活接收器用于將外部的輸入激活流寫入所述輸入激活內存;
5、所述權重接收器用于將外部的權重流寫入所述hfp-cim陣列;
6、所述部分和輸出激活接收器用于將外部的輸出激活流傳輸至所述部分和輸出激活發射器;
7、所述部分和輸出激活發射器用于輸出所述hfp-cim陣列、所述fp組合器以及所述部分和輸出激活接收器提供的輸出激活流;
8、所述輸入激活發射器用于輸出所述輸入激活內存提供的輸入激活流;
9、所述權重發射器用于輸出所述hfp-cim陣列提供的權重流。
10、進一步地,所述輸入激活內存包括多個靜態隨機存取存儲器用于存儲輸入激活流;所述靜態隨機存取存儲器通過多路復用器將輸入激活流傳輸至hfp-cim陣列。
11、進一步地,所述hfp-cim陣列包括多個層級,每個層級中各自包括多個sram行、rwl解碼器、wwl解碼器、wbl驅動器、rbl驅動器、可重構存內累加器以及尾數對齊模塊;
12、在每個層級中,所述rwl解碼器、所述wwl解碼器、所述wbl驅動器和所述rbl驅動器各自連接每個sram行;所述rwl解碼器還連接所述輸入激活內存;所述rbl驅動器還通過多路復用器連接所述可重構存內累加器、部分和輸出激活發射器以及權重發射器;所述可重構存內累加器連接所述最大指數查找器和所述尾數對齊模塊;所述尾數對齊模塊連接所述最大指數查找器及所述加法樹;
13、所述rwl解碼器用于接收所述輸入激活內存的輸入激活流,將輸入激活流傳輸至每個sram行進行存儲;
14、所述wbl驅動器用于對所述sram行中的位線進行選擇性寫入;
15、所述wwl解碼器用于選擇所述sram行中的字線進行選擇性寫入;
16、所述sram行用于根據所述wbl驅動器和所述wwl解碼器的寫入結果存儲權重數據或部分和數據或輸出激活數據并進行存內計算操作,得到輸出信號輸出至所述rbl驅動器;
17、所述rbl驅動器用于接收所述sram行的輸出信號,將輸出信號通過多路復用器傳輸至可重構存內累加器;所述rbl驅動器還用于生成輸出數據流,并通過多路復用器將輸出數據流傳輸至所述部分和輸出激活發射器;所述rbl驅動器還用于通過多路復用器將權重數據流傳輸至權重發射器;
18、所述可重構存內累加器用于接收所述輸入激活內存傳輸的輸入激活流和所述hfp-cim陣列的輸出信號,進行并行的指數加法運算和輸入激活比特級累加運算,得到指數加法信號和累加信號,并將指數加法信號傳輸至所述最大指數查找器,將累加信號傳輸至所述尾數對齊模塊;
19、所述尾數對齊模塊用于對所述可重構存內累加器輸出的累加信號進行尾數對齊操作,得到對齊尾數信號傳輸至加法樹進行通道級累加操作。
20、進一步地,所述rwl解碼器包括讀使能配置或輸入激活配置;每個所述sram行中包括多個靜態隨機存取存儲器單元,各自分為指數扇區和尾數扇區;所述指數扇區的靜態隨機存取存儲器單元執行指數加法運算,尾數扇區的靜態隨機存取存儲器單元執行尾數乘法運算。
21、進一步地,所述sram行中靜態隨機存取存儲器單元的讀字線通過對指數尾數比的開關連接;sram行與sram行之間通過對浮點精度的開關連接;
22、在所述hfp-cim陣列中,通過對指數尾數比的開關控制能夠改變sram行加法扇區和累加扇區靜態隨機存取存儲器單元的比例,以調節所述hfp-cim陣列的指數尾數比;通過對浮點精度的開關能夠對sram行進行任意重組,以重構所述hfp-cim陣列的粒度,從而支持任意的浮點精度。
23、進一步地,所述可重構存內累加器中包括多個全加器和一組乒乓sram;所述全加器排列為一行,并和乒乓sram之間通過多路復用器連接;
24、所述全加器和乒乓sram根據所述hfp-cim陣列的設置分為加法扇區和累加扇區;加法扇區和累加扇區的全加器之間,加法扇區和累加扇區的乒乓sram之間通過對指數尾數比的開關連接;加法扇區的全加器執行指數加法運算,得到指數加法信號輸出至所述最大指數查找器進行最大指數的搜索;累加扇區的乒乓sram循環進行讀寫操作并配合累加扇區的全加器進行尾數在輸入激活比特級的累加運算,得到累加信號輸出至尾數模塊。
25、進一步地,所述加法扇區的全加器接收來自rbl驅動器傳輸sram行的輸出信號、輸入數據流的指數信號,進行指數加法運算后,輸出指數加法信號至乒乓sram的指數扇區;
26、所述累加扇區的全加器接收來自rbl驅動器傳輸sram行的輸出信號和上一周期存儲在累加扇區乒乓sram一行中的尾數累加部分和信號,進行尾數累加運算后,輸出累加后的部分和至乒乓sram的另外一行。
27、本發明第二方面公開一種基于芯粒的多芯片模組,所述多芯片模組具有所述的宏,所述多芯片模組具有權重固定存內計算模式和輸出固定存內計算模式;
28、其中,權重固定存內計算模式具體包括:
29、設置所述sram行中靜態隨機存取存儲器單元存儲權重數據,設置最小化權重的外部存儲器訪問計算優先級;
30、根據核參數和通道參數設置,將權重數據加載在sram行的靜態隨機存取存儲器單元;
31、通過所述輸入激活內存將輸入激活流垂直傳輸至每個hfp-cim宏中;在每個hfp-cim陣列進行存內計算,上一hfp-cim陣列的存內計算結果作為下一hfp-cim陣列的輸入,最后一個hfp-cim陣列的存內計算結果作為輸出信號傳輸至所述rbl驅動器;
32、輸出固定存內計算模式包括:
33、設置所述sram行中靜態隨機存取存儲器單元存儲權重數據或部分數據和或輸出激活數據,設置最小化輸出激活數據的外部存儲器訪問計算優先級;
34、設置多個水平的hfp-cim陣列組,每個hfp-cim陣列組并行執行存內計算;
35、將權重數據在每個hfp-cim宏中水平傳輸,將輸入激活流垂直傳輸至每個hfp-cim宏中;在每個水平的hfp-cim陣列組中進行存內計算,最后一個hfp-cim陣列組的存內計算結果作為輸出信號傳輸至所述rbl驅動器。
36、進一步地,所述最小化權重的外部存儲器訪問計算優先級和/或最小化輸出激活數據的外部存儲器訪問計算優先級,根據外部輸入數據流來源的外部人工智能模型結構確定。
37、本發明的實施例具有如下方面有益效果:本發明利用低精度混合浮點(hybridfloating?point,hfp)的概念,設計出具有分段讀字線(segmented?reading?word?line)的hfp-cim陣列,其浮點精度和emr(exponent-to-mantissa?ratio,指數尾數比)可重構,能提高各種hfp格式下芯片的數據吞吐量。同時可重構的存內累加器(reconfigurable?in-memory?accumulator,rima)能夠并行計算指數和尾數(parallel-em),以減少fp操作的延遲并進一步提高數據吞吐量。本發明以以最小化單芯片片外存儲訪問并支持基于芯粒的多芯片模組具有二維可擴展異構數據流(scalable?heterogeneous?data?flows,shd),增強芯片間數據重用并抑制多芯片模組的片外存儲訪問。
38、本發明的附加方面和優點將在下面的描述部分中給出,部分將從下面的描述中變得明顯,或通過本發明的實踐了解到。