本發(fā)明涉及集成電路領(lǐng)域的一種最大值尋找電路,尤其涉及一種浮點(diǎn)數(shù)指數(shù)最大值尋找電路,還涉及一種存內(nèi)計算芯片。
背景技術(shù):
1、存內(nèi)計算(cim,compute-in-memory)是一種新興的計算架構(gòu),旨在將數(shù)據(jù)存儲和計算過程緊密結(jié)合,從而減少數(shù)據(jù)傳輸延遲,提高計算效率。cim技術(shù)通過將計算操作直接嵌入存儲單元中,消除了傳統(tǒng)馮·諾依曼架構(gòu)中數(shù)據(jù)在存儲器和中央處理單元之間的頻繁搬移,這在大規(guī)模數(shù)據(jù)處理、人工智能、深度學(xué)習(xí)等領(lǐng)域具有重要應(yīng)用價值。
2、在cim中,許多科學(xué)計算、機(jī)器學(xué)習(xí)以及圖像處理任務(wù)都依賴于浮點(diǎn)數(shù)數(shù)據(jù)類型的高精度和寬范圍。浮點(diǎn)數(shù)格式能夠表達(dá)非常大的或非常小的數(shù)值,并且在復(fù)雜的數(shù)學(xué)運(yùn)算中提供足夠的精度。fp16(16位浮點(diǎn)數(shù))格式作為一種常見的浮點(diǎn)數(shù)表示方法,因其在存儲空間和運(yùn)算速度上的優(yōu)勢,廣泛應(yīng)用于圖像處理和深度學(xué)習(xí)等領(lǐng)域。fp16格式將浮點(diǎn)數(shù)分為符號位、指數(shù)位和尾數(shù)位,其中指數(shù)位的大小決定了浮點(diǎn)數(shù)的范圍。在fp16的計算中,尤其是在進(jìn)行加法或乘加操作時,根據(jù)各自指數(shù)的大小正確地對齊不同的尾數(shù)是保證運(yùn)算結(jié)果準(zhǔn)確性和高效性的必要步驟。為此,快速尋找fp16數(shù)值中的最大指數(shù)值,進(jìn)而指導(dǎo)尾數(shù)對齊操作,成為fp16運(yùn)算中的關(guān)鍵環(huán)節(jié)。但是,現(xiàn)有的最大指數(shù)值的尋找電路通常依賴于多級比較器、樹形結(jié)構(gòu)或并行計算架構(gòu)等方式,往往面臨較高的功耗、復(fù)雜的硬件實現(xiàn)以及較長的計算延遲等缺陷。在cim架構(gòu)中,這些傳統(tǒng)方法的局限性尤為突出,因為它們無法有效地滿足低功耗、高速度的需求。。
技術(shù)實現(xiàn)思路
1、為解決現(xiàn)有的指數(shù)最大數(shù)尋找電路存在較高的功耗、復(fù)雜的硬件實現(xiàn)以及較長的計算延遲等缺陷的技術(shù)問題,本發(fā)明提供一種浮點(diǎn)數(shù)指數(shù)最大值尋找電路及存內(nèi)計算芯片。
2、本發(fā)明采用以下技術(shù)方案實現(xiàn):一種浮點(diǎn)數(shù)指數(shù)最大值尋找電路,其包括:
3、sram單元矩陣:包括多行多列的sram單元,每個單元包括nmos管n1~n5和pmos管p1、p2;n1、n2、p1、p2反相交叉耦合形成一對存儲節(jié)點(diǎn)q和qb;n5的柵極連接節(jié)點(diǎn)qb;
4、行控制:第i行的n3的柵極連接字線wll<i>,n4柵極連接字線wlr<i>;
5、列級聯(lián):每列n5的漏極與下一列的n5的源極串聯(lián),首列n5的源極連接信號sel<i>,末列的n5漏極連接信號pre;
6、位線控制:第j列中,n3為對應(yīng)的節(jié)點(diǎn)q與位線bl<j>的傳輸管,n4為對應(yīng)的節(jié)點(diǎn)qb與位線blb<j>的傳輸管;
7、最大值判斷邏輯:(1)通過字線(wll<i>、wlr<i>)和位線(bl<j>、blb<j>)控制節(jié)點(diǎn)q、qb的充放電,使第i行第j列單元存儲第j個浮點(diǎn)數(shù)指數(shù)的第i位;(2)逐行檢測信號sel<i>與信號pre的傳輸狀態(tài):若信號pre能傳輸至信號sel<i>端,判定該位為0;若傳輸被阻斷,判定該位為1;(3)組合各行的判定結(jié)果,得到指數(shù)最大值。
8、本發(fā)明在找指數(shù)最大值的過程中,電路會實時找出已經(jīng)不可能是最大值的指數(shù),并在后續(xù)計算中將其排除、屏蔽,不僅節(jié)約了尋找的周期數(shù)、縮短了計算時間,減少后續(xù)的計算量,提高效率,而且降低了功耗,解決了現(xiàn)有的指數(shù)最大數(shù)尋找電路存在較高的功耗、復(fù)雜的硬件實現(xiàn)以及較長的計算延遲等缺陷的技術(shù)問題。
9、進(jìn)一步地,所述尋找電路還包括:
10、多個配置電路,分別與多行sram單元對應(yīng);每個配置電路包括多路選擇器mux1、mux2、mux3,d觸發(fā)器dff3;mux1的控制端與對應(yīng)的信號sel<i>連接,其中一個輸出端連接mux2的其中一個輸入端,其中另一個輸出端連接dff3的輸入端d;mux2的其中另一個輸入端連接dff3的輸出端和mux3的其中一個輸入端,輸出端輸出信號d<i+1>;mux3的其中另一個輸入端連接外部信號wl<i>,mux3的輸出端連接對應(yīng)的字線wll<i>,控制端連接外部信號r_c_n;dff3的時鐘信號輸入端連接外部信號cp,輸出端輸出信號wl_s<i>;外部信號wl<i>與字線wlr<i>連接。
11、再進(jìn)一步地,所述尋找電路還包括:
12、初始化電路,其包括d觸發(fā)器dff1、dff2;dff1的輸入端d連接信號vss,時鐘信號輸入端連接外部信號cp,重置端連接外部信號set,輸出端連接dff2的輸入端d并輸出信號d_set;dff2的時鐘信號輸入端連接外部信號cp,輸出端連接mux1的輸入端并輸出信號d<0>。
13、再進(jìn)一步地,所述尋找電路還包括:
14、選擇器電路,其包括分別與多行sram單元對應(yīng)的多路選擇器mux4;mux4的兩個輸入端分別連接信號vss和vdd,輸出端連接對應(yīng)行的最后一個n5的漏極,控制端連接信號pre。
15、再進(jìn)一步地,所述尋找電路還包括:
16、讀寫控制電路,其用于向位線bl<j>、blb<j>寫入數(shù)據(jù)和預(yù)充;
17、放大電路,其包括分別與多個位線對應(yīng)的多個靈敏放大器;每個靈敏放大器的兩個輸入端分別連接對應(yīng)的位線bl<j>、blb<j>,控制端連接外部信號sa_en,輸出端輸出信號out_b<j>。
18、再進(jìn)一步地,所述尋找電路還包括:
19、列屏蔽電路,其包括分別與多個靈敏放大器對應(yīng)的多個列屏蔽觸發(fā)器、分別與多個列屏蔽觸發(fā)器對應(yīng)的多個列屏蔽選擇器;每個列屏蔽觸發(fā)器的輸入端d連接對應(yīng)的靈敏放大器的輸出端,時鐘信號輸入端連接外部信號sa_en,清零端連接外部信號max_clr,置位端連接外部信號clr,輸出端q連接對應(yīng)的列屏蔽選擇器的控制端并輸出信號ivdd_c<j>;每個列屏蔽選擇器的兩個輸入端分別連接信號vss和vdd,輸出端輸出信號ivdd<j>。
20、再進(jìn)一步地,所述尋找電路寫入所述浮點(diǎn)數(shù)指數(shù)的策略包括:
21、當(dāng)初始狀態(tài)時,將字線wll<i>、wlr<i>置為低電平,根據(jù)所述浮點(diǎn)數(shù)指數(shù)對位線bl<j>、blb<j>進(jìn)行置位操作;其中,當(dāng)需要寫入數(shù)據(jù)為“1”時,將位線bl<j>置為高電平,位線blb<j>置為低電平;當(dāng)需要寫入數(shù)據(jù)為“0”時,將位線bl<j>置為低電平,位線blb<j>置為高電平;
22、當(dāng)數(shù)據(jù)寫入狀態(tài)時,將字線wll<i>、wlr<i>置為高電平;其中,當(dāng)需要寫入數(shù)據(jù)為“1”時,通過位線bl<j>對節(jié)點(diǎn)q進(jìn)行充電,使節(jié)點(diǎn)q拉高至高電平,并通過位線blb<j>對節(jié)點(diǎn)qb進(jìn)行放電,使節(jié)點(diǎn)qb拉高至低電平;當(dāng)需要寫入數(shù)據(jù)為“0”時,通過位線bl<j>對節(jié)點(diǎn)q進(jìn)行放電,使節(jié)點(diǎn)q拉拉低至低電平,并通過位線blb<j>對節(jié)點(diǎn)qb進(jìn)行充電,使節(jié)點(diǎn)qb拉高至高電平;
23、當(dāng)保持狀態(tài)時,將字線wll<i>、wlr<i>置為低電平。
24、再進(jìn)一步地,所述尋找電路尋找多個浮點(diǎn)數(shù)指數(shù)的最大值的策略包括:
25、(1)使所有節(jié)點(diǎn)qb均為高電平,通過信號pre使mux4輸出高電平并傳遞至信號sel<i>,使得每行n5所在的整根線都預(yù)充到高電平;
26、(2)將均為浮點(diǎn)數(shù)的多個多比特指數(shù)存儲在多個sram單元中,在每個sram單元中,定義:當(dāng)節(jié)點(diǎn)q為高電平且節(jié)點(diǎn)qb為低電平時,表示存儲數(shù)據(jù)為“1”,當(dāng)節(jié)點(diǎn)q為低電平且節(jié)點(diǎn)qb為高電平時,表示存儲數(shù)據(jù)為“0”;
27、(3)通過信號pre使mux4輸出低電平;
28、(4)尋找陣列中的指數(shù)最大值:在初始狀態(tài)時,使信號pre_char、r_c_n、sa_en全為高電平,信號set產(chǎn)生一個低電平的脈沖、寬度為半個周期,將所述初始化電路的信號d_set置為高電平;在外部信號cp的第2個周期的上升沿到來時,通過讀寫控制電路對位線bl<j>、blb<j>預(yù)充至高電平;在外部信號cp延時四分之一個周期后,信號sa_en產(chǎn)生半個周期寬度的高電平,使多個靈敏放大器開始工作;在外部信號cp第2個周期的后半個周期,信號r_c_n產(chǎn)生半個周期寬度的低電平,控制mux3將wl_s<i>的高電平傳遞到wll<i>,打開字線wll<i>,多個浮點(diǎn)數(shù)指數(shù)將表征到位線bl上;信號r_c_n控制所述讀寫控制電路,打開位線bl<j>、blb<j>與多個靈敏放大器之間的通路,且信號sa_en還保持著高電平,第i行sram單元中的數(shù)據(jù)由對應(yīng)靈敏放大器讀出,并反向輸出到所有信號out_b<j>;在外部信號cp的延時四分之一個周期后,信號sa_en降為低電平,信號sa_en的下降沿控制對應(yīng)的觸發(fā)器將所有信號out_b傳遞給對應(yīng)的信號ivdd_c;
29、(5)在第i行中所有節(jié)點(diǎn)q均為低電平時,信號sel<i>為低電平;
30、(6)在多個sram單元所構(gòu)成的陣列均尋找后,所有非指數(shù)最大值的多比特指數(shù)清零,由信號sel表征所述指數(shù)最大值。
31、作為上述方案的進(jìn)一步改進(jìn),所述尋找電路用于尋找32個6比特指數(shù)中的指數(shù)最大值,每列6個sram單元負(fù)責(zé)存儲1個6位的指數(shù),第1行存儲最高有效位,第6行存儲最低有效位。
32、本發(fā)明還提供一種存內(nèi)計算芯片,其包括上述任意一種浮點(diǎn)數(shù)指數(shù)最大值尋找電路。
33、相較于現(xiàn)有的指數(shù)最大值尋找電路,本發(fā)明的浮點(diǎn)數(shù)指數(shù)最大值尋找電路及存內(nèi)計算芯片具有以下有益效果:
34、1、該浮點(diǎn)數(shù)指數(shù)最大值尋找電路,其在找指數(shù)最大值的過程中,電路會實時找出已經(jīng)不可能是最大值的指數(shù),并在后續(xù)計算中將其排除、屏蔽,減少后續(xù)的計算量,提高效率,降低了功耗,解決了現(xiàn)有的指數(shù)最大數(shù)尋找電路存在較高的功耗、復(fù)雜的硬件實現(xiàn)以及較長的計算延遲等缺陷的技術(shù)問題。
35、2、該浮點(diǎn)數(shù)指數(shù)最大值尋找電路,其在找指數(shù)最大值的過程中,倘若遇到某行單元的q全為0,那么在這一周期,電路會跳過這一行,直接在下一行找“1”,不僅節(jié)約了周期數(shù)、縮短了計算時間,而且進(jìn)一步地降低了功耗。
36、3、該浮點(diǎn)數(shù)指數(shù)最大值尋找電路,其通過結(jié)合7t-sram的高效存儲特性,實現(xiàn)了快速、低功耗的指數(shù)最大值查找功能。該設(shè)計不僅能大幅降低功耗和延遲,還提高了計算效率,能夠更好地支持高效的浮點(diǎn)數(shù)運(yùn)算,特別是在cim架構(gòu)中的應(yīng)用。該電路設(shè)計為fp16運(yùn)算中的指數(shù)最大值尋找提供了一種創(chuàng)新的解決方案,有助于提升浮點(diǎn)數(shù)計算的性能。