TWI879351B - 浮點數記憶體內運算裝置 - Google Patents
浮點數記憶體內運算裝置 Download PDFInfo
- Publication number
- TWI879351B TWI879351B TW112151044A TW112151044A TWI879351B TW I879351 B TWI879351 B TW I879351B TW 112151044 A TW112151044 A TW 112151044A TW 112151044 A TW112151044 A TW 112151044A TW I879351 B TWI879351 B TW I879351B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- mantissa
- weight
- circuit
- exponential
- Prior art date
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
一種浮點數記憶體內運算裝置。浮點數記憶體內運算裝置包括一指數儲存運算模組及一尾數儲存運算模組。指數儲存運算模組包括數個權重指數儲存電路、數個指數運算電路及一比較電路。這些指數運算電路用以獲得數個指數乘積資料。尾數儲存運算模組包括一位數位移電路、數個權重尾數儲存電路、數個尾數運算電路、一位移與加法電路、數個權重正負號儲存電路、數個正負號運算電路及一加總電路。這些尾數運算電路與位移與加法電路用以獲得數個尾數乘積資料。這些正負號運算電路用以獲得數個正負號乘積資料。
Description
本揭露是有關於一種浮點數記憶體內運算裝置。
記憶體內運算技術(Computing in memory,CIM)被視為解決記憶體牆(memory wall)的有效技術之一,其利用在記憶體內的運算來減少資料搬移的次數,可以大幅提升運算速度至傳統架構的幾百甚至幾千倍以上。現今大型AI網路(例如DNN)有很大一部分的能量被消耗在資料的搬移中。透過記憶體內運算技術(CIM)可以大幅降低因此而虛耗掉的能量,可說是兼具增加運算能力及降低功耗的未來AI潛力技術。
記憶體內運算技術(CIM)的潛力使得許多廠商及研究單位均投入並發表許多新穎的技術,但只能進行整數運算,且採用的類比感測可能會造成雜訊或製程變異等問題。目前所提出之記憶體內運算(CIM)並無法支援浮點數運算。因此研究人員正致力於開發支援浮點數的記憶體內運算架構。
本揭露係有關於一種浮點數記憶體內運算(floating-point computing in memory)裝置,其將浮點運算電路集成到記憶體內部,避免了資料的輸入和輸出,因此具有快速運算的優勢,並可減少功耗消耗,提高了能源效率。
根據本揭露之一方面,提出一種浮點數記憶體內運算(floating-point computing in memory)裝置。浮點數記憶體內運算裝置包括一指數(exponent)儲存運算模組及一尾數(Mantissa)儲存運算模組。指數儲存運算模組包括數個權重指數儲存電路、數個指數運算電路及一比較電路。這些權重指數儲存電路用以儲存數個權重資料之指數部分。這些指數運算電路用以對數個輸入資料之指數部分與這些權重資料之指數部分進行一加法運算,以獲得數個指數乘積資料。比較電路用以比較這些指數乘積資料,以獲得一最大指數乘積資料。尾數儲存運算模組包括一位數位移電路、數個權重尾數儲存電路、數個尾數運算電路、一位移與加法電路、數個權重正負號儲存電路、數個正負號運算電路及一加總電路。位數位移電路用以依據最大指數乘積資料,位移這些輸入資料之尾數部分。這些權重尾數儲存電路用以儲存這些權重資料之尾數部分。這些尾數運算電路用以對這些輸入資料之尾數部分與這些權重資料之尾數部分進行一乘法運算,以獲得數個尾數乘積中間資料。位移與加法電路用以對這些尾數乘積中間資料進行位移後再進行加總,以獲得數個尾數乘積資料。數個權重正負號儲存電路用以儲存這些權重資料之正負號部分。數個正負號運算電路用以對這些輸入資料之正負號部分與這些權重資料之正負號部分進行一互斥或(Exclusive-OR)運算,以獲得數個正負號乘積資料。加總電路用以整合這些正負號乘積資料、這些最大指數乘積資料及這些尾數乘積資料,以獲得一輸入與權重乘積和資料。
根據本揭露之另一方面,提出一種指數儲存運算模組。指數儲存運算模組包括數個權重指數儲存電路、數個指數運算電路及一比較電路。這些權重指數儲存電路用以儲存數個權重資料之指數部分。這些指數運算電路用以對數個輸入資料之指數部分與這些權重資料之指數部分進行一加法運算,以獲得數個指數乘積資料。比較電路用以比較這些指數乘積資料,以獲得一最大指數乘積資料。
根據本揭露之再一方面,提出一種尾數儲存運算模組。尾數儲存運算模組包括數個權重尾數儲存電路、數個尾數運算電路及一位移與加法電路。這些權重尾數儲存電路用以儲存數個權重資料之尾數部分。這些尾數運算電路用以對數個輸入資料之尾數部分與這些權重資料之尾數部分進行一乘法運算,以獲得數個尾數乘積中間資料。位移與加法電路用以對這些尾數乘積中間資料進行位移後再進行加總,以獲得數個尾數乘積資料。
為了對本揭露之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
請參照第1圖,其示例說明本揭露一實施例之浮點數資料之乘積運算。浮點數資料係由正負號部分S、指數部分E及尾數部分M所組成。以16位元之FP16運算架構為例,正負號部分S佔1位元、指數部分E佔8位元,尾數部分M佔7位元。尾數部分M的7位元依序為數值
時,此浮點數資料的數值內容即為
。
正負號部分S為0時,表示正值;正負號部分S為1時,表示負值。指數部分E可表示的範圍為
。尾數部分M可表示的範圍為1.0~1.9921875。
如第1圖所示,輸入資料IN與權重資料WT都可以採用FP16運算架構。輸入資料IN與權重資料WT進行乘積運算後,可以獲得乘積資料ML。乘積資料ML也會是採用FP16運算架構。在輸入資料IN與權重資料WT進行乘積運算時,會對指數部分E進行加法運算,並對尾數部分M進行乘法運算,對正負號部分S則是進行互斥或(Exclusive-OR)運算。
請參照第2圖,其繪示根據本揭露一實施例之浮點數資料之儲存方式。在一實施例中,浮點數資料之指數部分E、正負號部分S及尾數部分M可以依序排列且儲存於記憶體中。
請參照第3圖,其繪示根據本揭露一實施例之浮點數記憶體內運算(floating-point computing in memory)裝置100之架構圖。浮點數記憶體內運算裝置100包括一指數(exponent)儲存運算模組EP及一尾數(Mantissa)儲存運算模組MT。指數儲存運算模組EP用以進行浮點數資料之指數部分E(繪示於第1圖)的儲存與運算;尾數儲存運算模組MT用以進行浮點數資料之尾數部分M(繪示於第1圖)的儲存與運算。
指數儲存運算模組EP包括數個權重指數儲存電路SRE、數個指數運算電路LCCE及一比較電路COMP。尾數儲存運算模組MT包括一位數位移電路SHT、數個權重正負號儲存電路SRS、數個正負號運算電路LCCS、數個權重尾數儲存電路SRM、數個尾數運算電路LCCM、一位移與加法電路SHTA及一加總電路MSA。
在浮點數記憶體內運算裝置100中,整合了儲存單元(如權重指數儲存電路SRE、權重正負號儲存電路SRS、權重尾數儲存電路SRM)與運算單元(如指數運算電路LCCE、比較電路COMP、位數位移電路SHT、正負號運算電路LCCS、尾數運算電路LCCM、位移與加法電路SHTA、加總電路MSA)。因此,在進行浮點運算時,可以避免資料的頻繁輸入和輸出,故具有快速運算的優勢,並可減少功耗消耗,提高了能源效率。
請同時參照第3圖及第4圖,第4圖繪示根據本揭露之一實施例之浮點數記憶體內運算裝置100進行浮點數運算的資料流程。浮點數記憶體內運算裝置100進行浮點數運算的資料流程包括指數部分E(繪示於第1圖)之對齊AL、尾數部分M(繪示於第1圖)之乘積MLP、及乘積資料ML(繪示於第1圖)之累加AC。指數部分E之對齊AL係藉由指數儲存運算模組EP之指數運算電路LCCE、比較電路COMP及尾數儲存運算模組MT之位數位移電路SHT來完成。尾數部分M之乘積MLP係藉由尾數儲存運算模組MT之尾數運算電路LCCM、位移與加法電路SHTA來完成。乘積結果之累加AC係藉由尾數儲存運算模組MT之加總電路MSA來完成。
在進行浮點數資料的乘積運算時,會對指數部分E進行加法運算。如第4圖所示,指數運算電路LCCE用以對數個輸入資料IN之指數部分IN_E與數個權重資料WT之指數部分WT_E分別進行一加法運算,以獲得數個指數乘積資料ML_E。權重資料WT之指數部分WT_E係儲存於第3圖之權重指數儲存電路SRE內。
比較電路COMP連接於指數運算電路LCCE。比較電路COMP用以比較這些指數乘積資料ML_E,以獲得一最大指數乘積資料ML_E_max。
位數位移電路SHT連接於指數運算電路LCCE及比較電路COMP。位數位移電路SHT依據最大指數乘積資料ML_E_max,位移這些輸入資料IN之尾數部分IN_M,以獲得位移後之尾數部分IN_M’。權重資料WT之尾數部分WT_M係儲存於第3圖之權重尾數儲存電路SRM。
尾數運算電路LCCM連接於位數位移電路SHT。尾數運算電路LCCM用以對輸入資料IN之尾數部分IN_M’與權重資料WT之尾數部分WT_M進行一乘法運算,以獲得數個尾數乘積中間資料ML_M_im。尾數乘積中間資料ML_M_im係為乘法運算中尾數部分WT_M之每一位元與尾數部分IN_M’逐點進行乘積的資料。
位移與加法電路SHTA用以對這些尾數乘積中間資料ML_M_im進行位移後再進行加總,以獲得尾數乘積資料ML_M。
正負號運算電路LCCS則用以對輸入資料IN之正負號部分IN_S與權重資料WT之正負號部分WT_S進行一互斥或(Exclusive-OR)運算,以獲得正負號乘積資料ML_S。權重資料WT之正負號部分WT_S係儲存於第3圖之權重正負號儲存電路SRS。
加總電路MSA則用以整合正負號乘積資料ML_S、最大指數乘積資料ML_E_max及尾數乘積資料ML_M,以獲得一輸入與權重乘積和資料MAC。
以下更進一步詳細說明各項元件之細部結構與運作。
請參照第5圖,其繪示根據本揭露一實施例之權重指數儲存電路SRE與指數運算電路LCCE的示意圖。權重指數儲存電路SRE包括數個靜態隨機存取記憶體(Static random-access memory,SRAM)SR。每一靜態隨機存取記憶體SR包括六個電晶體(即6T-SRAM)。權重指數儲存電路SRE例如是具有全域位元線GBL<0>~GBL<7>、GBLB<0>~GBLB<7>及區域位元線LBL<0>~LBL<7>、LBLB<0>~LBLB<7>。某一橫列之靜態隨機存取記憶體SR儲存一組權重資料WT之指數部分WT_E。當某一橫列之靜態隨機存取記憶體SR被開啟時,經由區域位元線LBL<0>~LBL<7>,可以向指數運算電路LCCE輸入一組權重資料WT之指數部分WT_E。
指數運算電路LCCE包括數個切換與預充電電路SAP及一加法器AD。切換與預充電電路SAP連接於權重指數儲存電路SRE。切換與預充電電路SAP用以接收權重資料WT之指數部分WT_E。加法器AD連接於切換與預充電電路SAP,以接收權重資料WT之指數部分WT_E。加法器AD用以對輸入資料IN之指數部分IN_E與權重資料WT之指數部分WT_E進行加法運算,以獲得指數乘積資料ML_E。
請參照第6圖,其繪示根據本揭露一實施例之比較電路COMP的示意圖。比較電路COMP包括數個比較器CP。比較器CP用以比較指數乘積資料ML_E的兩筆指數乘積資料ML_E。經過階層式的兩兩比較,可以獲得最大指數乘積資料ML_E_max。
請再參照第7圖,其繪示根據本揭露一實施例之比較器CP的示意圖。本實施例之比較器CP包括一第一判斷電路CP1、一第二判斷電路CP2及一第三判斷電路CP3。第一判斷電路CP1用以比較指數乘積資料ML_E之前段位元A<0>~A<2>、B<0>~B<2>。前段位元A<2>與前段位元B<2>進行比較時,透過致能訊號EN啟動互斥或判斷器,並輸出互斥或結果C<2>。互斥或結果C<2>~C<0>經由判斷器的判斷,可以輸出判斷結果AWIN或判斷結果BWIN。判斷結果AWIN代表前段位元A<0>~A<2>比前段位元B<0>~B<2>大。若在第一判斷電路CP1即可判斷出大小,則無需啟動後續的第二判斷電路CP2及第三判斷電路CP3。
第二判斷電路CP2連接於第一判斷電路CP1。第二判斷電路CP2用以比較指數乘積資料ML_E之中段位元。若在第二判斷電路CP2即可判斷出大小,則無需啟動後續的第三判斷電路CP3。
第三判斷電路CP3連接於第二判斷電路CP2。第三判斷電路CP3用以比較指數乘積資料ML_E之後段位元。
透過比較器CP之三階段判斷電路設計,很多指數乘積資料ML_E的比較可以省略不開啟第二判斷電路CP2及第三判斷電路CP3、或省略不開啟第三判斷電路CP3。因此,可以大幅節省功率的消耗,並且加快比較的速度。
請參照第8圖,其繪示根據本揭露一實施例之位數位移電路SHT之示意圖。位數位移電路SHT包括數個減法器SB及數個位移器SH。減法器SB連接於比較電路COMP。減法器SB用以對最大指數乘積資料ML_E_max與指數乘積資料ML_E進行減法運算,以獲得位移量資料OF。
位移器SH連接於減法器SB。位移器SH用以依據位移量資料OF位移輸入資料IN之尾數部分IN_M,以獲得位移後之尾數部分IN_M’。
請參照第9圖,其繪示根據本揭露一實施例之尾數運算電路LCCM之示意圖。權重尾數儲存電路SRM包括數個靜態隨機存取記憶體(Static random-access memory,SRAM)SR。每一靜態隨機存取記憶體SR包括六個電晶體(即6T-SRAM)。權重尾數儲存電路SRM例如是具有全域位元線GBL<0>~GBL<7>、GBLB<0>~GBLB<7>及區域位元線LBL<0>~LBL<7>、LBLB<0>~LBLB<7>。某一橫列之靜態隨機存取記憶體SR儲存一組權重資料WT之尾數部分WT_M。當某一橫列之靜態隨機存取記憶體SR被開啟時,經由區域位元線LBL<0>~LBL<7>,可以向尾數運算電路LCCM輸入一組權重資料WT之尾數部分WT_M。
尾數運算電路LCCM包括數個切換與預充電電路SAP及一逐點乘法器(point-wise multiplier)PWM。切換與預充電電路SAP連接於權重尾數儲存電路SRM。切換與預充電電路SAP用以接收權重資料WT之尾數部分WT_M。逐點乘法器PWM連接於切換與預充電電路SAP,以接收權重資料WT之尾數部分WT_M。逐點乘法器PWM用以對輸入資料IN之尾數部分IN_M與權重資料WT之尾數部分WT_M進行乘法運算,以獲得尾數乘積資料ML_M。
請參照第10圖,其繪示根據本揭露一實施例之逐點乘法器PWM的示意圖。逐點乘法器PWM係由複數個電晶體TR、TRB所組成。靜態隨機存取記憶體SR用以儲存儲存權重資料WT之尾數部分WT_M的位元數值,最左側之靜態隨機存取記憶體SR例如是對應於最高有效位元MSB[7],最右側之靜態隨機存取記憶體SR例如是對應於最低有效位元LSB[0]。
儲存權重資料WT之尾數部分WT_M之靜態隨機存取記憶體SR的位元線BL0~BL7連接於串接之電晶體TR。靜態隨機存取記憶體SR的位元線BLB0~BLB7連接於串接之電晶體TRB。電晶體TR之兩端連接於輸入端IN[0]~IN[7]與輸出端OUT0[0]~OUT0[7],電晶體TRB之兩端連接於接地端GD與輸出端OUT0[0]~OUT0[7]。輸入資料IN之尾數部分IN_M由輸入端IN[0]~IN[7]輸入。
根據逐點乘法器PWM的電路架構,當權重資料WT之尾數部分WT_M從位元線BL7輸入1,且輸入資料IN之尾數部分IN_M從輸入端IN[7]輸入1時,輸出端OUT7[7]輸出1。當權重資料WT之尾數部分WT_M從位元線BL7輸入1,且輸入資料IN之尾數部分IN_M從輸入端IN[6]輸入0時,輸出端OUT7[6]輸出0。當權重資料WT之尾數部分WT_M從位元線BL0輸入0,且輸入資料IN之尾數部分IN_M從輸入端IN[7]輸入0時,輸出端OUT0[7]輸出0。當權重資料WT之尾數部分WT_M從位元線BL0輸入0,且輸入資料IN之尾數部分IN_M從輸入端IN[6]輸入1時,輸出端OUT0[6]輸出0。
透過上述逐點乘法器PWM的電路架構,即可獲得權重資料WT之尾數部分WT_M與輸入資料IN之尾數部分IN_M的逐點乘積結果。這些乘積結果即為前述之尾數乘積中間資料ML_M_im。
請參照第11圖,其示例說明根據本揭露一實施例之位移與加法電路SHTA的運作。位移與加法電路SHTA用以對尾數乘積中間資料ML_M_im進行位移後再進行加總,以獲得尾數乘積資料ML_M。
請參照第12圖,其繪示根據本揭露一實施例之正負號運算電路LCCS的示意圖。權重正負號儲存電路SRS包括數個靜態隨機存取記憶體(Static random-access memory,SRAM)SR。每一靜態隨機存取記憶體SR包括六個電晶體(即6T-SRAM)。權重正負號儲存電路SRS例如是具有全域位元線GBL<7>、GBLB<7>及區域位元線LBL<7>、LBLB<7>。某一靜態隨機存取記憶體SR儲存一組權重資料WT之正負號部分WT_S。當某一靜態隨機存取記憶體SR被開啟時,經由區域位元線LBL<7>,可以向正負號運算電路LCCS輸入一組權重資料WT之正負號部分WT_S。
正負號運算電路LCCS包括一切換與預充電電路SAP與一互斥或運算器XOR。
切換與預充電電路SAP連接於權重正負號儲存電路SRS。切換與預充電電路SAP用以接收權重資料WT之正負號部分WT_S。互斥或運算器XOR連接於切換與預充電電路SAP,以接收權重資料WT之正負號部分WT_S。互斥或運算器XOR用以對輸入資料IN之正負號部分IN_S與權重資料WT之正負號部分WT_S進行互斥或運算,以獲得正負號乘積資料ML_S。
根據上述說明,浮點數記憶體內運算裝置100得以支援FP16運算架構。在其他實施例中,浮點數記憶體內運算裝置100亦同時支援INT8運算架構。請參照第13圖,其示例說明本揭露一實施例之整數資料之乘積運算。浮點數資料之正負號部分S與尾數部分M組成整數資料之整數部分INT。指數部分E則不做使用。整數部分INT佔8位元。輸入資料IN可表示的範圍為0~255。權重資料WT可表示的範圍為-128~127。輸入資料IN與權重資料WT進行乘積運算後,可以獲得乘積資料ML。
請參照第14圖,其繪示根據本揭露之一實施例之浮點數記憶體內運算裝置100進行整數運算的資料流程。浮點數記憶體內運算裝置100進行整數運算的資料流程包括乘積MLP及累加AC。乘積MLP係藉由尾數儲存運算模組MT之尾數運算電路LCCM、位移與加法電路SHTA來完成。乘積資料ML之累加AC係藉由尾數儲存運算模組MT之加總電路MSA來完成。如此一來,浮點數記憶體內運算裝置100亦可同時支援INT8運算架構。
以上揭露提供用於實施本揭露之一些實施方式或實例之不同特徵。上述描述部件及配置之特定實例(例如所提及的數值或名稱)以簡化/示意本揭露之一些實施方式。當然,此等部件及配置僅為實例且並非意欲為限制性的。此外,本揭露之一些實施方式在各種實例中可重複參考符號及/或字母。此重複係出於簡單及清楚之目的,且本身並不指明所論述之各種實施方式及/或組態之間的關係。
根據上述實施例,在浮點數記憶體內運算裝置100中,整合了儲存單元(如權重指數儲存電路SRE、權重正負號儲存電路SRS、權重尾數儲存電路SRM)與運算單元(如指數運算電路LCCE、比較電路COMP、位數位移電路SHT、正負號運算電路LCCS、尾數運算電路LCCM、位移與加法電路SHTA、加總電路MSA)。因此,在進行浮點運算時,可以避免資料的頻繁輸入和輸出,故具有快速運算的優勢,並可減少功耗消耗,提高了能源效率。
本揭露提出之指數儲存運算模組EP及/或尾數儲存運算模組MT皆為本揭露所欲保護之範圍。倘若單獨實施本揭露之指數儲存運算模組EP,其餘部分搭配其他方式的電路設計時,仍不脫離本揭露之精神和範圍。倘若單獨實施本揭露之尾數儲存運算模組MT,其餘部分搭配其他方式的電路設計時,仍不脫離本揭露之精神和範圍。
綜上所述,雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露。本揭露所屬技術領域中具有通常知識者,在不脫離本揭露之精神和範圍內,當可作各種之更動與潤飾。因此,本揭露之保護範圍當視後附之申請專利範圍所界定者為準。
100:浮點數記憶體內運算裝置
AC:累加
AD:加法器
AL:對齊
AWIN, BWIN:判斷結果
A<0>, A<1>, A<2>, B<0>, B<1>, B<2>:前段位元
BL0, BLB0, BL7, BLB7:位元線
COMP:比較電路
CP:比較器
CP1:第一判斷電路
CP2:第二判斷電路
CP3:第三判斷電路
C<0>, C<1>, C<2>:互斥或結果
E:指數部分
EN:致能訊號
EP:指數儲存運算模組
GBL<0>, GBL<7>, GBLB<0>, GBLB<7>:全域位元線
GD:接地端
IN:輸入資料
INT:整數部分
IN[0], IN[6], IN[7]:輸入端
IN_E:輸入資料之指數部分
IN_M:輸入資料之尾數部分
IN_M’:位移後之尾數部分
IN_S:輸入資料之正負號部分
LBL<0>, LBL<7>, LBLB<0>, LBL<7>:區域位元線
LCCE:指數運算電路
LCCM:尾數運算電路
LCCS:正負號運算電路
LSB[0]:最低有效位元
M:尾數部分
:數值
MAC:輸入與權重乘積和資料
ML:乘積資料
MLP:乘積
ML_E:指數乘積資料
ML_E_max:最大指數乘積資料
ML_M:尾數乘積資料
ML_M_im:尾數乘積中間資料
ML_S:正負號乘積資料
MSA:加總電路
MSB[7]:最高有效位元
MT:尾數儲存運算模組
OF:位移量資料
OUT0[0], OUT0[6], OUT0[7], OUT7[0], OUT7[6], OUT7[7]:輸出端
PWM:逐點乘法器
S:正負號部分
SAP:切換與預充電電路
SB:減法器
SH:位移器
SHT:位數位移電路
SHTA:位移與加法電路
SR:靜態隨機存取記憶體
SRE:權重指數儲存電路
SRM:權重尾數儲存電路
SRS:權重正負號儲存電路
TR, TRB:電晶體
WT:權重資料
WT_E:權重資料之指數部分
WT_M:權重資料之尾數部分
WT_S:權重資料之正負號部分
XOR:互斥或運算器
第1圖示例說明本揭露一實施例之浮點數資料之乘積運算。
第2圖繪示根據本揭露一實施例之浮點數資料之儲存方式。
第3圖繪示根據本揭露一實施例之浮點數記憶體內運算(floating-point computing in memory)裝置之架構圖。
第4圖繪示根據本揭露之一實施例之浮點數記憶體內運算裝置進行浮點數運算的資料流程。
第5圖繪示根據本揭露一實施例之權重指數儲存電路與指數運算電路的示意圖。
第6圖繪示根據本揭露一實施例之比較電路的示意圖。
第7圖繪示根據本揭露一實施例之比較器的示意圖。
第8圖繪示根據本揭露一實施例之位數位移電路之示意圖。
第9圖繪示根據本揭露一實施例之尾數運算電路之示意圖。
第10圖繪示根據本揭露一實施例之逐點乘法器的示意圖。
第11圖示例說明根據本揭露一實施例之位移與加法電路的運作。
第12圖繪示根據本揭露一實施例之正負號運算電路的示意圖。
第13圖示例說明本揭露一實施例之整數資料之乘積運算。
第14圖繪示根據本揭露之一實施例之浮點數記憶體內運算裝置進行整數運算的資料流程。
100:浮點數記憶體內運算裝置
COMP:比較電路
EP:指數儲存運算模組
LCCE:指數運算電路
LCCM:尾數運算電路
LCCS:正負號運算電路
MSA:加總電路
MT:尾數儲存運算模組
SHT:位數位移電路
SHTA:位移與加法電路
SRE:權重指數儲存電路
SRM:權重尾數儲存電路
SRS:權重正負號儲存電路
Claims (12)
- 一種浮點數記憶體內運算(floating-point computing in memory)裝置,包括: 一指數(exponent)儲存運算模組,包括: 複數個權重指數儲存電路,用以儲存複數個權重資料之指數部分; 複數個指數運算電路,用以對複數個輸入資料之指數部分與該些權重資料之指數部分進行一加法運算,以獲得複數個指數乘積資料;及 一比較電路,用以比較該些指數乘積資料,以獲得一最大指數乘積資料;以及 一尾數(Mantissa)儲存運算模組,包括: 一位數位移電路,用以依據該最大指數乘積資料,位移該些輸入資料之尾數部分; 複數個權重尾數儲存電路,用以儲存該些權重資料之尾數部分; 複數個尾數運算電路,用以對該些輸入資料之尾數部分與該些權重資料之尾數部分進行一乘法運算,以獲得複數個尾數乘積中間資料; 一位移與加法電路,用以對該些尾數乘積中間資料進行位移後再進行加總,以獲得複數個尾數乘積資料; 複數個權重正負號儲存電路,用以儲存該些權重資料之正負號部分; 複數個正負號運算電路,用以對該些輸入資料之正負號部分與該些權重資料之正負號部分進行一互斥或(Exclusive-OR)運算,以獲得複數個正負號乘積資料;及 一加總電路,用以整合該些正負號乘積資料、該些最大指數乘積資料及該些尾數乘積資料,以獲得一輸入與權重乘積和資料。
- 如請求項1所述之浮點數記憶體內運算裝置,其中各該權重指數儲存電路包括複數個靜態隨機存取記憶體(Static random-access memory,SRAM)。
- 如請求項2所述之浮點數記憶體內運算裝置,其中各該靜態隨機存取記憶體包括六個電晶體。
- 如請求項1所述之浮點數記憶體內運算裝置,其中各該指數運算電路包括: 複數個切換與預充電電路,連接於該些權重指數儲存電路,並用以接收該些權重資料之指數部分;以及 一加法器,連接於該些切換與預充電電路,並用以接收該些權重資料之指數部分,以對該些輸入資料之指數部分與該些權重資料之指數部分進行該加法運算,以獲得該些指數乘積資料。
- 如請求項1所述之浮點數記憶體內運算裝置,其中該比較電路連接於該些指數運算電路,該比較電路包括: 複數個比較器,用以比較該些指數乘積資料的兩筆指數乘積資料。
- 如請求項5所述之浮點數記憶體內運算裝置,其中各該比較器包括: 一第一判斷電路,用以比較該些指數乘積資料之前段位元; 一第二判斷電路,連接於該第一判斷電路,並用以比較該些指數乘積資料之中段位元;以及 一第三判斷電路,連接於該第二判斷電路,並用以比較該些指數乘積資料之後段位元。
- 如請求項1所述之浮點數記憶體內運算裝置,其中該位數位移電路包括: 複數個減法器,連接於該比較電路,並用以對該最大指數乘積資料與該些指數乘積資料進行減法運算,以獲得複數個位移量資料;以及 複數個位移器,連接於該些減法器,並用以依據該些位移量資料位移該些輸入資料之尾數部分。
- 如請求項1所述之浮點數記憶體內運算裝置,其中各該權重尾數儲存電路包括複數個靜態隨機存取記憶體(Static random-access memory,SRAM)。
- 如請求項1所述之浮點數記憶體內運算裝置,其中各該尾數運算電路包括: 複數個切換與預充電電路,連接於該些權重尾數儲存電路,並用以接收該些權重資料之尾數部分;以及 一逐點乘法器(point-wise multiplier),連接於該些切換與預充電電路,並用以接收該些權重資料之尾數部分,以對該些輸入資料之尾數部分與該些權重資料之尾數部分進行該乘法運算,以獲得該些尾數乘積資料。
- 如請求項1所述之浮點數記憶體內運算裝置,其中各該權重正負號儲存電路包括複數個靜態隨機存取記憶體(Static random-access memory,SRAM)。
- 如請求項10所述之浮點數記憶體內運算裝置,其中各該靜態隨機存取記憶體包括六個電晶體。
- 如請求項1所述之浮點數記憶體內運算裝置,其中各該正負號運算電路包括: 一切換與預充電電路,連接於該些權重正負號儲存電路,並用以接收該些權重資料之正負號部分;以及 一互斥或運算器,連接於該切換與預充電電路,並用以接收該些權重資料之正負號部分,以對該些輸入資料之正負號部分與該些權重資料之正負號部分進行該互斥或運算,以獲得該些正負號乘積資料。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112151044A TWI879351B (zh) | 2023-12-27 | 2023-12-27 | 浮點數記憶體內運算裝置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112151044A TWI879351B (zh) | 2023-12-27 | 2023-12-27 | 浮點數記憶體內運算裝置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI879351B true TWI879351B (zh) | 2025-04-01 |
| TW202526615A TW202526615A (zh) | 2025-07-01 |
Family
ID=96142204
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112151044A TWI879351B (zh) | 2023-12-27 | 2023-12-27 | 浮點數記憶體內運算裝置 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI879351B (zh) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230195420A1 (en) * | 2021-12-21 | 2023-06-22 | Korea Advanced Institute Of Science And Technology | Floating-point computation apparatus and method using computing-in-memory |
| CN116610285A (zh) * | 2022-02-17 | 2023-08-18 | 想象技术有限公司 | 用于计算点积的方法和系统 |
| TW202343467A (zh) * | 2017-04-28 | 2023-11-01 | 美商英特爾股份有限公司 | 執行用以針對機器學習執行浮點及整數運算之指令及邏輯的設備、方法及系統 |
-
2023
- 2023-12-27 TW TW112151044A patent/TWI879351B/zh active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW202343467A (zh) * | 2017-04-28 | 2023-11-01 | 美商英特爾股份有限公司 | 執行用以針對機器學習執行浮點及整數運算之指令及邏輯的設備、方法及系統 |
| US20230195420A1 (en) * | 2021-12-21 | 2023-06-22 | Korea Advanced Institute Of Science And Technology | Floating-point computation apparatus and method using computing-in-memory |
| CN116610285A (zh) * | 2022-02-17 | 2023-08-18 | 想象技术有限公司 | 用于计算点积的方法和系统 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202526615A (zh) | 2025-07-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110334799B (zh) | 基于存算一体的神经网络推理与训练加速器及其运行方法 | |
| Hickmann et al. | Intel nervana neural network processor-t (nnp-t) fused floating point many-term dot product | |
| US11664070B2 (en) | In-memory computation device and in-memory computation method to perform multiplication operation in memory cell array according to bit orders | |
| TW202230165A (zh) | 記憶體內計算的裝置及方法 | |
| CN110750232B (zh) | 一种基于sram的并行乘加装置 | |
| WO2021232422A1 (zh) | 神经网络的运算装置及其控制方法 | |
| US12282844B2 (en) | Artificial intelligence accelerators | |
| CN116362314A (zh) | 一种存算一体装置和计算方法 | |
| CN115495152A (zh) | 变长输入的存内计算电路 | |
| TWI879351B (zh) | 浮點數記憶體內運算裝置 | |
| Chen et al. | Osa-hcim: On-the-fly saliency-aware hybrid sram cim with dynamic precision configuration | |
| CN110673802B (zh) | 数据存储方法、装置、芯片、电子设备和板卡 | |
| CN112989273A (zh) | 一种利用补码编码进行存内运算的方法 | |
| TW202336608A (zh) | 讀取記憶體的方法及記憶體裝置 | |
| CN119669147A (zh) | 多比特数据存内计算阵列结构、sram和电子设备 | |
| US20220108203A1 (en) | Machine learning hardware accelerator | |
| CN114281301A (zh) | 支持内部数据乒乓的高密度存内计算乘加单元电路 | |
| US20250217105A1 (en) | Floating-point computing-in-memory device, exponent computing memory module and mantissa computing memory module | |
| CN120220747A (zh) | 存内运算装置及其指数存储运算模块与尾数存储运算模块 | |
| CN115049907B (zh) | 一种基于fpga的yolov4目标检测网络实现方法 | |
| CN117951427A (zh) | 一种支持多算法的全连接伊辛模型可重构处理电路 | |
| CN117131915A (zh) | 一种用于人工智能计算的方法、设备及介质 | |
| TWI749552B (zh) | 內積計算裝置 | |
| CN113378115B (zh) | 一种基于磁性随机存储器的近存稀疏向量乘法器 | |
| WO2023082458A1 (zh) | 一种存内计算方法及电路、半导体存储器和存储结构 |