TWI805511B - 內積計算裝置 - Google Patents

內積計算裝置 Download PDF

Info

Publication number
TWI805511B
TWI805511B TW111139529A TW111139529A TWI805511B TW I805511 B TWI805511 B TW I805511B TW 111139529 A TW111139529 A TW 111139529A TW 111139529 A TW111139529 A TW 111139529A TW I805511 B TWI805511 B TW I805511B
Authority
TW
Taiwan
Prior art keywords
data
value
weight
values
inner product
Prior art date
Application number
TW111139529A
Other languages
English (en)
Other versions
TW202418064A (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 TW111139529A priority Critical patent/TWI805511B/zh
Priority to US18/074,245 priority patent/US20240126508A1/en
Priority to JP2022195665A priority patent/JP7485396B2/ja
Application granted granted Critical
Publication of TWI805511B publication Critical patent/TWI805511B/zh
Publication of TW202418064A publication Critical patent/TW202418064A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Container Filling Or Packaging Operations (AREA)
  • Superconductors And Manufacturing Methods Therefor (AREA)
  • Supplying Of Containers To The Packaging Station (AREA)

Abstract

一種內積計算裝置包括資料記憶體、反向索引記憶體、權重映射表、控制器、預累加器與乘法累加模組。資料記憶體儲存多個資料群組,每一資料群組包含多個資料值。反向索引記憶體儲存每一資料群組在資料記憶體中的資料位址及其對應之權重索引值。權重映射表儲存權重索引值所對應的權重值。控制器與反向索引記憶體驅動資料記憶體依序輸出資料群組之資料值,並驅動映射表依序輸出權重值。預累加器累加每一資料群組之資料值,以產生多個累加值。乘法累加模組根據分配律計算每一資料群組所對應之累加值與權重值,以產生一內積值。

Description

內積計算裝置
本發明是關於一種計算裝置,特別是有關於一種內積計算裝置。
向量內積(inner product)是訊號處理與神經網路等計算中最重要的核心之一。神經網路及訊號處理等應用中的向量內積計算,多存在大量重覆相同的權重或係數[如:線性相位有限脈衝響應(linear-phase FIR)濾波器的對稱係數或高度量化的神經網路權重]:在linear-phase FIR中,因係數完全對稱,利用數學分配律(distributive law)將擁有對稱係數之兩個輸入資料先行相加,再將其和乘上該係數值即可有效將乘法計算降低一半。然而在神經網路或其他一般應用中的重覆權重或係數幾乎是隨機出現,故迄今文獻僅止於將權重改以索引方式儲存,得用以降低權重記憶體儲存及讀取的複雜度。也就是假設該內積計算存在K種不同權重,原先各自需要n位元的權重,改用log2 K位元之索引表示,可有效降低權重之位元數。
第1圖為先前技術之全連結式(fully-connected)神經網路之示意圖,請參考第1圖,神經網路包括多個小圓圈,其由左到右分別表示位於輸入層之輸入節點、位於隱藏層之多層神經元及位於輸出層之輸出節點,其中x i,j 代表第i層第j個的神經元。第i層的第j個神經元x i,j 的計算為第i-1層的第k個神經元x i-1,k 的輸出與對應之權重資料w i,j,k 的向量內積,加上第i層的第j個神經元x i,j 對應之偏差(bias)b i,j ,並經過激活(activation)函數的計算 結果,即
Figure 111139529-A0305-02-0005-1
,其中N i-1為第i-1層神經元對應之輸入資料的個數。向量內積最直接的實現是以「乘加器(multiply-accumulator;MAC)」將兩向量對應元素(即神經網路前一層之神經元輸出與對應之權重)各自相乘後,依序累加乘積得出內積計算結果。第2圖為先前技術之應用於第1圖之神經網路的內積計算裝置的方塊圖,請再參考第2圖,內積計算裝置包括一微指令產生器10、一資料緩衝器12、一權重記憶體14、一乘法器16、一加法器18以及一激活函數處理器20。第2圖的操作步驟簡述如下:1.先放置輸入資料在資料緩衝器12;2.依序讀出在資料緩衝器12的輸入資料及對應之權重係數,計算其內積,將內積值加上偏差,並經過激勵函數後,神經元將計算結果輸出存回資料緩衝器12;3.重覆步驟2之神經元計算步驟,直到至第一隱藏層之全部神經元計算完成為止,且結果存回資料緩衝器12;4.依序讀出在資料緩衝器12的第一隱藏層輸出及對應之權重係數,計算其內積,將內積值加上偏差,並經過激勵函數後,神經元將計算結果輸出存回資料緩衝器12;5.重覆步驟4之神經元計算步驟,直到至第二層隱藏層之全部神經元計算完成為止,且結果存回資料緩衝器12;6.重覆步驟5,直到所有隱藏層之計算完成為止;7.依序讀出在資料緩衝器12的最後隱藏層之輸出及對應之權重係數,計算其內積,將內積值加上偏差後,存回資料緩衝器12;.重覆步驟7的輸出計算步驟,直到至輸出層計算完成為止,並將結果存回資料緩衝器12。
第3圖為先前技術之一內積計算裝置的方塊圖,內積計算裝置包括一微指令產生器10、一資料緩衝器12、一乘法器16、一加法器18、一激活函數處理器20、一索引記憶體22與一權重映射表24。第3圖使用了索引記憶體 22與權重映射表24,但第3圖並沒有充分利用重覆係數及數學分配律的特點降低複雜的乘法計算,甚為可惜。
第4圖為先前技術之另一內積計算裝置的方塊圖,第4圖為習知相關技術者應可輕易實現之架構。此內積計算裝置包括一微指令產生器26、一資料緩衝器28、一索引記憶體30、一權重映射表32、一加法器34、一預累加暫存器陣列36、一乘法器38、一加法器40以及一激活函數處理器42。預累加暫存器陣列36包括K個不同的預累加器。依據各個索引值(0~K-1)以K個不同的預累加器,分別累加對應之輸入值,待所有輸入值皆依照其對應之索引值被累加進對應的預累加器後,接著乘上對應之係數並完成最後的累加,即可計算出向量內積。換句話說,原先N個元素的內積計算需要N個乘法與N-1個加法,依照數學分配律可以完全省去因重覆係數而多餘計算的N-K個乘法。此架構雖然直覺,但其需要的預累加器龐大,以K=16,512個神經元之隱藏層及16位元運算來說,即需要16個25個位元的預累加器,實現面積可能大於16位元的乘法器,存取功耗也相當可觀。
因此,本發明係在針對上述的困擾,提出一種內積計算裝置,以解決習知所產生的問題。
本發明提供一種內積計算裝置,其達到高效能與低能耗之目的。
本發明提供一種內積計算裝置,其包括一資料記憶體、一反向索引記憶體、一權重映射表、一控制器、一預累加器與一乘法累加模組。控制器電性連接資料記憶體、反向索引記憶體與權重映射表。預累加器電性連接資料記憶體,乘法累加模組電性連接預累加器與權重映射表。資料記憶體用以儲存多個資料群組,其中每一資料群組包含多個資料值。反向索引記憶 體用以儲存每一資料群組在資料記憶體中的資料位址及其對應之權重索引值。權重映射表用以儲存權重索引值所對應的權重值。控制器用以從反向索引記憶體中依序取得所有資料群組之資料位址及其對應之權重索引值,並據此驅動資料記憶體依序輸出所有資料群組之所有資料值,且驅動權重映射表依序輸出權重索引值所對應的權重值。預累加器用以接收並累加每一資料群組之所有資料值,以產生多個累加值。乘法累加模組接收每一資料群組所對應之累加值與權重值,並根據分配律(distributive law)將每一資料群組所對應之累加值與權重值進行相乘與累加,以產生一內積值。
在本發明的一實施例中,反向索引記憶體用以採可變長度編碼(variable length coding)方式儲存每一資料群組之該資料位址及其對應之權重索引值。
在本發明的一實施例中,所有資料群組對應之權重值包含正值與負值,反向索引記憶體以從正值到負值之順序儲存其對應之資料位址。
在本發明的一實施例中,反向索引記憶體以從最小的負值到最大的負值之順序儲存其對應之資料位址,且最小的負值對應之資料位址相較最大的負值對應之資料位址更接近正值對應之資料位址。
在本發明的一實施例中,乘法累加模組包括一乘法器與一累加器。乘法器電性連接預累加器與權重映射表。乘法器用以接收並相乘每一資料群組所對應之累加值與權重值,以產生多個乘積值。累加器電性連接乘法器,其中累加器用以接收並累加所有乘積值,以產生內積值。
在本發明的一實施例中,累加器更電性連接一函數處理器,其係對內積值進行激活(activation)函數、捨入(rounding)函數或飽和(saturation)函數的運算。
在本發明的一實施例中,一種內積計算裝置包括一資料記憶體、一反向索引記憶體、一控制器、一預累加器與一乘法累加模組。資料記憶體用以儲存多個資料群組,其中每一資料群組包含多個資料值。反向索引記憶體用以儲存每一資料群組在資料記憶體中的資料位址及其對應之權重值。控制器電性連接資料記憶體與反向索引記憶體。控制器用以從反向索引記憶體中依序取得所有資料群組之資料位址及其對應之權重值,並據此驅動資料記憶體依序輸出所有資料群組之所有資料值,且依序輸出所有資料群組所對應的權重值。預累加器電性連接資料記憶體,其中預累加器用以接收並累加每一資料群組之所有資料值,以產生多個累加值。乘法累加模組電性連接預累加器與控制器。乘法累加模組接收每一資料群組所對應之累加值與權重值,並根據分配律(distributive law)將每一資料群組所對應之累加值與權重值進行相乘與累加,以產生一內積值。
在本發明的一實施例中,反向索引記憶體用以採可變長度編碼(variable length coding)方式儲存每一資料群組之資料位址及其對應之權重值。
在本發明的一實施例中,乘法累加模組包括一乘法器與一累加器。乘法器電性連接預累加器與控制器,其中乘法器用以接收並相乘每一資料群組所對應之累加值與權重值,以產生多個乘積值。累加器電性連接乘法器,其中累加器用以接收並累加所有乘積值,以產生內積值。
基於上述,內積計算裝置從反向索引記憶體中取得每一資料群組在資料記憶體中的資料位址及其對應之權重索引值,並據此以單一預累加器累加每一資料群組之所有資料值,同時根據數學分配律減少多個重複權重值之乘法計算量,以達到高效能與低能耗之目的。
底下藉由具體實施例配合所附的圖式詳加說明,當更容易瞭解本發明之目的、技術內容、特點及其所達成之功效。
10:微指令產生器
12:資料緩衝器
14:權重記憶體
16:乘法器
18:加法器
20:激活函數處理器
22:索引記憶體
24:權重映射表
26:微指令產生器
28:資料緩衝器
30:索引記憶體
32:權重映射表
34:加法器
36:預累加暫存器陣列
38:乘法器
40:加法器
42:激活函數處理器
100:內積計算裝置
110:資料記憶體
120:反向索引記憶體
130:權重映射表
140:控制器
150:預累加器
160:乘法累加模組
161:乘法器
162:累加器
170:函數處理器
x i,j :神經元
A:資料位址
WI:權重索引值
W:權重值
D:資料值
AV:累加值
P:內積值
M:乘積值
第1圖為先前技術之全連結式(fully-connected)神經網路之示意圖。
第2圖為先前技術之應用於第1圖之神經網路的內積計算裝置的方塊圖。
第3圖為先前技術之一內積計算裝置的方塊圖。
第4圖為先前技術之另一內積計算裝置的方塊圖。
第5圖為本發明之第一實施例之內積計算裝置的方塊圖。
第6圖為本發明之一實施例之權重值、偏差、資料位址、權重索引值與資料值之數量儲存於反向索引記憶體中的示意圖。
第7圖為本發明之第二實施例之內積計算裝置的方塊圖。
本發明之實施例將藉由下文配合相關圖式進一步加以解說。盡可能的,於圖式與說明書中,相同標號係代表相同或相似構件。於圖式中,基於簡化與方便標示,形狀與厚度可能經過誇大表示。可以理解的是,未特別顯示於圖式中或描述於說明書中之元件,為所屬技術領域中具有通常技術者所知之形態。本領域之通常技術者可依據本發明之內容而進行多種之改變與修改。
當一個元件被稱為『在…上』時,它可泛指該元件直接在其他元件上,也可以是有其他元件存在於兩者之中。相反地,當一個元件被稱為 『直接在』另一元件,它是不能有其他元件存在於兩者之中間。如本文所用,詞彙『及/或』包含了列出的關聯項目中的一個或多個的任何組合。
於下文中關於“一個實施例”或“一實施例”之描述係指關於至少一實施例內所相關連之一特定元件、結構或特徵。因此,於下文中多處所出現之“一個實施例”或“一實施例”之多個描述並非針對同一實施例。再者,於一或多個實施例中之特定構件、結構與特徵可依照一適當方式而結合。
揭露特別以下述例子加以描述,這些例子僅係用以舉例說明而已,因為對於熟習此技藝者而言,在不脫離本揭示內容之精神和範圍內,當可作各種之更動與潤飾,因此本揭示內容之保護範圍當視後附之申請專利範圍所界定者為準。在通篇說明書與申請專利範圍中,除非內容清楚指定,否則「一」以及「該」的意義包含這一類敘述包括「一或至少一」該元件或成分。此外,如本揭露所用,除非從特定上下文明顯可見將複數個排除在外,否則單數冠詞亦包括複數個元件或成分的敘述。而且,應用在此描述中與下述之全部申請專利範圍中時,除非內容清楚指定,否則「在其中」的意思可包含「在其中」與「在其上」。在通篇說明書與申請專利範圍所使用之用詞(terms),除有特別註明,通常具有每個用詞使用在此領域中、在此揭露之內容中與特殊內容中的平常意義。某些用以描述本揭露之用詞將於下或在此說明書的別處討論,以提供從業人員(practitioner)在有關本揭露之描述上額外的引導。在通篇說明書之任何地方之例子,包含在此所討論之任何用詞之例子的使用,僅係用以舉例說明,當然不限制本揭露或任何例示用詞之範圍與意義。同樣地,本揭露並不限於此說明書中所提出之各種實施例。
此外,若使用「電(性)耦接」或「電(性)連接」一詞在此係包含任何直接及間接的電氣連接手段。舉例而言,若文中描述一第一裝置電性耦 接於一第二裝置,則代表該第一裝置可直接連接於該第二裝置,或透過其他裝置或連接手段間接地連接至該第二裝置。另外,若描述關於電訊號之傳輸、提供,熟習此技藝者應該可了解電訊號之傳遞過程中可能伴隨衰減或其他非理想性之變化,但電訊號傳輸或提供之來源與接收端若無特別敘明,實質上應視為同一訊號。舉例而言,若由電子電路之端點A傳輸(或提供)電訊號S給電子電路之端點B,其中可能經過一電晶體開關之源汲極兩端及/或可能之雜散電容而產生電壓降,但此設計之目的若非刻意使用傳輸(或提供)時產生之衰減或其他非理想性之變化而達到某些特定的技術效果,電訊號S在電子電路之端點A與端點B應可視為實質上為同一訊號。
除非特別說明,一些條件句或字詞,例如「可以(can)」、「可能(could)」、「也許(might)」,或「可(may)」,通常是試圖表達本案實施例具有,但是也可以解釋成可能不需要的特徵、元件,或步驟。在其他實施例中,這些特徵、元件,或步驟可能是不需要的。
可了解如在此所使用的用詞「包含(comprising)」、「包含(including)」、「具有(having)」、「含有(containing)」、「包含(involving)」等等,為開放性的(open-ended),即意指包含但不限於。另外,本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制發明作之申請專利範圍。
在下面的描述中,將提供一種內積計算裝置,其從反向索引記憶體中取得每一資料群組在資料記憶體中的資料位址及其對應之權重索引值,並據此以單一預累加器累加每一資料群組之所有資料值,同時根據數學分配律減少多個重複權重值之乘法計算量,以達到高效能與低能耗之目的。
第5圖為本發明之第一實施例之內積計算裝置的方塊圖。請參閱第5圖,以下介紹內積計算裝置100之第一實施例。內積計算裝置100包括一資料記憶體110、一反向索引記憶體120、一權重映射表130、一控制器140、一預累加器150與一乘法累加模組160。資料記憶體110可為,但不限於暫存器。控制器140電性連接資料記憶體110、反向索引記憶體120與權重映射表130。預累加器150電性連接資料記憶體110,乘法累加模組160電性連接預累加器150與權重映射表130。
資料記憶體110儲存多個資料群組,其中每一資料群組包含多個資料值D。反向索引記憶體120儲存每一資料群組在資料記憶體110中的資料位址A及其對應之權重索引值WI。權重映射表130儲存權重索引值WI所對應的權重值W。權重索引值WI與其對應之權重值W可為相同值,但本發明不限於此。控制器140從反向索引記憶體120中依序取得所有資料群組之資料位址A及其對應之權重索引值WI,並據此驅動資料記憶體110依序輸出所有資料群組之所有資料值D,且驅動權重映射表130依序輸出權重索引值WI所對應的權重值W。預累加器150接收並累加每一資料群組之所有資料值D,以產生多個累加值AV。乘法累加模組160接收每一資料群組所對應之累加值AV與權重值W,並根據分配律(distributive law)將每一資料群組所對應之累加值AV與權重值W進行相乘與累加,以產生一內積值P。數學分配律能減少多個重複權重值之乘法計算量,以達到高效能與低能耗之目的。
假設所有資料群組包含一第一資料群組與一第二資料群組,第一資料群組包含多個第一資料值D1,第二資料群組包含多個第二資料值D2。資料記憶體110存有第一資料群組的第一資料位址A1及其對應之第一權重索引值WI1,並存有第二資料群組的第二資料位址A2及其對應之第二權重索引值WI2。第一權重索引值WI1與第二權重索引值WI2分別對應第一權重 值W1與第二權重值W2。所有累加值AV包含一第一累加值AV1與一第二累加值AV2。首先,控制器140從反向索引記憶體120中取得第一資料群組之第一資料位址A1及其對應之第一權重索引值WI1,並據此驅動資料記憶體110輸出第一資料群組之所有第一資料值D1,且驅動權重映射表130輸出第一權重索引值WI1所對應的第一權重值W1。預累加器150接收並累加第一資料群組之所有第一資料值D1,以產生第一累加值AV1。接著,控制器140從反向索引記憶體120中取得第二資料群組之第二資料位址A2及其對應之第二權重索引值WI2,並據此驅動資料記憶體110輸出第二資料群組之所有第二資料值D2,且驅動權重映射表130輸出第二權重索引值WI2所對應的第二權重值W2。預累加器150接收並累加第二資料群組之所有第二資料值D2,以產生第二累加值AV2。乘法累加模組160依公式(1)計算第一累加值AV1、第二累加值AV2、第一權重值W1與第二權重值W2,以得到內積值P。
AV1×W1+AV2×W2=P (1)
在本發明之某些實施例中,乘法累加模組160可包含一乘法器161與一累加器162。乘法器161電性連接預累加器150與權重映射表130。累加器162電性連接乘法器161。乘法器161接收並相乘每一資料群組所對應之累加值AV與權重值W,以產生多個乘積值M。累加器162接收並累加所有乘積值M,以產生內積值P。
在本發明之一實施例中,內積值P可應用至一神經網路,累加器162更可電性連接一函數處理器170,其係對內積值P進行激活(activation)函數、捨入(rounding)函數以及飽和(saturation)函數的運算。舉例來說,激活函數可為一整流線性單元(rectified linear units,ReLU)函數,但不以此為限。此外,在另一實施例中,內積值P除了應用至神經網路外,還可應用於一濾波器或一相關性計算等其他需要內積計算的應用中。資料群組對應 之權重值W可包含正值與負值。當激活函數為一ReLU函數時,反向索引記憶體120以從權重值W之正值到負值之順序儲存其對應之資料位址A。此外,反向索引記憶體120以從最小的負值到最大的負值之順序儲存其對應之資料位址A,且最小的負值對應之資料位址A相較最大的負值對應之資料位址A更接近正值對應之資料位址A。因此,乘法累加模組160先計算對應正權重值W的資料,再計算對應負權重值W的資料。在計算對應負權重值W的資料時,乘法累加模組160依權重值W之最小負值到權重值W之最大負值的順序,計算對應負權重值W的資料。當累加器162之計算結果由正轉負時,將內積值P視為0,並提早結束計算。
第6圖為本發明之一實施例之權重值、偏差、資料位址、權重索引值與資料值之數量儲存於反向索引記憶體中的示意圖。請參閱第6圖與第5圖,反向索引記憶體120可採可變長度編碼(variable length coding)方式儲存每一資料群組之資料位址A及其對應之權重索引值WI。第6圖是應用於語音轉換之全連結神經網路,其包含129個輸入節點、包含512個神經元之三個隱藏層與129個輸出節點,其中權重值W之數量為K,資料精確度為16位元。為了支援上述計算提前結束,每個神經元及每個與輸出計算相關之參數皆對齊至新的半字(halfword)(16位元)。也就是說,如果每個神經元或輸出的參數並非16位元的倍數,會產生碎片(fragment),如斜線所示。ipt表示目前神經元在反向索引記憶體120中的位址,ipt+△ipt表示下一個神經元在反向索引記憶體120中的位址。△ipt表示神經元在反向索引記憶體120中的位址之偏距(offset),單位為包括fragment的halfword,長度為9位元。偏距用以計算下一個神經元之參數之起始位址,並方便在計算提前結束時快速啟動下一個神經元的計算。widx0與widx1表示權重索引值,因為K=16,所以權重索引值之長度為4位元。N0與N1分別表示widx0與widx1對應之資料群組之資料值的數 量,N0與N1之每一者的長度皆為9位元。dpt0、dpt1、dpt2、dpt3、dptNo-1
Figure 111139529-A0305-02-0015-2
分別表示多個資料值的資料位址A。因為隱藏層有512個神經元,所以每一資料位址A的長度為9位元。此外,根據需求,反向索引記憶體120可存有權重值(weight values)與偏差(biases)。粗框表示單一權重索引值WI所對應之所有資料位址A之編碼,其由控制器140進行動態對齊與解碼。本發明並不限制反向索引記憶體120之資料寬度與各資料之編碼方式、排列與長度。
為了節省晶片之面積,權重映射表130可整合於反向索引記憶體120中。第7圖為本發明之第二實施例之內積計算裝置的方塊圖。請參閱第7圖,以下介紹內積計算裝置100之第二實施例。內積計算裝置100包含一資料記憶體110、一反向索引記憶體120、一控制器140、一預累加器150與一乘法累加模組160。資料記憶體110可為,但不限於暫存器。控制器140電性連接資料記憶體110與反向索引記憶體120,預累加器150電性連接資料記憶體110,乘法累加模組160電性連接預累加器150與控制器140。
資料記憶體110儲存多個資料群組,其中每一資料群組包含多個資料值D。反向索引記憶體120儲存每一資料群組在資料記憶體110中的資料位址A及其對應之權重值W。控制器140從反向索引記憶體120中依序取得所有資料群組之資料位址A及其對應之權重值W,並據此驅動資料記憶體110依序輸出所有資料群組之所有資料值D,且依序輸出所有資料群組所對應的權重值W。預累加器150接收並累加每一資料群組之所有資料值D,以產生多個累加值AV。乘法累加模組160接收每一資料群組所對應之累加值AV與權重值W,並根據分配律(distributive law)將每一資料群組所對應之累加值AV與權重值W進行相乘與累加,以產生一內積值P。
假設所有資料群組包含一第一資料群組與一第二資料群組,第一資料群組包含多個第一資料值D1,第二資料群組包含多個第二資料值 D2。資料記憶體110存有第一資料群組的第一資料位址A1及其對應之第一權重值W1,並存有第二資料群組的第二資料位址A2及其對應之第二權重值W2。所有累加值AV包含一第一累加值AV1與一第二累加值AV2。首先,控制器140從反向索引記憶體120中取得第一資料群組之第一資料位址A1及其對應之第一權重值W1,並據此驅動資料記憶體110輸出第一資料群組之所有第一資料值D1,且輸出第一權重值W1。預累加器150接收並累加第一資料群組之所有第一資料值D1,以產生第一累加值AV1。接著,控制器140從反向索引記憶體120中取得第二資料群組之第二資料位址A2及其對應之第二權重值W2,並據此驅動資料記憶體110輸出第二資料群組之所有第二資料值D2,且輸出第二權重值W2。預累加器150接收並累加第二資料群組之所有第二資料值D2,以產生第二累加值AV2。乘法累加模組160依公式(1)計算第一累加值AV1、第二累加值AV2、第一權重值W1與第二權重值W2,以得到內積值P。
乘法累加模組160可包含一乘法器161與一累加器162。乘法器161電性連接預累加器150與控制器140。累加器162電性連接乘法器161。乘法器161接收並相乘每一資料群組所對應之累加值AV與權重值W,以產生多個乘積值M。累加器162接收並累加所有乘積值M,以產生內積值P。
第二實施例之累加器162亦可電性連接一函數處理器170,其係對內積值P進行激活(activation)函數、捨入(rounding)函數以及飽和(saturation)函數的運算。舉例來說,激活函數可為一整流線性單元(rectified linear units,ReLU)函數,但不以此為限。此外,在另一實施例中,內積值P除了應用至神經網路外,還可應用於一濾波器或一相關性計算等其他需要內積計算的應用中。資料群組對應之權重值W可包含正值與負值。當激活函數為一ReLU函數時,反向索引記憶體120以從權重值W之正值到負值之順序 儲存其對應之資料位址A。此外,反向索引記憶體120以從最小的負值到最大的負值之順序儲存其對應之資料位址A,且最小的負值對應之資料位址A相較最大的負值對應之資料位址A更接近正值對應之資料位址A。因此,乘法累加模組160先計算對應正權重值W的資料,再計算對應負權重值W的資料。在計算對應負權重值W的資料時,乘法累加模組160依權重值W之最小負值到權重值W之最大負值的順序,計算對應負權重值W的資料。當累加器162之計算結果由正轉負時,將內積值P視為0,並提早結束計算。
如第7圖與第6圖所示,反向索引記憶體120可採可變長度編碼(variable length coding)方式儲存每一資料群組之資料位址A及其對應之權重值W。
根據上述實施例,內積計算裝置從反向索引記憶體中取得每一資料群組在資料記憶體中的資料位址及其對應之權重索引值,並據此以單一預累加器累加每一資料群組之所有資料值,同時根據數學分配律減少多個重複權重值之乘法計算量,以達到高效能與低能耗之目的。
以上所述之實施例僅係為說明本發明之技術思想及特點,其目的在使熟習此項技藝之人士能夠瞭解本發明之內容並據以實施,當不能以之限定本發明之專利範圍,即大凡依本發明所揭示之精神所作之均等變化或修飾,仍應涵蓋在本發明之專利範圍內。
100:內積計算裝置
110:資料記憶體
120:反向索引記憶體
130:權重映射表
140:控制器
150:預累加器
160:乘法累加模組
161:乘法器
162:累加器
170:函數處理器
A:資料位址
WI:權重索引值
W:權重值
D:資料值
AV:累加值
P:內積值
M:乘積值

Claims (14)

  1. 一種內積計算裝置,包括: 一資料記憶體,用以儲存多個資料群組,其中每一該資料群組包含多個資料值; 一反向索引記憶體(inverted index memory, IIM),用以儲存每一該資料群組在該資料記憶體中的資料位址及其對應之權重索引值; 一權重映射表,用以儲存該權重索引值所對應的權重值; 一控制器,電性連接該資料記憶體、該反向索引記憶體與該權重映射表,其中該控制器用以從該反向索引記憶體中依序取得該些資料群組之該資料位址及其對應之該權重索引值,並據此驅動該資料記憶體依序輸出該些資料群組之該些資料值,且驅動該權重映射表依序輸出該權重索引值所對應的該權重值; 一預累加器,電性連接該資料記憶體,其中該預累加器用以接收並累加每一該資料群組之該些資料值,以產生多個累加值;以及 一乘法累加模組,電性連接該預累加器與該權重映射表,其中該乘法累加模組接收每一該資料群組所對應之該累加值與該權重值,並根據分配律(distributive law)將每一該資料群組所對應之該累加值與該權重值進行相乘與累加,以產生一內積值。
  2. 如請求項1所述之內積計算裝置,其中該反向索引記憶體用以採可變長度編碼(variable length coding)方式儲存每一該資料群組之該資料位址及其對應之該權重索引值。
  3. 如請求項1所述之內積計算裝置,其中該些資料群組對應之該權重值包含正值與負值,該反向索引記憶體以從該正值到該負值之順序儲存其對應之該資料位址。
  4. 如請求項3所述之內積計算裝置,其中該反向索引記憶體以從最小的該負值到最大的該負值之順序儲存其對應之該資料位址,且該最小的該負值對應之該資料位址相較該最大的該負值對應之該資料位址更接近該正值對應之該資料位址。
  5. 如請求項1所述之內積計算裝置,其中該乘法累加模組包括: 一乘法器,電性連接該預累加器與該權重映射表,其中該乘法器用以接收並相乘每一該資料群組所對應之該累加值與該權重值,以產生多個乘積值;以及 一累加器,電性連接該乘法器,其中該累加器用以接收並累加該些乘積值,以產生該內積值。
  6. 如請求項5所述之內積計算裝置,其中該累加器更電性連接一函數處理器,其係對該內積值進行激活(activation)函數、捨入(rounding)函數或飽和(saturation)函數的運算。
  7. 如請求項1所述之內積計算裝置,其中該內積值應用至一神經網路、一濾波器或一相關性計算。
  8. 一種內積計算裝置,包括: 一資料記憶體,用以儲存多個資料群組,其中每一該資料群組包含多個資料值; 一反向索引記憶體(inverted index memory, IIM),用以儲存每一該資料群組在該資料記憶體中的資料位址及其對應之權重值; 一控制器,電性連接該資料記憶體與該反向索引記憶體,其中該控制器用以從該反向索引記憶體中依序取得該些資料群組之該資料位址及其對應之該權重值,並據此驅動該資料記憶體依序輸出該些資料群組之該些資料值,且依序輸出該些資料群組所對應的該權重值; 一預累加器,電性連接該資料記憶體,其中該預累加器用以接收並累加每一該資料群組之該些資料值,以產生多個累加值;以及 一乘法累加模組,電性連接該預累加器與該控制器,其中該乘法累加模組接收每一該資料群組所對應之該累加值與該權重值,並根據分配律(distributive law)將每一該資料群組所對應之該累加值與該權重值進行相乘與累加,以產生一內積值。
  9. 如請求項8所述之內積計算裝置,其中該反向索引記憶體用以採可變長度編碼(variable length coding)方式儲存每一該資料群組之該資料位址及其對應之該權重值。
  10. 如請求項8所述之內積計算裝置,其中該些資料群組對應之該權重值包含正值與負值,該反向索引記憶體以從該正值到該負值之順序儲存其對應之該資料位址。
  11. 如請求項10所述之內積計算裝置,其中該反向索引記憶體以從最小的該負值到最大的該負值之順序儲存其對應之該資料位址,且該最小的該負值對應之該資料位址相較該最大的該負值對應之該資料位址更接近該正值對應之該資料位址。
  12. 如請求項8所述之內積計算裝置,其中該乘法累加模組包括: 一乘法器,電性連接該預累加器與該控制器,其中該乘法器用以接收並相乘每一該資料群組所對應之該累加值與該權重值,以產生多個乘積值;以及 一累加器,電性連接該乘法器,其中該累加器用以接收並累加該些乘積值,以產生該內積值。
  13. 如請求項12所述之內積計算裝置,其中該累加器更電性連接一函數處理器,其係對該內積值進行激活(activation)函數、捨入(rounding)函數或飽和(saturation)函數的運算。
  14. 如請求項8所述之內積計算裝置,其中該內積值應用至一神經網路、一濾波器或一相關性計算。
TW111139529A 2022-10-18 2022-10-18 內積計算裝置 TWI805511B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW111139529A TWI805511B (zh) 2022-10-18 2022-10-18 內積計算裝置
US18/074,245 US20240126508A1 (en) 2022-10-18 2022-12-02 Device for computing an inner product
JP2022195665A JP7485396B2 (ja) 2022-10-18 2022-12-07 内積計算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW111139529A TWI805511B (zh) 2022-10-18 2022-10-18 內積計算裝置

Publications (2)

Publication Number Publication Date
TWI805511B true TWI805511B (zh) 2023-06-11
TW202418064A TW202418064A (zh) 2024-05-01

Family

ID=87803065

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111139529A TWI805511B (zh) 2022-10-18 2022-10-18 內積計算裝置

Country Status (3)

Country Link
US (1) US20240126508A1 (zh)
JP (1) JP7485396B2 (zh)
TW (1) TWI805511B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202030647A (zh) * 2019-01-31 2020-08-16 國立成功大學 降低類神經網路之運算複雜度的系統與方法
CN111723924A (zh) * 2020-05-28 2020-09-29 西安交通大学 一种基于通道共享的深度神经网络加速器
TW202036390A (zh) * 2019-03-15 2020-10-01 華邦電子股份有限公司 可執行人工智慧運算的記憶體晶片及其運算方法
US20200356621A1 (en) * 2016-01-20 2020-11-12 Cambricon Technologies Corporation Limited Vector and matrix computing device
TWI746038B (zh) * 2020-07-02 2021-11-11 阿證科技股份有限公司 類神經網路人工智慧決策核心系統

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0907748A2 (pt) 2008-02-05 2015-07-21 Thomson Licensing Métodos e aparelhos para segmentação implícita de blocos em codificação e decodificação de vídeo
CN110928576A (zh) 2018-09-20 2020-03-27 中兴通讯股份有限公司 一种卷积神经网络的卷积处理方法、装置及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200356621A1 (en) * 2016-01-20 2020-11-12 Cambricon Technologies Corporation Limited Vector and matrix computing device
TW202030647A (zh) * 2019-01-31 2020-08-16 國立成功大學 降低類神經網路之運算複雜度的系統與方法
TW202036390A (zh) * 2019-03-15 2020-10-01 華邦電子股份有限公司 可執行人工智慧運算的記憶體晶片及其運算方法
CN111723924A (zh) * 2020-05-28 2020-09-29 西安交通大学 一种基于通道共享的深度神经网络加速器
TWI746038B (zh) * 2020-07-02 2021-11-11 阿證科技股份有限公司 類神經網路人工智慧決策核心系統

Also Published As

Publication number Publication date
JP7485396B2 (ja) 2024-05-16
US20240126508A1 (en) 2024-04-18
JP2024059535A (ja) 2024-05-01

Similar Documents

Publication Publication Date Title
Samimi et al. Res-DNN: A residue number system-based DNN accelerator unit
Kim et al. A 1-16b precision reconfigurable digital in-memory computing macro featuring column-MAC architecture and bit-serial computation
EP3651074B1 (en) Computation device and method
JP3658079B2 (ja) 演算処理装置及びデータ処理装置
US6038580A (en) DCT/IDCT circuit
TWI263402B (en) Reconfigurable fir filter
CN112434801B (zh) 一种按照比特精度进行权重拆分的卷积运算加速方法
CN110109646A (zh) 数据处理方法、装置和乘加器及存储介质
Yalamarthy et al. Low-complexity distributed-arithmetic-based pipelined architecture for an LSTM network
TWI805511B (zh) 內積計算裝置
Wang et al. PL-NPU: An energy-efficient edge-device DNN training processor with posit-based logarithm-domain computing
Balaji et al. Design of FIR filter with Fast Adders and Fast Multipliers using RNS Algorithm
TWI688895B (zh) 快速向量乘累加電路
Ye et al. Static error analysis and optimization of faithfully truncated adders for area-power efficient FIR designs
TW202418064A (zh) 內積計算裝置
US7945061B1 (en) Scalable architecture for subspace signal tracking
US20210357184A1 (en) Device for computing an inner product
He et al. Background noise adaptive energy-efficient keywords recognition processor with reusable DNN and reconfigurable architecture
Mohanty et al. Efficient multiplierless designs for 1-D DWT using 9/7 filters based on distributed arithmetic
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
Yin et al. A reconfigurable accelerator for generative adversarial network training based on FPGA
Hilaire On the transfer function error of state-space filters in fixed-point context
Stamenković et al. Constant-coefficient FIR filters based on residue number system arithmetic
Ghosh et al. FPGA implementation of MAC unit for double base ternary number system (DBTNS) and its performance analysis
Yang et al. MF-Conv: A Novel Convolutional Approach Using Bit-Resolution-based Weight Decomposition to Eliminate Multiplications for CNN Acceleration