[go: up one dir, main page]

TWI860951B - 可應用於推論與學習的記憶體內運算裝置 - Google Patents

可應用於推論與學習的記憶體內運算裝置 Download PDF

Info

Publication number
TWI860951B
TWI860951B TW113107981A TW113107981A TWI860951B TW I860951 B TWI860951 B TW I860951B TW 113107981 A TW113107981 A TW 113107981A TW 113107981 A TW113107981 A TW 113107981A TW I860951 B TWI860951 B TW I860951B
Authority
TW
Taiwan
Prior art keywords
memory
memory block
multiplication
weights
computing
Prior art date
Application number
TW113107981A
Other languages
English (en)
Other versions
TW202536672A (zh
Inventor
邱瀝毅
李宗翰
施泓名
許舜修
洪毅玄
Original Assignee
國立成功大學
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 國立成功大學 filed Critical 國立成功大學
Priority to TW113107981A priority Critical patent/TWI860951B/zh
Priority to US18/776,981 priority patent/US20250284459A1/en
Application granted granted Critical
Publication of TWI860951B publication Critical patent/TWI860951B/zh
Publication of TW202536672A publication Critical patent/TW202536672A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本發明提出一種記憶體內運算裝置,包括兩個記憶體內運算單元,這兩個記憶體內運算單元連接至相同的讀取位元線並共用類比數位轉換陣列。在一模式中,兩個記憶體內運算單元可同時進行寫入,此時一個記憶體內運算單元儲存權重矩陣,另一者則儲存權重矩陣的轉置。在另一模式中,一個記憶體內運算單元進行寫入時另一個進行乘累加運算。此記憶體內運算裝置可應用於推論階段與訓練階段。

Description

可應用於推論與學習的記憶體內運算裝置
本揭露是有關於能夠應用於推論與學習的記憶體內運算裝置。
近年來人工智慧(Artificial Intelligence,AI)已被廣泛應用於學術和日常生活中,尤其是機器學習(Machine Learning,ML)領域引起了高度關注。其中,卷積神經網路(Convolutional Neural Network,CNN)成為在影像辨識和物件辨識等領域被廣泛使用的神經網路模型。隨著物聯網(Internet of Things,IoT)時代的到來,為了減少邊緣運算(Edge Devices)和雲端之間的資料傳輸量,各廠商已經提出各種軟體或硬體架構,用來減少計算量或是減少不必要的資料傳輸。
記憶體內運算(Computing-In-Memory,CIM)的目的在克服傳統電腦系統中處理器和記憶體之間的數據傳輸瓶頸。在傳統架構中,數據存儲和處理是分開的;處理器需要從記憶體獲取數據,處理後再將數據存回記憶體。這種數據往返不僅消耗時間,還增加了能源消耗。相比之下,CIM將數據處理功能直接整合到記憶體中,從而減少數據傳輸的需要,提高了效率和速度。
本揭露的實施例提出一種記憶體內運算裝置,包括以下元件。第一記憶體區塊包含多個第一記憶體內運算單元,每個第一記憶體內運算單元連接至多個讀取位元線的至少其中之一。第二記憶體區塊包含多個第二記憶體內運算單元,每個第二記憶體內運算單元連接至讀取位元線的至少其中之一。控制電路用以將權重矩陣中的權重寫入至第一記憶體區塊與第二記憶體區塊的其中之一,並控制第一記憶體區塊與第二記憶體區塊的其中之一進行乘累加(multiply and accumulation,MAC)運算。其中當第一記憶體區塊進行乘累加運算時乘累加運算的結果施加在讀取位元線上,當第二記憶體區塊進行乘累加運算時乘累加運算的結果也施加在讀取位元線上。類比數位轉換陣列連接至讀取位元線,用以將讀取位元線上的類比訊號轉換為數位訊號。
在一些實施例中,權重矩陣的數目大於1,這些權重矩陣分別對應至多個過濾器,每一個權重包含多個權重位元。每個第一記憶體內運算單元中包含多個第一運算元,每個第一運算元中連接至一條讀取位元線,這些第一運算元排列為多個第一記憶體行與多個第一記憶體列。每個第二記憶體內運算單元包含多個第二運算元,每個第二運算元中連接至一條讀取位元線,這些第二運算元排列為多個第二記憶體行與多個第二記憶體列。
在一些實施例中,在一同時寫入模式中,控制電路用以將權重寫入至第一記憶體區塊與第二記憶體區塊。在第一記憶體區塊中,一個過濾器中不同位置的權重分別儲存在第一記憶體列中,權重位元分別儲存在第一記憶體行中。在第二記憶體區塊中,不同的過濾器中具有相同位置的權重分別儲存在第二記憶體列中,權重位元分別儲存在第二記憶體行中。
在一些實施例中,在一同時寫入與計算模式中,控制電路用以控制第一記憶體區塊與第二記憶體區塊的其中之一進行乘累加運算,同時對第一記憶體區塊與第二記憶體區塊的其中之另一進行寫入程序,用以寫入一部分的權重。
在一些實施例中,控制電路用以控制第一記憶體區塊與第二記憶體區塊交替的進行乘累加運算以及寫入程序。
在一些實施例中,控制電路用以設定推論階段與訓練階段。在推論階段中,控制電路用以運行在同時寫入與計算模式。
在一些實施例中,訓練階段包含前向傳播期間與反向傳播期間。在前向傳播期間,控制電路用以運行在同時寫入模式,並且控制第一記憶體區塊進行乘累加運算。
在一些實施例中,在反向傳播期間,控制電路控制第二記憶體區塊進行乘累加運算,並對第一記憶體區塊進行寫入程序或設定第一記憶體區塊處於閒置狀態。
在一些實施例中,第一記憶體區塊與第二記憶體區塊包含多個字元線。在推論階段與前向傳播期間,控制電路用以將多個輸入特徵施加於字元線。在反向傳播期間,控制電路用以將損失相對於權重的多個偏導數施加於字元線。
在一些實施例中,記憶體內運算裝置還包括輸出合成器,連接至類比數位轉換陣列。輸出合成器包含多個加法器與一減法器,減法器用以接收一最高有效位元,加法器接收其他位元。
關於本文中所使用之「第一」、「第二」等,並非特別指次序或順位的意思,其僅為了區別以相同技術用語描述的元件或操作。
圖1是根據一實施例繪示記憶體內運算裝置的方塊示意圖。請參照圖1,記憶體內運算裝置100可以實作為晶片或是電路中的模組,記憶體內運算裝置100可以設置在任意合適的電子裝置當中。記憶體內運算裝置100包含了數位時間轉換器(digital time converter,DTC)110、輸入選擇器120、第一記憶體區塊130、第二記憶體區塊140、權重選擇器150、寫入控制器160、記憶體內運算控制器170、類比數位轉換陣列180與輸出合成器190。記憶體內運算控制器170用以控制數位時間轉換器110、輸入選擇器120、權重選擇器150、寫入控制器160與類比數位轉換陣列180。輸入選擇器120透過多條字元線122連接至第一記憶體區塊130與第二記憶體區塊140。此外,第一記憶體區塊130與第二記憶體區塊140透過讀取位元線132連接至類比數位轉換陣列180。值得注意的是,字元線122與讀取位元線132會穿過第一記憶體區塊130與第二記憶體區塊140,相關的設置會在以下詳細說明。
在其他實施例中,圖1中的多個電路也可以合併在一起,例如數位時間轉換器110與輸入選擇器120可以合併成為一個模組,權重選擇器150與寫入控制器160可以合併成為一個模組。在一些實施例中,數位時間轉換器110、輸入選擇器120、權重選擇器150、寫入控制器160與記憶體內運算控制器170合稱為控制電路。以下關於數據的傳輸與處理若沒有特別提到由誰執行則都是指由控制電路執行,以下不再贅述。
記憶體內運算裝置100是應用在卷積神經網路中。記憶體內運算控制器170會將至少一個權重矩陣中的多個權重透過權重選擇器150與寫入控制器160寫入至第一記憶體區塊130與第二記憶體區塊140之中。記憶體內運算控制器170也會將多個輸入資料透過數位時間轉換器110與輸入選擇器120提供給第一記憶體區塊130與第二記憶體區塊140。在前向傳播時,這些輸入資料指的是輸入特徵;當在反向傳播時,這些輸入資料則是損失(loss)對於權重的偏導數。第一記憶體區塊130與第二記憶體區塊140用以根據輸入與權重進行乘累加運算,特別的是第一記憶體區塊130與第二記憶體區塊140會共用讀取位元線132。也就是說,當第一記憶體區塊130進行乘累加運算時,乘累加運算的結果會施加在讀取位元線132上;當第二記憶體區塊140進行乘累加運算時,乘累加運算的結果也會施加在讀取位元線132上。每一條讀取位元線132用以傳送一個位元,這些運算結果以類比的形式傳送給類比數位轉換陣列180,類比數位轉換陣列180將這些讀取位元線132上的類比訊號轉換為數位訊號,然後經過輸出合成器190合併這些數位訊號。
卷積神經網路的運算包含了前向傳播以及反向傳播。圖2是根據一實施例繪示前向傳播時乘累加運算的示意圖。請參照圖2,在此實施例中共有9個過濾器(filter)201、202…209,每個過濾器包含了9個權重,這些權重表示為w(i,j),其中i,j為正整數,i表示過濾器的序號,j表示權重的序號。例如過濾器201包含了9個權重w(0,0)~(0,8),以此類推。圖2也繪示了特徵圖210的一部份,過濾器用以在特徵圖210上滑動,當過濾器在位置211上時,對應到的輸入特徵為IF 0~IF 8,相關的乘累加運算如以下數學式1所示,其中 為過濾器201對應的第一個結果。 [數學式1]
另一方面,在訓練階段的反向傳播中,是計算損失對於權重的偏導數,所計算出的偏導數指示了權重應該如何調整以減少網路的預測誤差。基於連鎖律(Chain Rule),必須從網路的最後一層(輸出層)開始,逆向經過每一層,使用連鎖律計算每一層的偏導數,在每一層中偏導數會也會與權重進行乘累加運算。反向傳播時的乘累加運算如圖3所示。在圖3中繪示了偏導數 ,過濾器201~209則沒有變。對於過濾器201對應的第一個結果 則如以下數學式2計算。 [數學式2]
比較圖2與圖3可以發現,兩者都是進行乘累加運算,但是對於權重的存取順序並不相同,在圖2中是存取同一個過濾器內所有位置的權重,在圖3中是存取不同過濾器中同一個位置的權重。兩個乘累加運算所需要的是相同的權重,但計算的方向不相同。具體來說請參照圖4,圖4是根據一實施例繪示權重在前向傳播與反向傳播中計算方向的示意圖。在圖4中M代表一個過濾器中權重的個數,N則代表過濾器的個數,矩陣400中共儲存了 個權重。例如在第一行排列的是權重w(0,0)~w(0,M),而第一列排列的是權重w(0,0)~w(N,0),以此類推。
在圖4中前向傳播的計算方向為縱向,而反向傳播的計算方向是橫向。以第一行為例,在前向傳播時輸入特徵為IF 0~IF M,分別與權重w(0,0)~w(0,M)相乘,然後透過電流或電荷的方式累加得到結果Z 0,同時第二行會計算出結果Z 1,以此類推。以第一列為例,在反向傳播時偏導數 會分別與權重w(0,0)~w(N,0)相乘,然後透過電流或電荷的方式累加得到結果D 0,同時第二列會計算出結果D 1,以此類推。由於計算方向的不同,在習知技術中需要兩個類比數位轉換陣列,而且由於兩個方向無法同時進行,因此當一個類比數位轉換陣列運作時另一個類比數位轉換陣列必須閒置,造成資源的浪費。
在一些實施例中是採用靜態隨機存取記憶體來進行記憶體內運算,一個運算元(cell)可以進行一個位元的計算。如果一個權重包含了8個位元(稱為權重位元),則矩陣400中第一行可以放大表示為矩陣410,其中w(0,0)[7]代表權重w(0,0)的第8個位元,w(0,0)[0]代表權重w(0,0)的第1個位元,以此類推。類似的,矩陣400中第二行可以放大表示為矩陣420。
在此實施例中共有兩個記憶體區塊,在這樣的設置下記憶體內運算控制器170可以運行在多種操作模式下。這些操作模式包含同時寫入模式、同時寫入與計算模式,另外這樣的設置也可以應用在推論階段以及訓練階段。以下將詳細說明這些模式。
在以下的實施例中,每個輸入特徵與權重都具有8個位元,8位元的輸入特徵會被拆分成2位元的形式並花費四個時脈輸入至記憶體區塊當中,每筆乘累加運算最後會得到13位元的輸出。然而,本揭露並不限制每個輸入特徵與權重的位元個數,也不限於上述拆分位元的架構。
[同時寫入模式]
圖5是根據一實施例繪示同時寫入模式下的記憶體配置示意圖。請參照圖5,在此繪示了多個過濾器201~209,每個過濾器包含的權重形成一個權重矩陣,在此實施例中權重矩陣的大小為3x3,但本揭露並不在此限。在此實施例中,第一記憶體區塊130儲存權重矩陣,而第一記憶體區塊130儲存權重矩陣的轉置。在此實施例中,前向傳播所需要的權重是寫入至第一記憶體區塊130,而反向傳播所需要的權重是寫入至第二記憶體區塊140。
具體來說,第一記憶體區塊130包括了多個記憶體內運算單元501、502…509。每個記憶體內運算單元501~509儲存了一個權重矩陣內所有位置上的權重。每個記憶體內運算單元501~509包含了多個運算元521,每個運算元521用以儲存一個權重位元,這些運算元521也排列為多個行(稱為記憶體行)與多個列(稱為記憶體列)。以記憶體內運算單元501為例,其中第一個記憶體行儲存的是權重位元w(0,0)[7]~w(0,8)[7],同一個記憶體行所儲存的是相同次序的權重位元(例如都是儲存第8個權重位元);而第一個記憶體列儲存的是權重位元w(0,0)[7]~w(0,0)[0],同一個記憶體列所儲存的是同一個權重。以另一個角度來說,過濾器201中不同位置的權重分別儲存在多個記憶體列中,而權重位元分別儲存在這些記憶體行中。每個運算元521都連接到一條讀取位元線132,同一個記憶體行上的運算元521則連接到同一條讀取位元線132。在此實施例中一個權重有8個權重位元,因此記憶體內運算單元501連接至8條讀取位元線132。
類似的,第二記憶體區塊140包含了多個記憶體內運算單元511、512…519。每個記憶體內運算單元511~519包含了多個排列為行(稱為記憶體行)與列(稱為記憶體列)的運算元522。同樣的,每個運算元522連接至一條讀取位元線132,因此記憶體內運算單元511連接至8條讀取位元線132。以記憶體內運算單元511為例,第一個記憶體行儲存了權重位元w(0,0)[7]、w(1,0)[7]…w(8,0)[7];第一個記憶體列儲存了權重位元w(0,0)[7]、w(0,0)[6]…w(0,0)[0]。也就是說不同過濾器中相同位置的權重是分別儲存在記憶體列中,而不同次序的權重位元是儲存在記憶體行中。
在圖5的例子中,輸入特徵IF 0~IF 8傳送到第一記憶體區塊130,而偏導數 傳送到第二記憶體區塊140,這樣的計算與圖4一致,但運算結果都是縱向的傳送在讀取位元線132上。由於共用讀取位元線132,因此同時只有一個記憶體區塊可以執行乘累加運算,不論是哪一個記憶體區塊執行乘累加運算,都可以透過讀取位元線132輸出運算結果。
類比數位轉換陣列180包含了多個類比數位轉換器ADC[7]~ADC[0],每個類比數位轉換器用以將一條讀取位元線132上的類比訊號轉換為數位訊號。然後每個記憶體內運算單元501~509所對應的數位訊號會透過輸出合成器190被合併在一起,藉此輸出偏導數D 0~D 8或是結果Z 0~Z 8
[同時寫入與計算模式]
圖6是根據一實施例繪示兩個記憶體區塊進行同時寫入與計算模式的示意圖。請參照圖6,在此模式下只需要進行前向傳播或是只需要進行反向傳播。在一些實施例中權重的數量太大,無法同時載入所有的權重,因此必須先載入一部分的權重進行乘累加運算,然後再載入下一批的權重。在此實施例中由於有兩個記憶體區塊,可以同時進行寫入與計算,這樣可以將寫入的時間隱藏在計算的時間中,可以有效的減少整體運算時間。在任一個時間區間中,最多只有一個記憶體區塊可以進行乘累加運算。舉例來說,在此可以設定多個時間區間601~605。在時間區間601,第一記憶體區塊130進行寫入程序,用以寫入一部分的權重,而第二記憶體區塊140則先處於閒置狀態。在時間區間602,第一記憶體區塊130進行乘累加運算,同時第二記憶體區塊140進行寫入程序。在時間區間603,第一記憶體區塊130進行寫入程序,同時第二記憶體區塊140進行乘累加運算,以此類推。值得注意的是,當第一記憶體區塊130與第二記憶體區塊140協同進行前向傳播時,兩個記憶體區塊都是以相同的方向儲存權重矩陣;如果第一記憶體區塊130與第二記憶體區塊140協同進行反向傳播,則兩個記憶體區塊都儲存權重矩陣的轉置。不論是前向傳播或是反向傳播,第一記憶體區塊130與第二記憶體區塊140都是交替的進行乘累加運算以及寫入程序。這樣的架構可以充分利用類比數位轉換陣列180,增加整體的使用效率,也可以降低運算的延遲(latency)。相較於使用兩套數位時間轉換器與兩套類比數位轉換陣列的習知技術來說,圖6的實施例共用了這些硬體,這樣可以減少電路面積與功耗,在一些實驗中可以減少28%的功耗。
[整體運算流程]
卷積神經網路的操作可以分為三種情況。第一種情況是推論階段,在這個情況下控制電路運行在同時寫入與計算模式,此時將權重交錯的載入至第一記憶體區塊130與第二記憶體區塊140,這些權重會與輸入特徵進行乘累加運算。運作的示意圖如圖6所示。
第二種情況是訓練階段的前向傳播期間,第三種情況是訓練階段的反向傳播期間,這兩個情況都可以透過兩個記憶體區塊來實現。圖7是根據一實施例繪示在訓練階段兩個記憶體區塊的運作示意圖。請參照圖7,在前向傳播期間,控制電路運行在同時寫入模式,圖7中的“寫入(前)”指的是權重依照前向傳播所需要的順序寫入,而“寫入(反)”指的是權重依照反向傳播所需要的順序寫入。在時間區間701,第一記憶體區塊130進行寫入程序,同時第二記憶體區塊140也進行寫入程序,此時寫入的權重相同於圖5的排列。在時間區間702,第一記憶體區塊130進行乘累加運算,而第二記憶體區塊140處於閒置狀態,時間區間703~705則可以此類推。
在反向傳播期間,控制電路控制第二記憶體區塊140進行乘累加運算,並對第一記憶體區塊130進行寫入程序或設定第一記憶體區塊130處於閒置狀態。具體來說,在時間區間711~713中,第二記憶體區塊140進行乘累加運算,而第一記憶體區塊130可進行寫入程序,例如寫入更新後的權重以準備下一個樣本的前向傳播。在時間區間714中,第二記憶體區塊140進行乘累加運算,而第一記憶體區塊130處於閒置狀態。如此一來,記憶體內運算裝置100可用於推論階段以及訓練階段,且由於共用類比數位轉換陣列180因此可以節省電路面積以及功耗。
圖8是根據一實施例繪示記憶體區塊中的電路示意圖。在此以第一記憶體區塊130為例來說明,但第二記憶體區塊140的電路架構與第一記憶體區塊130相同,因此並不贅述。第一記憶體區塊130包含多個運算元521,這些運算元521排列為矩陣,矩陣中行的數目相同於一個權重中位元的個數乘上過濾器的個數,在此實施例中共有8x9=72行。矩陣中列的個數相同於一個過濾器中權重的個數,在此實施例中共有9列。每個運算元521都連接到一條讀取位元線132與一條字元線122,每條讀取位元線132連接至一重置開關Rst。每個運算元521包含一個隨機存取記憶體(static random access memory,SRAM)單元811、開關812與開關813,在隨機存取記憶體單元811中有六個電晶體,而開關812與開關813都是一個電晶體,因此運算元521也可以稱為8T SRAM的運算元。
隨機存取記憶體單元811用以儲存一個權重位元,當此權重位元為“1”時會導通開關812,反之會截止開關812。另一方面,當要進行乘累加運算時,根據字元線122上的訊號可以導通或截止開關813。具體來說,在前向傳播期間,輸入特徵的每一個位元會被施加於一條字元線,當此位元為“1”時導通開關813,此時若權重位元為“1”,則從系統電壓VDD會產生一電流流進對應的讀取位元線132,同一行上運算元521所產生的電流便會進行累加。如果輸入特徵的位元為“0”或權重位元是“0”,則不會有電流流進讀取位元線132。另一方面,在反向傳播期間,損失相對於權重的偏導數便會施加於字元線122,而操作方式與前向傳播期間相同。在此實施例中採用8T SRAM的運算元,優點在於有較大的靜態雜訊範圍,在操作時可以用低電壓操作來節省功率的消耗。另一個優點在於讀取位元線132上的寄生電容並不是一個穩定的容值,可能因製成或是布局不同而改變,因此透過微調SRAM的操作電壓,以達到在不同的製程變異下也能夠供給一樣的電流給讀取位元線132。
請參照圖1,讀取位元線132上的類比訊號會傳送至類比數位轉換陣列180,其中包含多個類比數位轉換器,用以將讀取位元線132上的類比訊號轉換為數位訊號,在此例子中一個數位訊號有4個位元。在此可以採用任意的類比數位轉換器,本揭露並不在此限。
在此實施例中進行乘累加運算時是以單一位元的方式進行運算,這樣做的好處是能夠更好的抵抗製程變異,因為需要量化的資料減少了,只需要利用數位電路進行處理即可,避免不必要誤差。但這樣的設置需要一個輸出合成器190,用以將不同的權重輸出時進行合併。圖9是根據一實施例繪示輸出合成器的電路示意圖。請參照圖9,在此以一個記憶體內運算單元為例,在此例子中共有8筆數位訊號901~908,每個數位訊號都有4個位元。輸出合成器190包含了多個移位器911~918,分別對數位訊號901~908進行移位。輸出合成器190還包含了減法器921與多個加法器927,其中減法器921接收最高有效位元,其餘位元則由加法器922~924接收,然後經過加法器925~927的處理以後可以得到共有12個位元的輸出930,在這樣的實施例中輸出930是有正負號的。
圖10是根據一實施例繪示電子裝置的示意圖。請參照圖10,以另一個角度來說本揭露也提出一種電子裝置1000,此電子裝置1000包含了上述的記憶體內運算裝置100。電子裝置1000可以實作為手機、平板電腦、筆記型電腦、其他形式的行動裝置、家電等,本揭露並不在此限。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100:記憶體內運算裝置 110:數位時間轉換器 120:輸入選擇器 122:字元線 130:第一記憶體區塊 132:讀取位元線 140:第二記憶體區塊 150:權重選擇器 160:寫入控制器 170:記憶體內運算控制器 180:類比數位轉換陣列 190:輸出合成器 210:特徵圖 211:位置 201,202,209:過濾器 400:矩陣 d 0~d N:偏導數 IF 0~IF M:輸入特徵 D 0~D M:結果 w(0,0)~w(N,M):權重 ADC[7]~ADC[0]:類比數位轉換器 Z 0~Z N:結果 410,420:矩陣 501,502,509,511,512,519:記憶體內運算單元 521,522:運算元 601~605,701~705,711~715:時間區間 811:隨機存取記憶體單元 812,813:開關 901~908:數位訊號 911~918:移位器 921:減法器 922~927:加法器 1000:電子裝置
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。 圖1是根據一實施例繪示記憶體內運算裝置的方塊示意圖。 圖2是根據一實施例繪示前向傳播時乘累加運算的示意圖。 圖3是根據一實施例繪示反向傳播時乘累加運算的示意圖。 圖4是根據一實施例繪示權重在前向傳播與反向傳播中計算方向的示意圖。 圖5是根據一實施例繪示同時寫入模式下的記憶體配置示意圖。 圖6是根據一實施例繪示兩個記憶體區塊進行同時寫入與計算模式的示意圖。 圖7是根據一實施例繪示在訓練階段兩個記憶體區塊的運作示意圖。 圖8是根據一實施例繪示記憶體區塊中的電路示意圖。 圖9是根據一實施例繪示輸出合成器的電路示意圖。 圖10是根據一實施例繪示電子裝置的示意圖。
100:記憶體內運算裝置
110:數位時間轉換器
120:輸入選擇器
122:字元線
130:第一記憶體區塊
132:讀取位元線
140:第二記憶體區塊
150:權重選擇器
160:寫入控制器
170:記憶體內運算控制器
180:類比數位轉換陣列
190:輸出合成器

Claims (10)

  1. 一種記憶體內運算裝置,包括: 一第一記憶體區塊,包含多個第一記憶體內運算單元,該些第一記憶體內運算單元的每一者連接至多個讀取位元線的至少其中之一; 一第二記憶體區塊,包含多個第二記憶體內運算單元,該些第二記憶體內運算單元的每一者連接至該些讀取位元線的至少其中之一; 至少一控制電路,用以將至少一權重矩陣中的多個權重寫入至該第一記憶體區塊與該第二記憶體區塊的其中之一,並控制該第一記憶體區塊與該第二記憶體區塊的該其中之一以進行一乘累加(multiply and accumulation,MAC)運算,其中當該第一記憶體區塊進行該乘累加運算時該乘累加運算的結果施加在該些讀取位元線上,當該第二記憶體區塊進行該乘累加運算時該乘累加運算的結果施加在該些讀取位元線上, 一類比數位轉換陣列,連接至該些讀取位元線,用以將該些讀取位元線上的多個類比訊號轉換為多個數位訊號。
  2. 如請求項1所述之記憶體內運算裝置,其中該至少一權重矩陣的數目大於1,該些權重矩陣分別對應至多個過濾器,每一該些權重包含多個權重位元,該些第一記憶體內運算單元中的每一者包含多個第一運算元,該些第一運算元中的每一者連接至該些讀取位元線的其中之一,該些第一運算元排列為多個第一記憶體行與多個第一記憶體列, 其中該些第二記憶體內運算單元中的每一者包含多個第二運算元,該些第二運算元中的每一者連接至該些讀取位元線的其中之一,該些第二運算元排列為多個第二記憶體行與多個第二記憶體列。
  3. 如請求項2所述之記憶體內運算裝置,其中在一同時寫入模式,該至少一控制電路用以將該些權重寫入至該第一記憶體區塊與該第二記憶體區塊, 其中在該第一記憶體區塊中,該些過濾器的其中之一中不同位置的該些權重分別儲存在該些第一記憶體列中,該些權重位元分別儲存在該些第一記憶體行中, 其中在該第二記憶體區塊中,不同的該些過濾器中具有相同位置的該些權重分別儲存在該些第二記憶體列中,該些權重位元分別儲存在該些第二記憶體行中。
  4. 如請求項3所述之記憶體內運算裝置,其中在一同時寫入與計算模式,該至少一控制電路用以控制該第一記憶體區塊與該第二記憶體區塊的其中之一進行該乘累加運算,同時對該第一記憶體區塊與該第二記憶體區塊的其中之另一進行一寫入程序,用以寫入該些權重的一部份。
  5. 如請求項4所述之記憶體內運算裝置,其中該至少一控制電路用以控制該第一記憶體區塊與該第二記憶體區塊交替的進行該乘累加運算以及該寫入程序。
  6. 如請求項5所述之記憶體內運算裝置,其中該至少一控制電路用以設定一推論階段與一訓練階段, 其中在該推論階段中,該至少一控制電路用以運行在該同時寫入與計算模式。
  7. 如請求項6所述之記憶體內運算裝置,其中該訓練階段包含一前向傳播期間與一反向傳播期間, 在該前向傳播期間,該至少一控制電路用以運行在該同時寫入模式,並且控制該第一記憶體區塊進行該乘累加運算。
  8. 如請求項7所述之記憶體內運算裝置,其中在該反向傳播期間,該至少一控制電路控制該第二記憶體區塊進行該乘累加運算,並對該第一記憶體區塊進行該寫入程序或設定該第一記憶體區塊處於一閒置狀態。
  9. 如請求項8所述之記憶體內運算裝置,其中該第一記憶體區塊與該第二記憶體區塊包含多個字元線, 其中在該推論階段與該前向傳播期間,該至少一控制電路用以將多個輸入特徵施加於該些字元線, 其中在該反向傳播期間,該至少一控制電路用以將一損失相對於該些權重的多個偏導數施加於該些字元線。
  10. 如請求項9所述之記憶體內運算裝置,還包括: 一輸出合成器,連接至該類比數位轉換陣列,該輸出合成器包含多個加法器與一減法器,該減法器用以接收一最高有效位元,該些加法器接收其他位元。
TW113107981A 2024-03-05 2024-03-05 可應用於推論與學習的記憶體內運算裝置 TWI860951B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW113107981A TWI860951B (zh) 2024-03-05 2024-03-05 可應用於推論與學習的記憶體內運算裝置
US18/776,981 US20250284459A1 (en) 2024-03-05 2024-07-18 Computing-in-memory device for inference and learning

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW113107981A TWI860951B (zh) 2024-03-05 2024-03-05 可應用於推論與學習的記憶體內運算裝置

Publications (2)

Publication Number Publication Date
TWI860951B true TWI860951B (zh) 2024-11-01
TW202536672A TW202536672A (zh) 2025-09-16

Family

ID=94379767

Family Applications (1)

Application Number Title Priority Date Filing Date
TW113107981A TWI860951B (zh) 2024-03-05 2024-03-05 可應用於推論與學習的記憶體內運算裝置

Country Status (2)

Country Link
US (1) US20250284459A1 (zh)
TW (1) TWI860951B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202119408A (zh) * 2019-07-03 2021-05-16 美商高通公司 記憶體內計算位元胞元
TW202211233A (zh) * 2020-05-06 2022-03-16 美商高通公司 採用針對準確性和功率效率而最佳化的位元單元電路的多位元記憶體內計算(cim)陣列
TW202238593A (zh) * 2021-03-17 2022-10-01 美商高通公司 具有三元啟動的記憶體內運算
TW202312034A (zh) * 2021-07-02 2023-03-16 美商高通公司 用於深度式可分離迴旋的記憶體內計算架構和資料流
US20230090720A1 (en) * 2021-11-29 2023-03-23 Deepx Co., Ltd. Optimization for artificial neural network model and neural processing unit
TW202336608A (zh) * 2022-03-03 2023-09-16 台灣積體電路製造股份有限公司 讀取記憶體的方法及記憶體裝置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202119408A (zh) * 2019-07-03 2021-05-16 美商高通公司 記憶體內計算位元胞元
TW202211233A (zh) * 2020-05-06 2022-03-16 美商高通公司 採用針對準確性和功率效率而最佳化的位元單元電路的多位元記憶體內計算(cim)陣列
TW202238593A (zh) * 2021-03-17 2022-10-01 美商高通公司 具有三元啟動的記憶體內運算
TW202312034A (zh) * 2021-07-02 2023-03-16 美商高通公司 用於深度式可分離迴旋的記憶體內計算架構和資料流
US20230090720A1 (en) * 2021-11-29 2023-03-23 Deepx Co., Ltd. Optimization for artificial neural network model and neural processing unit
TW202336608A (zh) * 2022-03-03 2023-09-16 台灣積體電路製造股份有限公司 讀取記憶體的方法及記憶體裝置

Also Published As

Publication number Publication date
US20250284459A1 (en) 2025-09-11

Similar Documents

Publication Publication Date Title
CN112765540B (zh) 数据处理方法、装置及相关产品
CN110717583A (zh) 卷积电路、处理器、芯片、板卡和电子设备
CN115796236B (zh) 一种基于存内cnn中间缓存调度的存储器
CN118211621A (zh) 基于混合低精度量化的卷积神经网络加速器及其设计方法
CN115719088A (zh) 一种支持存内cnn的中间缓存调度电路装置
CN115829002B (zh) 一种基于存内cnn的调度存储方法
TWI860951B (zh) 可應用於推論與學習的記憶體內運算裝置
CN115775020B (zh) 一种支持存内cnn的中间缓存调度方法
US7680972B2 (en) Micro interrupt handler
CN116050492A (zh) 一种扩展单元
WO2023098256A1 (zh) 神经网络运算方法、装置、芯片、电子设备和存储介质
CN117891751B (zh) 内存数据访存方法及装置、电子设备与存储介质
WO2022007597A1 (zh) 矩阵运算的方法和加速器
TW202536672A (zh) 可應用於推論與學習的記憶體內運算裝置
US20230273733A1 (en) In-memory compute core for machine learning acceleration
CN112801278B (zh) 数据处理方法、处理器、芯片及电子设备
KR102561205B1 (ko) 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법
Zhang et al. A high-efficient and configurable hardware accelerator for convolutional neural network
Gautier et al. A 26.7 TOPS/W Multiplier-Less Digital In-Memory Computing Macro with low-cost Multi-Layer Inference in 28nm FDSOI for edge AI
CN113504893B (zh) 一种智能芯片架构和高效处理数据的方法
Qin et al. StreamDCIM: A Tile-based Streaming Digital CIM Accelerator with Mixed-stationary Cross-forwarding Dataflow for Multimodal Transformer
CN120255849B (zh) 一种高密度rram稀疏数字存内计算方法及电路
US12260900B2 (en) In-memory computing circuit and method, and semiconductor memory
CN119678144A (zh) 紧凑型存储器内计算机架构
CN111832717B (zh) 芯片及用于卷积计算的处理装置