TWI772034B - In-memory computation system - Google Patents
In-memory computation system Download PDFInfo
- Publication number
- TWI772034B TWI772034B TW110118502A TW110118502A TWI772034B TW I772034 B TWI772034 B TW I772034B TW 110118502 A TW110118502 A TW 110118502A TW 110118502 A TW110118502 A TW 110118502A TW I772034 B TWI772034 B TW I772034B
- Authority
- TW
- Taiwan
- Prior art keywords
- signal
- flip
- flop
- circuit
- electrically connected
- Prior art date
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Dram (AREA)
- Complex Calculations (AREA)
Abstract
Description
本發明是關於一種記憶體內運算系統,特別是關於一種具有靜態隨機存取記憶體陣列之記憶體內運算系統。The present invention relates to an in-memory computing system, in particular to an in-memory computing system with a static random access memory array.
現今計算機系統有著進行人工智慧、類神經網路之等需要大量運算資源的需求,使得運算速度一直是計算機系統的發展重點,但計算機系統的運算速度基於其基礎設計而存在著范紐曼瓶頸(von Neumann bottleneck),也就是因為中央處理單元及記憶體分別獨立設置,使得中央處理單元與記憶體之間的數據傳輸時間成為了無法降低的運算時間,導致以先進半導體製程製成的中央處理單元及記憶體雖然已有著突破性的運算速度,但整體計算機系統的運算速度仍受到范紐曼瓶頸的限制,為了打破這個限制,可在記憶體單元內完成運算之記憶體內運算系統已經成為計算機系統提高運算速度的研究重點之一。Nowadays, computer systems have the demand for a large amount of computing resources for artificial intelligence, neural-like networks, etc., so that computing speed has always been the focus of the development of computer systems, but the computing speed of computer systems is based on its basic design and there is a Van Neumann bottleneck (von Neumann). Neumann bottleneck), that is, because the central processing unit and the memory are independently set up, the data transfer time between the central processing unit and the memory becomes an unreduced computing time, resulting in the central processing unit and the advanced semiconductor process. Although memory has a breakthrough computing speed, the computing speed of the overall computer system is still limited by the Van Neumann bottleneck. One of the research priorities of speed.
本發明的主要目的在於藉由運算控制單元及自動切換寫回單元達成記憶體內運算系統的數據運算並將運算結果自動回存至記憶體中,因此可突破運算瓶頸而大幅提高運算速度。The main purpose of the present invention is to achieve the data operation of the in-memory computing system through the operation control unit and the automatic switching write-back unit and automatically store the operation results back into the memory, thereby breaking through the operation bottleneck and greatly improving the operation speed.
本發明之一種記憶體內運算系統包含一靜態隨機存取記憶體陣列、一漣波進位運算單元、一運算控制單元及一自動切換寫回單元,該靜態隨機存取記憶體陣列具有複數個記憶體單元、複數個2T開關單元組及一預充電電路,各該記憶體單元具有一儲存節點及一反儲存節點,各該2T開關單元組電性連接各該記憶體單元之該儲存節點及該反儲存節點,該預充電電路電性連接該些2T開關單元組,該些2T開關單元組輸出複數個邏輯數據,該漣波進位運算單元電性連接該些2T開關單元組以接收該些邏輯數據,且該漣波進位運算單元輸出複數個運算數據,該運算控制單元電性連接該靜態隨機存取記憶體陣列,該運算控制單元用以輸出複數個控制訊號至該預充電電路及該些2T開關單元組,以控制該預充電電路及各該2T開關單元組的開啟或關閉,該自動切換寫回單元電性連接該漣波進位運算單元及該靜態隨機存取記憶體陣列,以由該些漣波進位運算單元接收該些運算數據,且該自動切換寫回單元將該些運算數據寫回該靜態隨機存取記憶體陣列之該些記憶體單元中。An in-memory computing system of the present invention includes a static random access memory array, a ripple carry operation unit, an operation control unit and an automatic switching write-back unit, and the static random access memory array has a plurality of memories unit, a plurality of 2T switch unit groups and a precharge circuit, each of the memory cells has a storage node and an inverse storage node, each of the 2T switch cell groups is electrically connected to the storage node and the inverse storage node of each of the memory cells a storage node, the precharge circuit is electrically connected to the 2T switch unit groups, the 2T switch unit groups output a plurality of logic data, the ripple carry operation unit is electrically connected to the 2T switch unit groups to receive the logic data , and the ripple carry operation unit outputs a plurality of operation data, the operation control unit is electrically connected to the SRAM array, and the operation control unit is used for outputting a plurality of control signals to the precharge circuit and the 2T A switch unit group to control the precharge circuit and each of the 2T switch unit groups to be turned on or off, the automatic switching write-back unit is electrically connected to the ripple carry operation unit and the SRAM array, so that the The ripple-carry operation units receive the operation data, and the automatic switching write-back unit writes the operation data back into the memory cells of the SRAM array.
本發明藉由該運算控制單元輸出之訊號控制該靜態隨機存取記憶體陣列進行該些邏輯數據運算,並藉由該漣波進位運算單元依據該些邏輯數據求得所需之該些運算數據,最後藉由該自動切換寫回單元將該些運算數據寫回該靜態隨機存取記憶體陣列中,由於直接於記憶體中完成運算,可突破運算瓶頸而大幅提高運算速度。In the present invention, the SRAM array is controlled by the signal output from the operation control unit to perform the logic data operations, and the ripple carry operation unit is used to obtain the required operation data according to the logic data. Finally, the operation data is written back into the SRAM array by the automatic switching write-back unit. Since the operation is directly completed in the memory, the operation bottleneck can be broken and the operation speed can be greatly improved.
請參閱第1圖,其為本發明之一實施例,一種記憶體內運算系統100的功能方塊圖,其包含一靜態隨機存取記憶體陣列110、一漣波進位運算單元120、一運算控制單元130、一自動切換寫回單元140、一SRAM控制單元150及一欄選擇器160。Please refer to FIG. 1, which is a functional block diagram of an in-
請參閱第2圖,為本實施例之該靜態隨機存取記憶體陣列110電路圖,該靜態隨機存取記憶體陣列110具有複數個記憶體單元111、複數個2T開關單元組112及複數個預充電電路113,各該記憶體單元111具有一儲存節點Q及一反儲存節點Qb,各該2T開關單元組112電性連接各該記憶體單元111之該儲存節點Q及該反儲存節點Qb,該預充電電路113電性連接該些2T開關單元組112,該些2T開關單元組112輸出複數個邏輯數據。Please refer to FIG. 2 , which is a circuit diagram of the
在本實施例中,共具有4列×4欄之16個該記憶體單元111,每個記憶體單元111皆電性連接一組該2T開關單元組,其中,請參閱第3圖,各該2T開關單元組112具有一進位值2T開關112a、一反或值2T開關112b及一及值2T開關112c。該進位值2T開關112a電性連接該記憶體單元111之該儲存節點Q及一反進位值線11,且該進位值2T開關112a受到一進位運算控制訊號S及該記憶體單元111之該儲存節點Q之電位的控制。該反或值2T開關112b電性連接該記憶體單元111之該儲存節點Q及一反或值線12,且該反或值2T開關112b受到一邏輯運算控制訊號C及該記憶體單元111之該儲存節點Q之電位的控制。該及值2T開關112c電性連接該記憶體單元111之該反儲存節點Qb及一及值線13,且及值2T開關112c受到該邏輯運算控制訊號C及該記憶體單元111之該反儲存節點Qb之電位的控制。In this embodiment, there are 16
請參閱第2及3圖,同一欄之該記憶體單元111之該2T開關單元組112電性連接同一個該預充電電路113。請參閱第3圖,該預充電電路113具有3個該預充電電晶體113a,各該充電電晶體113a分別電性連接該反進位值線11、該反或值線12及該及值線13,各該充電電晶體113a受一預充電控制訊號PreC控制而在導通時將該反進位值線11、該反或值線12及該及值線13拉至高電位。此外,分別電性連接至該反進位值線11、該反或值線12及該及值線13的三個旁路電容BC則用以穩定電壓值。Please refer to FIGS. 2 and 3 , the 2T
請參閱第4圖,為本實施例之該記憶體單元111的電路圖,該記憶體單元111為7T之靜態隨機存取單端讀取記憶體架構,其具有2個P型電晶體MP201~202及5個N型電晶體MN201~205,其中相互電性連接之P型電晶體MP201~202用以鎖存儲存於該儲存節點Q及該反儲存節點Qb中的數據,N型電晶體MN201~203則分別受3個控制訊號WL、WA、WAB控制進行數據的讀取或寫入,N型電晶體MN204~205則分別提供該儲存節點Q及該反儲存節點Qb一個放電路經,以避免漏電流累積而導致儲存數據的反轉。Please refer to FIG. 4 , which is a circuit diagram of the
請再參閱第4圖,一反位元線14電性連接該記憶體單元111以讀取該記憶體單元111之該反儲存節點Qb數據,或是將數據寫入該記憶體單元111中,一位元線15則經由一反向器INV電性連接該反位元線14以得到儲存於該儲存節點Q中之數據的電位大小。N型電晶體MN206則受到一預放電控制訊號PreD控制,以在該記憶體單元111進行寫入前導通時將該反位元線14放電至低電位,以避免影響該記憶體單元111的數據讀取及寫入。Please refer to FIG. 4 again, an
在本實施例中,該記憶體單元111在寫入0時,該預放電控制訊號PreD上升至高電位使該N型電晶體MN206導通,該反位元線14放電至低電位,同時,控制訊號WL、WAB為高電位,WA為低電位而導通N型電晶體MN201、MN203,截止N型電晶體MN202,使該儲存節點Q降至低電位而完成寫入0。該記憶體單元111在寫入1時,該預放電控制訊號PreD上升至高電位使該N型電晶體MN206導通,該反位元線14放電至低電位,同時,控制訊號WL、WA為高電位,WAB為低電位而導通N型電晶體MN201、MN202,截止N型電晶體MN203,使該反儲存節點Qb降至低電位導通該P型電晶體MP202而完成寫入1。該記憶體單元111於讀取時,該預放電控制訊號PreD下降至低電位使該N型電晶體MN206截止,同時,控制訊號WL、WA為高電位,WAB為低電位而導通N型電晶體MN201、MN202,截止N型電晶體MN203,使該反儲存節點Qb的電位傳送至該反位元線14,並經由該反向器反向至該位元線15而完成讀取。In this embodiment, when the
請參閱第5及6圖,該些2T開關單元組112輸出該些邏輯數據包含一反進位值CB、一反或值NOR及一及值AND,且進行記憶體內運算時,其中一個該進位值2T開關112a及其中兩個該反或值2T開關112b及該及值2T開關112c開啟,其餘之該些進位值2T開關112a、該些反或值2T開關112b及該些及值2T開關112c關閉。Please refer to FIGS. 5 and 6, the logic data output by the 2T
請參閱第5圖,該反進位值CB是兩組多位元之數據相加時,前一位元進行加法運算而得並存入該記憶體單元111中之進位值的反向值。以該進位值為1儲存於第2位元之該記憶體單元111為例,在讀取該反進位值CB時,先以該預充電電路113拉高該反進位值線11的電位,再將該進位運算控制訊號S2提高至高電位,由於第2位元之該儲存節點Q2所儲存的進位值為1,使得第2位元之該進位值2T開關112a導通,該反進位值線11經由該進位值2T開關112a接地而降至低電位,即得到該進位值1的反向值0。Please refer to FIG. 5 , the inverse carry value CB is the inverse value of the carry value stored in the
請參閱第6圖,該反或值NOR及該及值AND則是分別儲存於兩個位元之該記憶體單元111之數據之間的邏輯數據,以儲存於第0位元之值1及儲存於第1位元之值0進行運算為例。先以該預充電電路113拉高該反或值線12及該及值線13的電位,再將該邏輯運算控制訊號C0及C1提高至高電位,由於第0位元之該儲存節點Q0所儲存的值為1,該反儲存節點Qb0所儲存的值為0,使得第0位元之該反或值2T開關112b導通、該及值2T開關112c截止,該反或值線12經由該反或值2T開關112b接地而降至低電位。由於第1位元之該儲存節點Q1所儲存的值為0,該反儲存節點Qb1所儲存的值為1,使得第1位元之該反或值2T開關112b截止、該及值2T開關112c導通,該及值線13經由該及值2T開關112c接地而降至低電位,而可得到反或值NOR與該及值AND皆為0的結果。Please refer to FIG. 6 , the inverse-OR value NOR and the AND-value AND are logical data stored between the data of the
請參閱第6圖,接著以儲存於第0位元之值0及儲存於第1位元之值0進行運算為例,先以該預充電電路113拉高該反或值線12及該及值線13的電位,再將該邏輯運算控制訊號C0及C1提高至高電位,由於第0位元之該儲存節點Q0所儲存的值為0,該反儲存節點Qb0所儲存的值為1,使得第0位元之該反或值2T開關112b截止、該及值2T開關112c導通,該及值線13經由該及值2T開關112c接地而降至低電位。由於第1位元之該儲存節點Q1所儲存的值為0,該反儲存節點Qb1所儲存的值為1,使得第1位元之該反或值2T開關112b截止、該及值2T開關112c導通,該及值線13經由該及值2T開關112c接地而降至低電位,而可得到反或值為1與該及值為0的結果。Please refer to FIG. 6, and then take the
請參閱第1圖,該漣波進位運算單元120電性連接該些2T開關單元組112以接收該些邏輯數據,且該漣波進位運算單元120根據該些邏輯數據輸出複數個運算數據。請參閱第7圖,在本實施例中,該漣波進位運算單元120具有一邏輯計算電路121、一加法電路122及一進位電路123,該邏輯計算電路121電性連接該些2T開關單元組112以接收該反進位值CB、該反或值NOR及該及值AND,且該邏輯計算電路121根據該反進位值CB、該反或值NOR及該及值AND輸出複數個邏輯運算數據,在本實施例中,該些邏輯運算數據包含一反及值NAND、一反互斥或值XNOR、一互斥或值XOR及一進位值Cl。在本實施例中,該邏輯計算電路121具有三個反向器及一個反或閘,以藉由該些邏輯閘的邏輯運算得到該些邏輯運算數據。Please refer to FIG. 1 , the ripple-
請參閱第7圖,該加法電路122電性連接該些2T開關組112及該邏輯計算電路121以接收該反進位值CB、該互斥或值XOR、該進位值Cl及該反互斥或值XNOR,且該加法單元122根據該些邏輯數據及該些邏輯運算數據輸出一加法值SUM,在本實施例中,該加法電路122由兩個P型電晶體MP6、MP7及兩個N型電晶體MN9、MN10構成,該些電晶體藉由該反進位值CB、該互斥或值XOR、該進位值Cl及該反互斥或值XNOR的控制輸出該加法值SUM。Please refer to FIG. 7, the
該進位電路123電性連接該些2T開關單元組112及該邏輯計算電路121以接收該及值AND、該互斥或值XOR、該進位值Cl、該反互斥或值XNOR及該反及值NAND,且該加法單元122根據該邏輯數據及該些該些邏輯運算數據輸出一進位值CO。在本實施例中,該進位電路123由三個P型電晶體MP3、MP4、MP5及三個N型電晶體MN6、MN7、MN8構成,該些電晶體藉由該及值AND、該互斥或值XOR、該進位值Cl、該反互斥或值XNOR及該反及值NAND的控制輸出該進位值CO。The
較佳的,該及值線13之該及值AND還可作為兩個位元之數據進相乘而得的積值PRO,而該邏輯計算電路121邏輯運算而得之該互斥閘值XOR則還可作為兩個位元之數據的符號相乘而得的符號值SIG,因此,該漣波進位運算單元120除了可用於計算兩個位元之數據之間的加法運算外,還可用於兩個具符號之數據之間的乘法運算。Preferably, the AND value of the AND-
請參閱第1及8圖,該運算控制單元130電性連接該靜態隨機存取記憶體陣列110,該運算控制單元130用以輸出複數個控制訊號至該靜態隨機存取記憶體陣列110之該預充電電路113及該些2T開關單元組112,以控制該預充電電路113及各該2T開關單元組112的開啟或關閉,進而讓對應位址之該記憶體單元111所儲存的數據進行加法或乘法之運算。Please refer to FIGS. 1 and 8 , the
請參閱第8圖,在本實施例中,該運算控制單元130具有一運算時脈控制電路131、一自動預充電切換控制電路132、一位址選擇電路133及一內運算控制電路134,該運算時脈控制電路131用以接收一加法運算訊號ADD、一乘法運算訊號MUL及一時脈訊號Clk,且該運算時脈控制電路131輸出一運算訊號OP、一總運算訊號Opprec、一寫入選擇訊號Wrsel及一反讀取寫入訊號Dffwr,在本實施例中,該運算時脈控制電路131具有一第一或閘131a、一第一正反器131b、一第二正反器131c、一第三正反器131d及一第四正反器131e,該第一或閘131a接收該加法運算訊號ADD及該乘法運算訊號MUL,且該第一或閘131a輸出該運算訊號OP,其中,該加法運算訊號ADD或該乘法運算訊號MUL上升至高電位表示進行記憶體準備進行加法或乘法運算,因此,該運算訊號OP上升至高電位。Referring to FIG. 8, in this embodiment, the
該第一正反器131b接收一讀寫控制訊號wr_en及該時脈訊號Clk,且該第一正反器131b經由緩衝器輸出一讀取寫入訊號Dffwr,該第一正反器131b輸出之該讀取寫入訊號Dffwr使用以讓該讀寫控制訊號wr_en與該時脈訊號Clk同步。該第二正反器131c電性連接該第一或閘131a,該第二正反器131c接收該時脈訊號Clk及該運算訊號OP,且該第二正反器131c輸出該總運算訊號Opprec,該第二正反器131c輸出之該總運算訊號Opprec是用以讓該運算訊號OP與該時脈訊號Clk同步。該第三正反器131d電性連接該第一或閘131a及該第一正反器131b以接收該運算訊號OP及該讀取寫入訊號Dffwr,且該第三正反器131d輸出該寫入選擇訊號Wrsel,該第三正反器131d用以將該讀取寫入訊號Dffwr除頻而輸出該寫入選擇訊號Wrsel。該第四正反器131e電性連接第一正反器131b,該第四正反器接收該讀取寫入訊號Dffwr及該時脈訊號Clk,且該第四正反器131e經由緩衝器輸出該反讀取寫入訊號Dffwrb,該第四正反器131e用以反向該讀取寫入訊號Dffwr而輸出該反讀取寫入訊號Dffwrb。The first flip-
該自動預充電切換控制電路132電性連接該運算時脈控制電路131以接收該總運算訊號Opprec、該寫入選擇訊號Wrsel及該反讀取寫入訊號Dffwr,且該自動預充電切換控制電路132輸出一預充電觸發訊號PreC_bit。在本實施例中,該自動預充電時脈控制電路132具有一第五正反器132a、一第六正反器132b、一計數器132c及一第一解碼器132d。該第五正反器132a電性連接運算時脈控制電路131以接收該總運算訊號Opprec及該運算訊號OP,且該第五正反器132a輸出一計數啟動訊號Cimp,第五正反器132a輸出之該計數啟動訊號Cimp用以在該總運算訊號Opprec上升至高電位時啟動該計數器132c進行計數。The automatic precharge switching
該第六正反器132b電性連接該第三正反器131d及該第四正反器131e以接收該寫入選擇訊號Wrsel及該反讀取寫入訊號Dffwrb,且該第六正反器132b輸出一預充電時脈訊號PreCclk,該第六正反器132b輸出之該預充電時脈訊號PreCclk為該寫入選擇訊號Wrsel及該反讀取寫入訊號Dffwrb之間的作動,用以決定該第一解碼器132d輸出之訊號產生的頻率。該計數器132c電性連接該第五正反器132a及該第六正反器132b以接收該計數啟動訊號Cimp及該預充電時脈訊號PreCclk,且該計數器132c受到該計數啟動訊號Cimp觸發後開始計數並輸出一計數訊號ct,該第一解碼器132d電性連接該計數器132c以接收該計數訊號ct,且該第一解碼器132d輸出該預充電觸發訊號PreC_bit,該預充電觸發訊號PreC_bit用以觸發不同欄的該預充電電路113。The sixth flip-
該位址選擇電路133電性連接該運算時脈控制電路131以接收該運算訊號OP,該位址選擇電路133另接收一第一運算位址訊號OpX_add、一第二運算位址訊號OpY_add、一符號位址訊號MS_add及一運算結果位址訊號CR_add,且該位址選擇電路133輸出一運算位址控制訊號w0、一進位位址控制訊號w2及一運算結果位址控制訊號CR_DFF,該運算位址控制訊號w0、該進位位址控制訊號w2及該運算結果位址控制訊號CR_DFF用以決定欲進行運算的該記憶體單元111位址及運算後之運算結果欲儲存的該記憶體單元111位址。The
在本實施例中,該位址選擇電路133具有一第七正反器133a、一第八正反器133b、一第九正反器133c、一第十正反器133d、一第二解碼器133e、一第三解碼器133f、一第四解碼器133g及一第二或閘133h。該第七正反器133a電性連接該第一或閘131a,該第七正反器133a接收該運算訊號OP及該第一運算位址訊號OpX_add,且該第七正反器133a輸出一第一運算列訊號OpX,該第八正反器133b電性連接該第一或閘131a,該第八正反器133b接收該運算訊號OP及該第二運算位址訊號OpY_add,且該第八正反器133b輸出一第二運算列訊號OpY,該第九正反器133c電性連接該第一或閘133c,該第九正反器133c接收該運算訊號OP及該符號位址訊號MS_add,且該第九正反器133c輸出一進位列訊號MS,該第十正反器133d電性連接該第一或閘131a,該第十正反器133d接收該運算訊號OP及該預算結果位址訊號CR_DFF,且該第十正反器133d輸出該運算結果位址控制訊號CR_DFF。In this embodiment, the
該第二解碼器133e電性連接該第七正反器133a以接收該第一運算列訊號OpX,且該第二解碼器133e輸出一第一解碼訊號,該第三解碼器133f電性連接該第八正反器133b以接收該第二運算列訊號OpY,且該第三解碼器133f輸出一第二解碼訊號,該第四解碼器133g電性連接該第八正反器133b以接收該進位列訊號MS,且該第四解碼器133g輸出該進位位址控制訊號w2,該第二或閘133h電性連接該第一解碼器132d及該第二解碼器133e以接收該第一解碼訊號及該第二解碼訊號,且該第二或閘133h輸出該運算位址控制訊號w0。The
該內運算控制電路134電性連接該運算時脈控制電路131、該自動預充電切換控制電路132及該位址選擇電路133以接收該運算訊號OP、該反讀取寫入訊號Dffwrb、該預充電觸發訊號PreC_bit、該運算位址控制訊號w0及該進位位址控制訊號w2,且該內運算控制電路134輸出一預充電控制訊號PreC、一邏輯運算控制訊號C及一進位運算控制訊號S至該預充電電路113及該些2T開關單元組112進行控制。The internal
在本實施例中,該內運算控制電路134具有一預充電控制器134a及一內運算記憶體控制器134b,該預充電控制器134a電性連接該運算時脈控制電路131以接收該運算訊號OP及該反讀取寫入訊號Dffwrb,且該預充電控制器134a輸出一運算位元控制訊號sc及一預充電位元控制訊號pcc,由於記憶體內運算需先對該反進位值線11、該反或值線12及該及值線13進行預充電後再進行該些2T開關單元組112的切換,因此,該預充電控制器134a藉由延遲元件讓該預充電位元控制訊號pcc先觸發該預充電電路113進行預充電後再由該運算位元控制訊號sc觸發2T開關單元組112。In this embodiment, the internal
該內運算記憶體控制器134b電性連接該預充電控制器134a、該自動預充電切換控制電路132及該位址選擇電路133,該內運算記憶體控制器134b接收該運算位元控制訊號sc、該預充電位元控制訊號pcc、該預充電觸發訊號PreC_bit、該運算位址控制訊號w0及該進位位址控制訊號w2,且該內運算記憶體控制器134b輸出該預充電控制訊號PreC、該邏輯運算控制訊號C及該進位運算控制訊號S。其中,該內運算記憶體控制器134b讓該預充電觸發訊號PreC_bit由該預充電位元控制訊號pcc觸發而得到該預充電控制訊號PreC,並讓該運算位址控制訊號w0及該進位位址控制訊號w2由該運算位元控制訊號sc觸發而得到該邏輯運算控制訊號C及該進位運算控制訊號S,該預充電控制訊號PreC用以對該些預充電電路進行控制,該邏輯運算控制訊號C及該進位運算控制訊號S則用以對該些2T開關單元組112進行控制,以將對其中兩個該記憶體單元111的儲存數據進行運算。The internal
請參閱第1圖,該自動切換寫回單元140電性連接該漣波進位運算單元120及該靜態隨機存取記憶體陣列110,以由該些漣波進位運算單元120接收該些運算數據,且該自動切換寫回單元140將該些運算數據寫回該靜態隨機存取記憶體陣列110之該些記憶體單元111中。Please refer to FIG. 1 , the automatic switching write-back
請參閱第9圖,該自動切換寫回單元140具有一位元線自動切換電路141、一資料切換電路142及一字元線自動切換電路143,該位元線自動切換電路141電性連接該運算時脈控制電路131以接收該寫入選擇訊號Wrsel及該讀取寫入訊號Dffwr,且該位元線自動切換電路141輸出一位元線切換訊號BL_auto,在本實施例中,該自動切換寫回單元141具有一第十一正反器141a及一位元線計數器141b,該第十一正反器141a接收反向之該寫入選擇訊號Wrsel及反向之該讀取寫入訊號Dffwr,並以反向之該讀取寫入訊號Dffwr觸發該寫入選擇訊號Wrsel而輸出一位元線時脈訊號BL_Clk至該位元線計數器141b進行計數,該位元線計數器141b輸出該位元線切換訊號BL_auto,以決定欲存入之該記憶體單元111的欄數。Please refer to FIG. 9, the automatic switching write-back
該字元線自動切換電路143電性連接該運算時脈控制電路131及該位址選擇電路133,該字元線自動切換電路143接收該加法運算訊號ADD、該乘法運算訊號MUL、該運算訊號OP、該反讀取寫入訊號Dffwrb、該符號位址訊號MS_add及該運算結果位址控制訊號CR_DFF,且該字元線自動切換電路143輸出一字元線切換訊號WL_auto。在本實施例中,該字元線自動切換電路143具有一及閘143a、一第十二正反器143b、一第一多工器143c、一第二多工器143d及一第三或閘143e。該及閘143a接收該反讀取寫入訊號Dffwrb及該運算訊號OP,該第十二正反器143b電性連接該及閘143a,且該第十二正反器143輸出一記憶體內運算選擇訊號CIM_datasel,該記憶體內運算選擇訊號CIM_datasel用以在加法運算中交替切換存入加法值、進位值以及在乘法運算中交替切換存入積值、符號值。The word line
該第一多工器143c電性連接該第十二正反器143b,且該第一多工器接收該加法運算訊號ADD、該符號位址訊號MS_add、該運算結果位址控制訊號CR_DFF及該記憶體內運算選擇訊號CIM_datasel,當該加法訊算訊號ADD為高電位時,該第一多工器143c啟動,並由該記憶體內運算選擇訊號CIM_datasel選擇其輸出為該符號位址訊號MS_add或該運算結果位址控制訊號CR_DFF。該第二多工器143d電性連接該第十二正反器143b,且該第二多工器接收該乘法運算訊號MUL、該符號位址訊號MS_add、該運算結果位址控制訊號CR_DFF及該記憶體內運算選擇訊號CIM_datasel,當該乘法運算訊號MUL為高電位時,該第二多工器啟動,並由該記憶體內運算選擇訊號CIM_datasel其輸出為該符號位址訊號MS_add或該運算結果位址控制訊號CR_DFF。該第三或閘143e電性連接該第一多工器143c及該第二多工器143d,且該第三或閘143e輸出該字元線切換訊號WL_auto,以決定欲存入之該記憶體單元111的列數。The
該資料切換電路142電性連接該位元線自動切換電路141及該漣波進位運算單元120,該資料切換電路142接收該位元線切換訊號BL_auto及該些運算數據,且該資料切換電路142輸出一記憶體內運算資料CIM_Data。在本實施例中,該資料切換電路142具有一第三多工器142a、一第四多工器142b、一第五多工器142c、一第六多工器142d、一第七多工器142e、一第八多工器142f、一第二及閘142g、一第三及閘142h及一第四或閘142i。該第三多工器142a接收該加法值SUM及該位元線切換訊號BL_auto,並依據該位元線切換訊號BL_auto輸出對應位元線之該加法值SUM。該第四多工器142b接收該進位值CO及該位元線切換訊號BL_auto,並依據該位元線切換訊號BL_auto輸出對應位元線之該進位值CO。該第五多工器142c接收該積值PRO及該位元線切換訊號BL_auto,並依據該位元線切換訊號BL_auto輸出對應位元線之該積值SUM。該第六多工器142d接收該符號值SIG及該位元線切換訊號BL_auto,並依據該位元線切換訊號BL_auto輸出對應位元線之該符號值SIG。The
該第七多工器142e電性連接該第三多工器142a及該第四多工器142b,且該第七多工器142e接收該記憶體內運算選擇訊號CIM_datasel,該第七多工器142e輸出一加法運算結果訊號add_data,該加法運算結果訊號add_data由該記憶體內運算選擇訊號CIM_datasel切換為該加法值SUM或該進位值CO。該第八多工器142f電性連接該第五多工器142c及該第六多工器142d,且該第八多工器142f接收該記憶體內運算選擇訊號CIM_datasel,該第八多工器142f輸出一乘法運算結果訊號mul_data,該乘法運算結果訊號mul_data由該記憶體內運算選擇訊號CIM_datasel切換為該積值PRO或該符號值SIG。The
該第二及閘142g接收該加法運算結果訊號add_data及該加法運算訊號ADD,以由該加法運算訊號ADD啟動該第二及閘142g輸出該加法運算結果訊號add_data,該第三及閘142h接收該乘法運算結果訊號mul_data及該乘法運算訊號MUL,以由該乘法運算訊號MUL啟動該第三及閘142h輸出該乘法運算結果訊號mul_data。該第四或閘142i電性連接該第二及閘142g及該第三及閘142h,且該第四或閘輸出該記憶體內運算資料CIM_Data。The second and
請參閱第1圖,該SRAM控制單元150接收一重置訊號rst、一字元位址訊號W_add、一位元位址訊號B_add、一輸入數據Data、該讀寫控制訊號wr_en及該時脈訊號Clk。於一般讀寫模式中,該SRAM控制單元150根據該重置訊號rst、該字元位址訊號W_add、該位元位址訊號B_add、該讀寫控制訊號wr_en及該時脈訊號clk輸出該些控制訊號WS、WA、WAB、WL及該預充電控制訊號PreD至該靜態隨機存取記憶體陣列110進行數據的寫入或讀取,並經由該欄選擇器160的選擇輸出為輸出數據Data_out。在記憶體內運算模式中,該SRAM控制單元150接收該自動切換寫回單元140之該位元線切換訊號BL_auto、該字元線切換訊號WL_auto及該記憶體內運算資料CIM_Data,以根據該位元線切換訊號BL_auto及該字元線切換訊號WL_auto輸出該些控制訊號WS、WA、WAB、WL控制該靜態隨機存取記憶體陣列110存入該記憶體內運算資料CIM_Data。Please refer to FIG. 1, the
本發明藉由該運算控制單元130輸出之訊號控制該靜態隨機存取記憶體陣列110進行該些邏輯數據運算,並藉由該漣波進位運算單元120依據該些邏輯數據求得所需之該些運算數據,最後藉由該自動切換寫回單元140將該些運算數據寫回該靜態隨機存取記憶體陣列110中,由於直接於記憶體中完成運算,可突破運算瓶頸而大幅提高運算速度。In the present invention, the
本發明之保護範圍當視後附之申請專利範圍所界定者為準,任何熟知此項技藝者,在不脫離本發明之精神和範圍內所作之任何變化與修改,均屬於本發明之保護範圍。The protection scope of the present invention shall be determined by the scope of the appended patent application. Any changes and modifications made by anyone who is familiar with the art without departing from the spirit and scope of the present invention shall fall within the protection scope of the present invention. .
100:記憶體內運算系統110:靜態隨機存取記憶體陣列 111:記憶體單元Q:儲存節點 Qb:反儲存節點112:2T開關單元組 112a:進位值2T開關112b:反或值2T開關 112c:及值2T開關113:預充電電路 120:漣波進位運算單元121:邏輯計算電路 122:加法電路123:進位電路 130:運算控制單元131:運算時脈控制電路 131a:第一或閘131b:第一正反器 131c第二正反器131d:第三正反器 131e:第四正反器132:自動預充電切換控制電路 132a:第五正反器132b:第六正反器 132c:計數器132d:第一解碼器 133:位址選擇電路133a:第七正反器 133b:第八正反器133c:第九正反器 133d:第十正反器133e:第二解碼器 133f:第三解碼器133g:第四解碼器 133h:第二或閘134:內運算控制電路 134a:預充電控制器134b:內運算記憶體控制器 140:自動切換寫回單元141:位元線自動切換電路 141a:第十一正反器141b:位元線計數器 142:資料切換電路142a:第三多工器 142b:第四多工器142c:第五多工器 142d:第六多工器142e:第七多工器 142f:第八多工器142g:第二及閘 142h:第三及閘142i:第四或閘 143:字元線自動切換電路143a:及閘 143b:第十二正反器143c:第一多工器 143d:第二多工器143e:第三或閘 150:SRAM控制單元160:欄選擇器 11:反進位值線12:反或值線 13:及值線14:反位元線 15:位元線SUM:加法值 CO:進位值ADD:加法運算訊號 MUL:乘法運算單元Clk:時脈訊號 OP:運算訊號Opprec:總運算訊號 Wrsel:寫入選擇訊號Dffwrb:反讀取寫入訊號 PreC_bit:預充電觸發訊號OpX_add:第一運算位址訊號 OpY_add:第二運算位址訊號MS_add:符號位址訊號 CR_add:運算結果位址訊號w0:運算位址控制訊號 w2:進位位址控制訊號CR_DFF:運算結果位址控制訊號 PreC:預充電控制訊號C:邏輯運算控制訊號 S:進位運算控制訊號wr_en:讀寫控制訊號 Dffwr:讀取寫入訊號Cimp:計數啟動訊號 PreCclk:預充電時脈訊號ct:計數訊號 OpX:第一運算列訊號OpY:第二運算列訊號 MS:進位列訊號sc:運算位元控制訊號 pcc:預充電位元控制訊號BL_auto:位元線控制訊號 CIM_Data:記憶體內運算資料WL_auto:字元線切換訊號 MP201~202:P型電晶體MN201~206:N型電晶體 WS、WA、WAB、WL:控制訊號PRO:積值 SIG:符號值add_data:加法運算結果訊號 mul_data:乘法運算結果訊號Data_out:輸出數據 BL_Clk:位元線時脈訊號CIM_datasel:記憶體內運算選擇訊號 CB:反進位值NOR:反或值 AND:及值NAND:反及值 XNOR:反互斥或值XOR:互斥或值 Cl:進位值rst:重置訊號 W_add:字元位址訊號B_add:位元位址訊號 Data:輸入數據PreD:預放電控制訊號 100: In-Memory Computing System 110: Static Random Access Memory Array 111: memory unit Q: storage node Qb: Anti-storage node 112: 2T switch cell group 112a: carry value 2T switch 112b: reverse or value 2T switch 112c: Sum value 2T switch 113: Precharge circuit 120: Ripple carry operation unit 121: Logic calculation circuit 122: Addition circuit 123: Carry circuit 130: Operation control unit 131: Operation clock control circuit 131a: first or gate 131b: first flip-flop 131c second flip-flop 131d: third flip-flop 131e: fourth flip-flop 132: automatic precharge switching control circuit 132a: fifth flip-flop 132b: sixth flip-flop 132c: counter 132d: first decoder 133: address selection circuit 133a: seventh flip-flop 133b: Eighth flip-flop 133c: Ninth flip-flop 133d: Tenth flip-flop 133e: Second decoder 133f: Third Decoder 133g: Fourth Decoder 133h: Second OR gate 134: Internal operation control circuit 134a: precharge controller 134b: internal computing memory controller 140: Auto switch write back unit 141: Bit line auto switch circuit 141a: Eleventh flip-flop 141b: Bit line counter 142: data switching circuit 142a: third multiplexer 142b: Fourth multiplexer 142c: Fifth multiplexer 142d: sixth multiplexer 142e: seventh multiplexer 142f: Eighth Multiplexer 142g: Second and Gate 142h: third and gate 142i: fourth or gate 143: word line automatic switching circuit 143a: and gate 143b: Twelfth Flip-Flop 143c: First Multiplexer 143d: second multiplexer 143e: third OR gate 150: SRAM control unit 160: Column selector 11: Inverted carry value line 12: Inverted OR value line 13: Sum value line 14: Inverse bit line 15: bit line SUM: added value CO: Carry value ADD: Addition signal MUL: Multiplication unit Clk: Clock signal OP: operation signal Opprec: total operation signal Wrsel: write selection signal Dffwrb: reverse read write signal PreC_bit: Precharge trigger signal OpX_add: First operation address signal OpY_add: Second operation address signal MS_add: Symbol address signal CR_add: Operation result address signal w0: Operation address control signal w2: Carry address control signal CR_DFF: Operation result address control signal PreC: Precharge control signal C: Logic operation control signal S: carry operation control signal wr_en: read and write control signal Dffwr: read write signal Cimp: count start signal PreCclk: Precharge clock signal ct: Counting signal OpX: The first operation line signal OpY: The second operation line signal MS: Carry column signal sc: Operation bit control signal pcc: precharge bit control signal BL_auto: bit line control signal CIM_Data: In-memory operation data WL_auto: Word line switching signal MP201~202: P-type transistor MN201~206: N-type transistor WS, WA, WAB, WL: Control signal PRO: Product value SIG: Symbol value add_data: Addition result signal mul_data: Multiplication result signal Data_out: Output data BL_Clk: Bit line clock signal CIM_datasel: In-memory operation selection signal CB: Inverted carry value NOR: Inverted or value AND: and value NAND: inverse and value XNOR: anti-mutual exclusion or value XOR: mutual exclusion or value Cl: carry value rst: reset signal W_add: character address signal B_add: bit address signal Data: Input data PreD: Pre-discharge control signal
第1圖:依據本發明之一實施例,一記憶體內運算系統的功能方塊圖。 第2圖:依據本發明之一實施例,一靜態隨機存取記憶體陣列的電路圖。 第3圖:依據本發明之一實施例,該靜態隨機存取記憶體陣列的局部電路圖。 第4圖:依據本發明之一實施例,一記憶體單元的電路圖。 第5圖:依據本發明之一實施例,一進位值2T開關的作動示意圖。 第6圖:依據本發明之一實施例,一反或值2T開關及一及值2T開關的作動示意圖。 第7圖:依據本發明之一實施例,一漣波進位運算單元的電路圖。 第8圖:依據本發明之一實施例,一運算控制單元的電路圖。 第9圖:依據本發明之一實施例,一自動切換寫回單元的電路圖。 FIG. 1 is a functional block diagram of an in-memory computing system according to an embodiment of the present invention. Figure 2: A circuit diagram of a SRAM array according to an embodiment of the present invention. Figure 3: A partial circuit diagram of the SRAM array according to an embodiment of the present invention. Figure 4: A circuit diagram of a memory cell according to an embodiment of the present invention. FIG. 5 is a schematic diagram of the operation of a 2T switch with a carry value according to an embodiment of the present invention. FIG. 6 is a schematic diagram of the operation of an inverse-or-value 2T switch and a sum-value 2T switch according to an embodiment of the present invention. FIG. 7 is a circuit diagram of a ripple carry operation unit according to an embodiment of the present invention. Fig. 8: A circuit diagram of an arithmetic control unit according to an embodiment of the present invention. Figure 9: A circuit diagram of an automatic switching write-back unit according to an embodiment of the present invention.
100:記憶體內運算系統 100: In-Memory Computing System
110:靜態隨機存取記憶體陣列 110: Static random access memory array
120:漣波進位運算單元 120: Ripple carry operation unit
130:運算控制單元 130: Operation control unit
140:自動切換寫回單元 140: Auto switch write back unit
150:SRAM控制單元 150: SRAM control unit
160:欄選擇器 160: Column selector
SUM:加法值 SUM: Summation value
CO:進位值 CO: carry value
ADD:加法運算訊號 ADD: Addition signal
MUL:乘法運算單元 MUL: Multiplication unit
Clk:時脈訊號 Clk: Clock signal
Wrsel:寫入選擇訊號 Wrsel: write select signal
Dffwrb:反讀取寫入訊號 Dffwrb: reverse read write signal
OpX_add:第一運算位址訊號 OpX_add: The first operation address signal
OpY_add:第二運算位址訊號 OpY_add: The second operation address signal
MS_add:符號位址訊號 MS_add: Symbol address signal
CR_add:運算結果位址訊號 CR_add: Operation result address signal
CR_DFF:運算結果位址控制訊號 CR_DFF: Operation result address control signal
PreC:預充電控制訊號 PreC: Precharge control signal
C:邏輯運算控制訊號 C: logic operation control signal
S:進位運算控制訊號 S: carry operation control signal
wr_en:讀寫控制訊號 wr_en: read and write control signal
BL_auto:位元線控制訊號 BL_auto: bit line control signal
CIM_Data:記憶體內運算資料 CIM_Data: In-memory operation data
WL_auto:字元線切換訊號 WL_auto: word line switching signal
WS、WA、WAB、WL:控制訊號 WS, WA, WAB, WL: Control signal
PRO:積值 PRO: product value
SIG:符號值 SIG: symbol value
Data_out:輸出數據 Data_out: output data
BL_Clk:位元線時脈訊號 BL_Clk: bit line clock signal
CB:反進位值 CB: reverse carry value
NOR:反或值 NOR: Negative or value
AND:及值 AND: and value
rst:重置訊號 rst: reset signal
W_add:字元位址訊號 W_add: character address signal
B_add:位元位址訊號 B_add: bit address signal
Data:輸入數據 Data: input data
PreD:預放電控制訊號 PreD: Pre-discharge control signal
Claims (9)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110118502A TWI772034B (en) | 2021-05-21 | 2021-05-21 | In-memory computation system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110118502A TWI772034B (en) | 2021-05-21 | 2021-05-21 | In-memory computation system |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI772034B true TWI772034B (en) | 2022-07-21 |
TW202247012A TW202247012A (en) | 2022-12-01 |
Family
ID=83439709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110118502A TWI772034B (en) | 2021-05-21 | 2021-05-21 | In-memory computation system |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI772034B (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200504998A (en) * | 2003-05-09 | 2005-02-01 | Toshiba Kk | Semiconductor memory device |
TW201015574A (en) * | 2008-10-14 | 2010-04-16 | Hynix Semiconductor Inc | Trimming circuit of semiconductor memory apparatus and trimming method thereof |
TW201839775A (en) * | 2017-01-03 | 2018-11-01 | 慧榮科技股份有限公司 | Method for performing data management in memory device, and associated memory device and controller thereof |
TW202044263A (en) * | 2019-05-27 | 2020-12-01 | 國立中山大學 | In-memory computation system and memory device thereof |
-
2021
- 2021-05-21 TW TW110118502A patent/TWI772034B/en active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200504998A (en) * | 2003-05-09 | 2005-02-01 | Toshiba Kk | Semiconductor memory device |
TW201015574A (en) * | 2008-10-14 | 2010-04-16 | Hynix Semiconductor Inc | Trimming circuit of semiconductor memory apparatus and trimming method thereof |
TW201839775A (en) * | 2017-01-03 | 2018-11-01 | 慧榮科技股份有限公司 | Method for performing data management in memory device, and associated memory device and controller thereof |
TW202044263A (en) * | 2019-05-27 | 2020-12-01 | 國立中山大學 | In-memory computation system and memory device thereof |
Also Published As
Publication number | Publication date |
---|---|
TW202247012A (en) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11335387B2 (en) | In-memory computing circuit for fully connected binary neural network | |
TWI570716B (en) | Memory apparatus and method of operation | |
CN112581996A (en) | Time domain memory computing array structure based on magnetic random access memory | |
US7990759B2 (en) | Hardened memory cell | |
CN112558919B (en) | Memory computing bit unit and memory computing device | |
CN111429956B (en) | Multi-mode calculable SRAM unit circuit and control method thereof | |
CN116364137A (en) | Same-side double-bit-line 8T unit, logic operation circuit and CIM chip | |
TWI772034B (en) | In-memory computation system | |
CN112951290B (en) | Memory computing circuit and device based on nonvolatile random access memory | |
CN116340256A (en) | In-memory computing unit and array based on SRAM (static random Access memory) with DICE (digital computer aided design) structure | |
Izhar et al. | Logic Circuit Implementation for Enabling SRAM Based In Memory Computing | |
CN111105830A (en) | Memory device | |
Bagamma et al. | Implementation of 5–32 address decoders for SRAM memory in 180nm technology | |
Monga et al. | A Novel Decoder Design for Logic Computation in SRAM: CiM-SRAM | |
TWI706414B (en) | In-memory computation system and memory device thereof | |
TW202219955A (en) | Pseudo-triple-port sram datapaths | |
CN116670763A (en) | In-memory computation bit cell with capacitively coupled write operation | |
US7366032B1 (en) | Multi-ported register cell with randomly accessible history | |
CN108597555B (en) | NAND operation circuit, memory chip and computer of memory area calculation | |
CN117577162B (en) | Redundant address register structure, redundant address register array and memory | |
JP3910650B2 (en) | Semiconductor memory device | |
US11763866B1 (en) | SRAM with scan mode | |
TW202333153A (en) | Pseudo-dual-port sram with burst-mode address comparator | |
CN113921057A (en) | 8T SRAM circuit structure for realizing iterative XOR calculation in memory | |
US20230127502A1 (en) | Memory cell and method of operating the same |