TWI749552B - 內積計算裝置 - Google Patents
內積計算裝置 Download PDFInfo
- Publication number
- TWI749552B TWI749552B TW109115842A TW109115842A TWI749552B TW I749552 B TWI749552 B TW I749552B TW 109115842 A TW109115842 A TW 109115842A TW 109115842 A TW109115842 A TW 109115842A TW I749552 B TWI749552 B TW I749552B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- index
- inner product
- unit
- calculation device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
一種內積計算裝置,包括一索引單元、一儲存運算單元、一冗餘轉二補數轉換器、一映射表與一乘法累加模組。索引單元儲存多個索引值。索引單元連接字元線,字元線分別對應索引值。儲存運算單元包括字元線與位元線,並儲存多個資料值,映射表儲存索引值對應的多個係數。索引單元根據一計數值與索引值致能字元線,使儲存運算單元累加對應被致能之字元線的每一位元線所對應之資料值,以產生對應位元線之累加結果。冗餘轉二補數轉換器轉換累加結果為二補數形式之一總資料值。乘法累加模組根據分配律對總資料值及係數進行運算,以產生一內積值。
Description
本發明是關於一種計算裝置,特別是有關於一種內積計算裝置。
向量內積(inner product)是訊號處理與神經網路等計算中最重要的核心之一,因為訊號處理與神經網路多存在大量重複的權重或係數。第1圖為先前技術之全連結式(fully-connected)神經網路之示意圖,請參考第1圖,神經網路包括多個小圓圈,其由左到右分別表示輸入節點、多層神經元及輸出節點,其中
代表第i層第j個的神經元。第2圖為先前技術之應用於第1圖之神經網路的內積計算裝置的方塊圖,請再參考第2圖,內積計算裝置50包括一權重單元52、一儲存運算單元54、一乘法器56、一加法器58以及一函數處理器60。權重單元52與儲存運算單元54連接至乘法器56,乘法器56連接至加法器58,加法器58連接至函數處理器60。權重單元52與儲存運算單元54分別儲存一權重資料
以及一所輸入要進行判斷的資料
。在內積計算裝置50中,第i層的第j個神經元
需要的計算即為第i-1層的第k個神經元
的輸出與所其對應之權重資料
的向量內積,加上第i層的第j個神經元
對應之偏差(bias)
,並經過激活(activation)函數的計算結果,即
,其中
為第i-1層神經元對應之輸入資料的個數。
如第2圖所示,向量內積計算最直接的實現方法即是基於「乘加器(multiply-accumulator,MAC)」的方法,藉由乘法器56將兩向量對應之元素(如前述神經網路之前一層所有神經元輸出
與對應權重資料
)各自相乘後,依序經由加法器58累加乘積得出內積結果。
然而,上述計算必須對輸入向量的每個值與權重逐一做內積的乘加計算,所需的運算量非常龐大,且也需要較多的記憶體進行運算,相當費時與耗能。
第3圖為先前技術之內積計算裝置的方塊圖,其根據公式(1)運作,其中
為第i-1層的第k個神經元連接第i層之第j個神經元的權重,
為第i-1層第k個神經元的輸出,k為第i-1層的神經元之編號,
為第i-1層的神經元之總數,因此此運算會將第i-1層的全部神經元之輸出乘上對應的權重並進行累加;
為編號m的代表權重,
則是
等於
時的
之累加值,m為代表權重之編號,K為代表權重的總個數,因此只要將代表權重乘上對應的累加值就可以得出一樣的結果。內積計算裝置包括一索引單元62、一儲存運算單元64、一累加器66、一加法器68、一映射表70、一乘法器72、一加法器74以及一函數處理器76。此內積計算裝置是利用累加器66與加法器74進行累加運算。雖然,此內積計算裝置也能夠透過分配律來減少計算量,不過累加器66與加法器74需要進行N次(N為數值個數)累加,再配合乘法器72進行K次係數乘加。因此,內積計算裝置的計算量不平衡,易造成架構使用率不高及運算架構之浪費。
=
(1)
因此,本發明係在針對上述的困擾,提出一種內積計算裝置,以解決習知所產生的問題。
本發明提供一種內積計算裝置,其架構使用率高且計算量精簡。
本發明提供一種內積計算裝置,包括一索引單元、一儲存運算單元、一冗餘轉二補數(redundant to 2's complement, RTC)轉換器、一映射表以及一乘法累加模組。索引單元儲存多個索引值,索引單元連接平行設置之多條字元線,所有字元線分別對應所有索引值,其中索引單元依序接收多個計數值,並將與每一計數值對應之索引值作為一映射值,且依序輸出每一計數值對應之映射值,又致能映射值對應之字元線。儲存運算單元包括多個記憶胞、所有字元線與平行設置之多條位元線,每一字元線透過記憶胞連接所有位元線,所有記憶胞分別儲存多個資料值,資料值包含邏輯”1”或邏輯”0”。儲存運算單元累加對應被致能之字元線的每一位元線所對應之資料值,以產生分別對應所有位元線之多個累加結果。冗餘轉二補數轉換器連接儲存運算單元。冗餘轉二補數轉換器接收所有累加結果,並移位相加所有累加結果R,以轉換所有累加結果為二補數形式之一總資料值。映射表連接至索引單元,映射表儲存所有索引值對應的多個係數。映射表接收映射值,並輸出對應映射值之係數。乘法累加模組連接冗餘轉二補數轉換器與映射表。乘法累加模組接收每一計數值對應之總資料值與係數,並根據分配律(distributive law)將每一計數值對應之總資料值與係數進行相乘與累加,以產生一內積值。
在本發明的一實施例中,內積計算裝置更包括一索引計數器,其係連接至索引單元,且索引計數器依序產生所有計數值。
在本發明的一實施例中,索引單元為一內容定址記憶體(content addressable memory)。
在本發明的一實施例中,儲存運算單元為一記憶體內運算架構(computing-in-memory architecture)。
在本發明的一實施例中,儲存運算單元產生之每一累加結果為其對應之邏輯”1”的總數目。
在本發明的一實施例中,乘法累加模組包括一乘法器以及一累加器。乘法器連接至冗餘轉二補數轉換器與映射表,乘法器接收並相乘每一計數值對應之總資料值與係數,以產生多個乘積值。累加器連接乘法器,累加器累加所有乘積值,以產生內積值。
在本發明的一實施例中,累加器更連接一函數處理器,其係對內積值進行激活(activation)函數、捨入(rounding)函數以及飽和(saturation)函數的運算。
在本發明的一實施例中,內積計算裝置更包括另一個前述索引單元以及另一個前述儲存運算單元,以進行一乒乓模式運算。
在本發明的一實施例中,計數值與其對應之索引值為相同值。
在本發明的一實施例中,內積值應用至一神經網路、一濾波器或一相關性計算。
基於上述,本發明實施例的內積計算裝置不但可以利用索引值大幅降低計算量,更可利用儲存運算單元的平行累加能力來達到計算量平衡與高硬體架構使用效率,進而達到高效能、低能耗的技術效果。
底下藉由具體實施例配合所附的圖式詳加說明,當更容易瞭解本發明之目的、技術內容、特點及其所達成之功效。
本發明之實施例將藉由下文配合相關圖式進一步加以解說。盡可能的,於圖式與說明書中,相同標號係代表相同或相似構件。於圖式中,基於簡化與方便標示,形狀與厚度可能經過誇大表示。可以理解的是,未特別顯示於圖式中或描述於說明書中之元件,為所屬技術領域中具有通常技術者所知之形態。本領域之通常技術者可依據本發明之內容而進行多種之改變與修改。
除非特別說明,一些條件句或字詞,例如「可以(can)」、「可能(could)」、「也許(might)」,或「可(may)」,通常是試圖表達本案實施例具有,但是也可以解釋成可能不需要的特徵、元件,或步驟。在其他實施例中,這些特徵、元件,或步驟可能是不需要的。
在說明書及申請專利範圍中,若描述第一元件位於第二元件上、在第二元件上方、連接、接合、耦接於第二元件或與第二元件相接,則表示第一元件可直接位在第二元件上、直接連接、直接接合、直接耦接於第二元件,亦可表示第一元件與第二元件間存在其他元件。相對之下,若描述第一元件直接位在第二元件上、直接連接、 直接接合、直接耦接、或直接相接於第二元件,則代表第一元件與第二元件間不存在其他元件。
於下文中關於“一個實施例”或“一實施例”之描述係指關於至少一實施例內所相關連之一特定元件、結構或特徵。因此,於下文中多處所出現之“一個實施例”或 “一實施例”之多個描述並非針對同一實施例。再者,於一或多個實施例中之特定構件、結構與特徵可依照一適當方式而結合。
第4圖為本發明一實施例之內積計算裝置的方塊圖。請參考第4圖,內積計算裝置100包括一索引單元110、一儲存運算單元120、一冗餘轉二補數(redundant to 2's complement, RTC)轉換器130、一映射表140、一索引計數器150以及一乘法累加模組160,其中索引單元110可為一內容定址記憶體(content addressable memory),儲存運算單元120可為一記憶體內運算架構(computing-in-memory architecture),記憶體內運算架構包含了記憶體與運算電路。舉例來說,儲存運算單元120可為一雙8T SRAM的架構(可參考
ISSCC 2019 / SESSION 24 / SRAM & COMPUTATION-IN-MEMORY / 24.5 “A Twin-8T SRAM Computation-In-Memory Macro for Multiple-Bit CNN-Based Machine Learning”)。索引計數器150依序產生多個計數值N,索引單元110儲存多個索引值,索引單元110連接索引計數器150與平行設置之多條字元線WL,所有字元線WL分別對應所有索引值。索引單元110依序接收所有計數值N,並將與每一計數值N對應之索引值作為一映射值M,且索引單元110依序輸出每一計數值N對應之映射值M,又致能(enable)映射值M對應之字元線WL。舉例來說,計數值N與其對應之索引值為相同值。儲存運算單元120包括多個記憶胞、所有字元線WL與平行設置之多條位元線BL,所有字元線WL可與所有位元線BL垂直交會,每一字元線WL透過記憶胞連接所有位元線BL,所有記憶胞分別儲存多個資料值,資料值包含邏輯”1”或邏輯”0”。 儲存運算單元120累加對應被致能之字元線WL的每一位元線BL所對應之資料值,以產生分別對應所有位元線BL之多個累加結果R。舉例來說,儲存運算單元120產生之每一累加結果R為其對應之邏輯”1”的總數目。
冗餘轉二補數轉換器130連接儲存運算單元120。冗餘轉二補數轉換器130可包含一加法器。可選擇地,冗餘轉二補數轉換器130更可包含與此加法器連接之一二補數轉換電路。冗餘轉二補數轉換器130接收所有累加結果R,並移位相加所有累加結果R,以轉換所有累加結果R為二補數形式之一總資料值T。映射表140連接至索引單元110,映射表140儲存所有索引值對應的多個係數C。映射表140接收映射值M,並輸出對應映射值M之係數C。乘法累加模組160連接冗餘轉二補數轉換器130與映射表140。乘法累加模組160接收每一計數值N對應之總資料值T與係數C,並根據分配律(distributive law)將每一計數值N對應之總資料值T與係數C進行相乘與累加,以產生一內積值D。
在本發明之一實施例中,乘法累加模組160可包括一乘法器161以及一累加器162。乘法器161連接至冗餘轉二補數轉換器130與映射表140,乘法器161接收並相乘每一計數值N對應之總資料值T與係數C,以產生多個乘積值P。累加器162連接乘法器161,累加器162累加所有乘積值P,以產生內積值D。
以下介紹本發明之內積計算裝置之運作過程,舉例來說,計數值N包含第一計數值N1與第二計數值N2,映射值M為第一映射值M1或第二映射值M2,所有字元線WL包含第一字元線與第二字元線,累加結果R為第一累加結果R1或第二累加結果R2,總資料值T為第一總資料值T1或第二總資料值T2,係數C包含第一係數C1與第二係數C2,乘積值P包含第一乘積值P1與第二乘積值P2。
索引計數器150依序產生第一計數值N1與第二計數值N2。索引單元110依序接收第一計數值N1與第二計數值N2,並將與第一計數值N1與第二計數值N2分別對應之索引值分別作為第一映射值M1與第二映射值M2,且索引單元110依序輸出第一映射值M1與第二映射值M2,又致能第一映射值M1與第二映射值M2對應之字元線。舉例來說,在索引單元110輸出第一映射值M1時,索引單元110致能第一映射值M1對應之第一字元線。在索引單元110輸出第二映射值M2時,索引單元110致能第二映射值M2對應之第二字元線。儲存運算單元120累加對應被致能之第一字元線的每一位元線BL所對應之資料值,以產生分別對應所有位元線BL之多個第一累加結果R1。同樣地,儲存運算單元120累加對應被致能之第二字元線的每一位元線BL所對應之資料值,以產生分別對應所有位元線BL之多個第二累加結果R2。冗餘轉二補數轉換器130接收所有第一累加結果R1,並轉換所有第一累加結果R1為二補數形式之一第一總資料值T1。冗餘轉二補數轉換器130接收所有第二累加結果R2,並轉換所有第二累加結果R2為二補數形式之一第二總資料值T2。映射表140接收第一映射值M1,並輸出對應第一映射值M1之第一係數C1。映射表140接收第二映射值M2,並輸出對應第二映射值M2之第二係數C2。乘法器161接收並相乘第一總資料值T1與第一係數C1,以產生第一乘積值P1。乘法器161接收並相乘第二總資料值T2與第二係數C2,以產生第二乘積值P2。最後,累加器162累加第一乘積值P1與第二乘積值P2,以產生內積值D。本發明之內積計算裝置不但可以利用索引值大幅降低計算量,更可利用儲存運算單元120的平行累加能力來達到計算量平衡與簡化,進而達到高硬體架構使用效率與低能耗的技術效果。
在本發明之一實施例中,內積值D可應用至一神經網路,累加器162更可連接一函數處理器170,其係對內積值D進行激活(activation)函數、捨入(rounding)函數以及飽和(saturation)函數的運算。舉例來說,激活函數可為一整流線性單元(rectified linear units,ReLU)函數,但不以此為限。此外,在另一實施例中,內積值D除了應用至神經網路外,還可應用於一濾波器或一相關性計算等其他需要內積計算的應用中。
此外,由於神經網路的一層輸出的神經元,在下一輪的運算中將會作為下一層輸出的神經元的輸入,而有角色交替的情況,因此,內積計算裝置100更可包括另一與索引單元110相同之索引單元以及另一與儲存運算單元120相同之儲存運算單元,亦分別用來儲存索引值以及資料值,以讓兩索引單元與兩儲存運算單元互相配合來進行一乒乓模式(ping pong mode)運算。第5圖為第4圖實施例之內積計算器應用於神經網路的時序圖,以下將配合第5圖來說明內積計算與神經網路中的乒乓模式運算。請參考第4圖以及第5圖,IA
0與IA
1分別代表兩個索引單元110,DA
0與DA
1分別代表兩個儲存運算單元120,RTC/MAC代表冗餘轉二補數轉換器130與乘法累加模組160,ARS代表函數處理器170,詳細步驟如下:
步驟1:將上述資料值與索引值分別以「資料向量」與「索引向量」實現,並分別將要進行內積計算之「資料向量」與「索引向量」儲存在儲存運算單元DA
0與索引單元IA
0中,如時序1a與時序1b所示。
步驟2:索引計數器150由0開始計數至 K-1,其中K為係數的個數。利用內容定址記憶體設計概念,搜尋索引單元IA
0中與索引計數器150產生之計數值相等的索引值,如時序2a所示。同時,被選出的索引值所對應到的儲存運算單元DA
0的資料值將以記憶體內運算設計技術直接累加,並直接讀取儲存運算單元DA
0中每條位元線BL上資料值為邏輯1的記憶胞的個數。接著,此多數值位元線(multi-valued bit-lines)BL的讀取值可經冗餘轉二補數轉換器130轉換為二補數形式之總資料值,如時序2b所示;最後乘法器161將依數學分配律將相同係數乘上對應之總資料值後,以得到乘積值,再由加法器162進行累加所有乘積值,得到向量內積,如時序2c所示。值得一提的是,二補數轉換與後續的乘法計算次序可依照不同應用與實作所需要的資料長度進行優化,上述說明僅為實施範例,並非用以限制本發明。
藉由以上步驟已完成兩向量的內積計算。若此內積計算是應用在神經網路計算,另外需要進行下列步驟:
步驟3:將上述向量內積輸入函數處理器170,以對向量內積進行激活函數、飽和函數與捨餘函數之運算,其中激活函數例如為ReLU函數,即計算結果負則輸出0,若為正則輸出原值。對於飽和函數,當計算結果超過最大值可表示值以最大值表示。對於捨餘函數,則移除計算結果之較不重要的尾數部分後,將計算結果正規化為原先資料之表示形式,如時序3所示。
步驟4:將步驟3正規化後之神經元計算結果寫入儲存運算單元DA
1,如時序4所示。為了提升架構使用率並使神經元計算順暢,可利用索引單元IA
0、IA
1與儲存運算單元DA
0、DA
1實現乒乓模式運作,可以管線化方式,以同時執行多個神經元計算。從第5圖除了可以觀察到本實施例在利用數學分配律移除不必要的乘法運算之外,其順暢的運行模式可輕鬆保持高硬體架構使用率。
另外,為了強調本發明與先前技術的差異,將以表一為例來說明計算量及記憶體存取量之比較,其中FC_DNN(fully-connected deep neural network)表示全連結式深度神經網路:
計算量及記憶體存取量之比較 (以FC_DNN為例) | ||
先前技術之第2圖之架構 | 本發明之第3圖實施例架構 | 比例 |
199168次16位元的權重記憶體存取 199168次寫入16位元的權重單元 | 199168次4位元的索引記憶體存取 199168次寫入4位元的索引單元 | 4:1 |
199168次讀取16位元的權重單元 199168次讀取16位元的儲存運算單元 199168次16位元×16位元的乘法計算 199168次40位元的累加計算 | 11670次的索引單元配對 11670次的儲存運算單元的累加計算與2補數運算 11670次的24位元×16位元的乘法計算 11670次40位元的累加計算 | 17:1 |
778次的激活捨入暨飽和運算 778次寫入16位元的權重單元 | 778次的激活捨入暨飽和運算 778次寫入16位元的儲存運算單元 | 不變 |
由表一可明顯看出,本發明所需的記憶體大小僅為先前技術的1/4,且計算量也只需要1/17。因此,本發明之內積計算裝置確實能夠有效地減少所需的記憶體以及運算量。
綜上所述,本發明的內積計算裝置不但可以利用索引值大幅降低計算量,更可利用儲存運算單元的平行累加能力來達到計算量平衡與高硬體架構使用效率,進而達到高效能、低能耗的技術效果。
以上所述之實施例僅係為說明本發明之技術思想及特點,其目的在使熟習此項技藝之人士能夠瞭解本發明之內容並據以實施,當不能以之限定本發明之專利範圍,即大凡依本發明所揭示之精神所作之均等變化或修飾,仍應涵蓋在本發明之專利範圍內。
50 內積計算裝置
52 權重單元
54 儲存運算單元
56 乘法器
58 加法器
60 函數處理器
62 索引單元
64 儲存運算單元
66 累加器
68 加法器
70 映射表
72 乘法器
74 加法器
76 函數處理器
100 內積計算裝置
110 索引單元
120 儲存運算單元
130 冗餘轉二補數轉換器
140 映射表
150 索引計數器
160 乘法累加模組
161 乘法器
162 累加器
神經元
N 計數值
M 映射值
R 累加結果
T 總資料值
C 係數
D 內積值
BL 位元線
WL 字元線
第1圖為先前技術之全連結式(fully-connected)神經網路之示意圖。
第2圖為先前技術之應用於第1圖之神經網路的內積計算裝置的方塊圖。
第3圖為先前技術之內積計算裝置的方塊圖。
第4圖為本發明之一實施例之內積計算裝置的方塊圖。
第5圖為第4圖之內積計算裝置應用於神經網路的時序圖。
100 內積計算裝置
110 索引單元
120 儲存運算單元
130 冗餘轉二補數轉換器
140 映射表
150 索引計數器
160 乘法累加模組
161 乘法器
162 累加器
N 計數值
M 映射值
R 累加結果
T 總資料值
C 係數
D 內積值
BL 位元線
WL 字元線
Claims (10)
- 一種內積計算裝置,包括: 一索引單元,儲存多個索引值,該索引單元連接平行設置之多條字元線,該些字元線分別對應該些索引值,其中該索引單元依序接收多個計數值,並將與每一該計數值對應之該索引值作為一映射值,且依序輸出每一該計數值對應之該映射值,又致能該映射值對應之該字元線; 一儲存運算(storage operation)單元,包括多個記憶胞、該些字元線與平行設置之多條位元線,每一該字元線透過該記憶胞連接該些位元線,該些記憶胞分別儲存多個資料值,該資料值包含邏輯”1”或邏輯”0”,其中該儲存運算單元累加對應被致能之該字元線的每一該位元線所對應之該資料值,以產生分別對應該些位元線之多個累加結果; 一冗餘轉二補數(redundant to 2's complement, RTC)轉換器,連接該儲存運算單元,其中該冗餘轉二補數轉換器接收該些累加結果,並移位相加該些累加結果,以轉換該些累加結果為二補數形式之一總資料值; 一映射表,連接至該索引單元,其中該映射表儲存該些索引值對應的多個係數,該映射表接收該映射值,並輸出對應該映射值之該係數;以及 一乘法累加模組,連接該冗餘轉二補數轉換器與該映射表,其中該乘法累加模組接收每一該計數值對應之該總資料值與該係數,並根據分配律(distributive law)將每一該計數值對應之該總資料值與該係數進行相乘與累加,以產生一內積值。
- 如請求項1所述之內積計算裝置,更包括一索引計數器,其係連接至該索引單元,且該索引計數器依序產生該些計數值。
- 如請求項1所述之內積計算裝置,其中該索引單元為一內容定址記憶體(content addressable memory)。
- 如請求項1所述之內積計算裝置,其中該儲存運算單元為一記憶體內運算架構(computing-in-memory architecture)。
- 如請求項1所述之內積計算裝置,其中該儲存運算單元產生之每一該累加結果為其對應之該邏輯”1”的總數目。
- 如請求項1所述之內積計算裝置,其中該乘法累加模組包括: 一乘法器,連接至該冗餘轉二補數轉換器與該映射表,其中該乘法器接收並相乘每一該計數值對應之該總資料值與該係數,以產生多個乘積值;以及 一累加器,連接該乘法器,其中該累加器累加該些乘積值,以產生該內積值。
- 如請求項6所述之內積計算裝置,其中該累加器更連接一函數處理器,其係對該內積值進行激活(activation)函數、捨入(rounding)函數以及飽和(saturation)函數的運算。
- 如請求項7所述之內積計算裝置,更包括另一個該索引單元以及另一個該儲存運算單元,以進行一乒乓模式運算。
- 如請求項1所述之內積計算裝置,其中該計數值與其對應之該索引值為相同值。
- 如請求項1所述之內積計算裝置,其中該內積值應用至一神經網路、一濾波器或一相關性計算。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109115842A TWI749552B (zh) | 2020-05-13 | 2020-05-13 | 內積計算裝置 |
JP2020100321A JP6944733B1 (ja) | 2020-05-13 | 2020-06-09 | 内積計算装置 |
US16/998,724 US11567731B2 (en) | 2020-05-13 | 2020-08-20 | Device for computing an inner product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109115842A TWI749552B (zh) | 2020-05-13 | 2020-05-13 | 內積計算裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202143166A TW202143166A (zh) | 2021-11-16 |
TWI749552B true TWI749552B (zh) | 2021-12-11 |
Family
ID=77915200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109115842A TWI749552B (zh) | 2020-05-13 | 2020-05-13 | 內積計算裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11567731B2 (zh) |
JP (1) | JP6944733B1 (zh) |
TW (1) | TWI749552B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI760942B (zh) * | 2020-11-26 | 2022-04-11 | 國立中正大學 | 可變延遲計算裝置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201128571A (en) * | 2009-12-08 | 2011-08-16 | Intel Corp | Texture unit for general purpose computing |
US9225353B2 (en) * | 2011-06-27 | 2015-12-29 | Syntropy Systems, Llc | Apparatuses and methods for linear to discrete quantization conversion with reduced sampling-variation errors |
US9628119B2 (en) * | 2014-06-27 | 2017-04-18 | Nxp Usa, Inc. | Adaptive high-order nonlinear function approximation using time-domain volterra series to provide flexible high performance digital pre-distortion |
TWI673678B (zh) * | 2017-04-24 | 2019-10-01 | 美商英特爾股份有限公司 | 計算最佳化機制 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
JP3353786B2 (ja) * | 1990-01-24 | 2002-12-03 | 株式会社日立製作所 | 情報処理装置 |
US10496855B2 (en) * | 2016-01-21 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Analog sub-matrix computing from input matrixes |
US10241971B2 (en) * | 2016-12-15 | 2019-03-26 | Hewlett Packard Enterprise Development Lp | Hierarchical computations on sparse matrix rows via a memristor array |
JP6556768B2 (ja) * | 2017-01-25 | 2019-08-07 | 株式会社東芝 | 積和演算器、ネットワークユニットおよびネットワーク装置 |
-
2020
- 2020-05-13 TW TW109115842A patent/TWI749552B/zh active
- 2020-06-09 JP JP2020100321A patent/JP6944733B1/ja active Active
- 2020-08-20 US US16/998,724 patent/US11567731B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201128571A (en) * | 2009-12-08 | 2011-08-16 | Intel Corp | Texture unit for general purpose computing |
US9225353B2 (en) * | 2011-06-27 | 2015-12-29 | Syntropy Systems, Llc | Apparatuses and methods for linear to discrete quantization conversion with reduced sampling-variation errors |
US9628119B2 (en) * | 2014-06-27 | 2017-04-18 | Nxp Usa, Inc. | Adaptive high-order nonlinear function approximation using time-domain volterra series to provide flexible high performance digital pre-distortion |
TWI673678B (zh) * | 2017-04-24 | 2019-10-01 | 美商英特爾股份有限公司 | 計算最佳化機制 |
Also Published As
Publication number | Publication date |
---|---|
TW202143166A (zh) | 2021-11-16 |
US11567731B2 (en) | 2023-01-31 |
JP2021179942A (ja) | 2021-11-18 |
JP6944733B1 (ja) | 2021-10-06 |
US20210357184A1 (en) | 2021-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI701612B (zh) | 用於神經網路中激勵函數的電路系統及其處理方法 | |
US20190303750A1 (en) | Reconfigurable memory compression techniques for deep neural networks | |
CN110163353A (zh) | 一种计算装置及方法 | |
TWI784879B (zh) | 計算方法及電子裝置 | |
CN114937470B (zh) | 基于多比特sram单元的定点全精度存内计算电路 | |
TW202230165A (zh) | 記憶體內計算的裝置及方法 | |
CN109993275A (zh) | 一种信号处理方法及装置 | |
TWI749552B (zh) | 內積計算裝置 | |
CN115879530B (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
CN117574970A (zh) | 用于大规模语言模型的推理加速方法、系统、终端及介质 | |
CN110232441B (zh) | 一种基于单向脉动阵列的堆栈式自编码系统及方法 | |
CN109240644A (zh) | 一种用于伊辛芯片的局部搜索方法及电路 | |
Yang et al. | A parallel processing cnn accelerator on embedded devices based on optimized mobilenet | |
CN213934855U (zh) | 一种基于随机计算的神经网络随机数发生器共享电路 | |
WO2021168644A1 (zh) | 数据处理装置、电子设备和数据处理方法 | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
US10997497B2 (en) | Calculation device for and calculation method of performing convolution | |
CN115629734A (zh) | 并行向量乘加器的存内计算装置和电子设备 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
Lei et al. | Low power AI ASIC design for portable edge computing | |
WO2021169914A1 (zh) | 数据量化处理方法、装置、电子设备和存储介质 | |
CN116543808A (zh) | 一种基于sram单元的全数字域存内近似计算电路 | |
CN116543807A (zh) | 一种基于近似计算的高能效sram存内计算电路和方法 | |
Ko et al. | Efficient implementation of multi-channel convolution in monolithic 3D ReRAM crossbar | |
TWI805511B (zh) | 內積計算裝置 |