[go: up one dir, main page]

TW202111703A - 重構mac運算 - Google Patents

重構mac運算 Download PDF

Info

Publication number
TW202111703A
TW202111703A TW109129533A TW109129533A TW202111703A TW 202111703 A TW202111703 A TW 202111703A TW 109129533 A TW109129533 A TW 109129533A TW 109129533 A TW109129533 A TW 109129533A TW 202111703 A TW202111703 A TW 202111703A
Authority
TW
Taiwan
Prior art keywords
array
signal
programmed
input
layer
Prior art date
Application number
TW109129533A
Other languages
English (en)
Other versions
TWI869441B (zh
Inventor
馬修 馬堤那
雪哈塔 達思
關安諾德 羅森戴奧
佛朗多 卡爾西亞瑞東度
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202111703A publication Critical patent/TW202111703A/zh
Application granted granted Critical
Publication of TWI869441B publication Critical patent/TWI869441B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/4814Non-logic devices, e.g. operational amplifiers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Nonlinear Science (AREA)
  • Semiconductor Memories (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

本案提供了一種用於執行重構的乘法和累加運算的方法及裝置。加總陣列包括佈置成行的複數個非依電性記憶構件。加總陣列中的每個非依電性記憶構件均基於神經網絡的權重而被程式化為高電阻狀態或低電阻狀態。加總陣列被配置為至少部分地基於複數個輸入訊號為每個行產生加總的訊號。乘法陣列耦接到加總陣列,且包括複數個非依電性記憶構件。乘法陣列中的每個非依電性記憶構件均基於神經網絡的權重而被程式化為不同的電導水平。乘法陣列被配置為至少部分地基於來自加總陣列的加總的訊號產生輸出訊號。

Description

重構MAC運算
本揭示內容大致與機器學習(ML)相關,且更詳細而言是與用於ML應用及處理器的乘法和累加(MAC)運算相關。
基於非依電性記憶體(NVM)的縱橫架構提供了用於執行機器學習演算法(特別是神經網絡)中的MAC運算的替代機構。使用NVM位元單元的混合式訊號方法依賴歐姆定律,利用新興NVM技術(例如相變記憶體(PCM)、電阻式隨機存取記憶體(RRAM)、相關電子隨機存取記憶體(CeRAM)等等)的電阻本性來實施乘法運算。跨NVM位元單元施加電壓偏壓會產生與NVM構件的電導與跨單元的電壓偏壓的乘積成比例的電流。
來自多個位元單元的電流被並行地相加以實施累加總和。因此,歐姆定律與基爾霍夫電流定律的組合並行地實施多個MAC運算。然而,這些在數位域中使用顯式乘法器及加法器來實施時可能會消耗大量能量。
MAC運算用於ML應用中,例如人工神經網絡(ANN),包括深度神經網絡(DNN)、卷積神經網絡(CNN)等等。利用NVM縱橫的MAC加速需要用表示多位元權重參數的精確電導水平來程式化NVM構件。由於固有的器件極限,可以表示的位元精確度限於4或5個位元,這提供了16到32個相異的電導水平。這使權重程式化步驟變得複雜,因為需要精確地程式化NVM位元的整個縱橫陣列(典型的容量為1-10Mb)。
現在將關於隨附的圖式詳細描述本揭示內容的具體實施例。為了簡單說明及清楚說明起見,在適當的情況下,可以在圖式之中重複元件符號以指示對應或類似的構件。此外,闡述了許多具體細節以提供本文中所述的示例的徹底了解。然而,熟習本領域者將了解,可以在沒有這些具體細節的情況下實行本文中所述的示例。在其他的情況下,未詳細描述眾所周知的方法、程序、及元件,以便不使本文中所述的示例變得模糊。並且,不要將本說明認為限制了本文中所述的示例的範圍。
依據本揭示內容,提供了用於重構MAC運算以減少上述此類系統中的程式化步驟的改進技術。
在本揭示內容的一個實施例中,一種裝置包括加總陣列及乘法陣列。加總陣列包括佈置成行的複數個非依電性記憶構件。加總陣列中的每個非依電性記憶構件均基於神經網絡的權重而被程式化為高電阻狀態或低電阻狀態。加總陣列被配置為至少部分地基於複數個輸入訊號為每個行產生加總的訊號。乘法陣列耦接到加總陣列,且包括複數個非依電性記憶構件。乘法陣列中的每個非依電性記憶構件均基於神經網絡的權重而被程式化為不同的電導水平。乘法陣列被配置為至少部分地基於來自加總陣列的加總的訊號產生輸出訊號。
ANN(例如DNN、CNN等等)是對各種有挑戰性的分類、辨識、及回歸問題的流行解決方案。然而,許多ANN模型需要涉及大量權重及激活的大量計算,這帶來了針對存取、儲存、及效能的重大挑戰,特別是對於行動設備及其他電力或儲存受限的設備而言。ANN硬體加速器加速這些計算,舉例而言,例如由CNN所執行的卷積運算。
ANN使用透過學習過程訓練的互連節點的網絡對輸入資料或訊號與輸出資料或訊號之間的關係進行建模。節點被佈置到各種層中,其例如包括輸入層、一或更多個隱藏層、及輸出層。輸入層接收輸入資料(舉例而言,例如影像資料),而輸出層產生輸出資料(舉例而言,例如影像資料包含已知物體的機率)。每個隱藏層均至少提供輸入資料到輸出資料的部分轉換。DNN具有多個隱藏層以對輸入資料與輸出資料之間複雜、非線性的關係進行建模。
在完全連接、前饋的ANN中,每個節點均連接到前一層中的所有節點以及後續的層中的所有節點。例如,每個輸入層節點均連接到每個隱藏層節點,每個隱藏層節點均連接到每個輸入層節點及每個輸出層節點,且每個輸出層節點均連接到每個隱藏層節點。額外的隱藏層類似地互連。每個連接均具有權重值,且每個節點均具有激活函數,舉例而言,例如線性函數、階梯函數、S形(sigmoid)函數、雙曲正切函數、修正線性單元(ReLU)函數等等,所述激活函數基於對節點的輸入的加權總和來決定節點的輸出。輸入資料從輸入層節點透過相應的連接權重傳播到隱藏層節點,隨後透過相應的連接權重傳播到輸出層節點。
更詳細而言,在每個輸入節點處,均將輸入資料提供到節點的激活函數,隨後將激活函數的輸出作為輸入資料值提供到每個隱藏層節點。在每個隱藏層節點處,將從每個輸入層節點所接收的輸入資料值乘以相應的連接權重,且將生成的乘積加總或累加成提供到節點的激活函數的激活值。接著將激活函數的輸出作為輸入資料值提供到每個輸出層節點。在每個輸出層節點處,將從每個隱藏層節點所接收的輸出資料值乘以相應的連接權重,且將生成的乘積加總或累加成提供到節點的激活函數的激活值。接著將激活函數的輸出作為輸出資料提供。可以類似地配置額外的隱藏層以處理資料。
圖1A描繪依據本揭示內容的一個實施例的ANN 10。
ANN 10包括輸入層20、一或更多個隱藏層30、40、50等等、及輸出層60。輸入層20包括一或更多個輸入節點21、22、23等等。隱藏層30包括一或更多個隱藏節點31、32、33、34、35等等。隱藏層40包括一或更多個隱藏節點41、42、43、44、45等等。隱藏層50包括一或更多個隱藏節點51、52、53、54、55等等。輸出層60包括一或更多個輸出節點61、62等等。一般而言,ANN 10包括N個隱藏層,輸入層20包括「i」個節點,隱藏層30包括「j」個節點,隱藏層40包括「k」個節點,隱藏層50包括「m」個節點,而輸出層60包括「o」個節點。
在一個實施例中,N等於3,i等於3,j、k、及m等於5,而o等於2(描繪於圖1中)。輸入節點21耦接到隱藏節點31到35,輸入節點22耦接到隱藏節點31到35,而輸入節點23耦接到隱藏節點31到35。隱藏節點31耦接到隱藏節點41到45,隱藏節點32耦接到隱藏節點41到45,隱藏節點33耦接到隱藏節點41到45,隱藏節點34耦接到隱藏節點41到45,而隱藏節點35耦接到隱藏節點41到45。隱藏節點41耦接到隱藏節點51到55,隱藏節點42耦接到隱藏節點51到55,隱藏節點43耦接到隱藏節點51到55,隱藏節點44耦接到隱藏節點51到55,而隱藏節點45耦接到隱藏節點51到55。隱藏節點51耦接到輸出節點61及62,隱藏節點52耦接到輸出節點61及62,隱藏節點53耦接到輸出節點61及62,隱藏節點54耦接到輸出節點61及62,而隱藏節點55耦接到輸出節點61及62。
圖1B描繪依據本揭示內容的一個實施例的使用MAC運算的ANN的高階方塊圖100。
MAC運算可以由等式1所表示,其中將元素b及元素c相乘、與值a相加、儲存在累加器中、隨後作為新的值a儲存在累加器中。 a ← a + ( b • c )        (等式1)
MAC群組的組成可以表示點積及向量-矩陣乘法。圖1B表示簡單、多層的完全連接的ANN 100,例如ANN 10。第一層103-1中的神經元中的每一者均執行輸入向量102與矩陣104中的對應權重之間的MAC運算。將激活函數應用於部分結果,且產生輸出向量,輸出向量作為輸入向量提供到下一層(即第二層103-2)。此過程發生在每個層中的每一個神經元。例如,最後一個層103-L執行前一層的輸出向量與矩陣104中的對應權重之間的MAC運算。將激活函數應用於部分結果,且產生輸出向量106。在許多實施例中,輸出層可以跟隨層103-L。
CNN可以用於分類或辨識應用,例如影像辨識、語音辨識等等。CNN具有輸入層、輸出層、及多個隱藏層,此等隱藏層包括卷積層、池化層、歸一化層、全連接層等等。每個卷積層均將滑動的點積或互相關應用於輸入體積(input volume)、將激活函數應用於結果、隨後向下一層提供激活體積(activation volume)或輸出體積(output volume)。卷積層一般將ReLU函數用作激活函數。在某些實施例中,在單獨的激活層(舉例而言,例如ReLU層)中提供激活函數。池化層減少從前一個卷積層所接收的輸出體積的維度,且可以在小的資料團簇(舉例而言,例如2x2矩陣)上計算平均值或最大值。在某些實施例中,卷積層及池化層可以形成CNN的單個層。全連接層跟隨卷積層及池化層,且包括扁平層(flatten layer)及分類層,接著是包括歸一化函數(例如SoftMax函數)的歸一化層。輸出層跟隨最後一個全連接層;在某些實施例中,輸出層可以包括歸一化函數。
圖2A描繪依據本揭示內容的一個實施例的CNN 15。
CNN 15包括輸入層20、一或更多個隱藏層(例如卷積層30-1、池化層30-2、隱藏(扁平)層40、隱藏(分類)層50等等)、及輸出層60。可以預期輸入層、隱藏層、及輸出層的許多其他變型。
輸入層20包括一或更多個輸入節點21等等,其將輸入資料(例如彩色影像)作為輸入體積向第一卷積層(例如卷積層30-1)呈現。輸入體積是具有寬度、高度、及深度的三維矩陣。例如,將表示彩色影像的輸入資料作為輸入體積來呈現,輸入體積為512個像素x512個像素x3個通道(紅色、綠色、藍色);也可以使用其他的輸入體積尺度,例如32x32x3、64x64x3、128x128x3、等等、32x32x1、64x64x1、128x128x1、512x512x1等等。
卷積層30-1局部地連接到輸入層20,且包括連接到輸入體積中的局部區域的複數個節點(為了明確起見未描繪)。對於使用標準卷積的CNN而言,每個節點計算節點的權重與輸入體積的相應局部區域之間的點積。接著向每個卷積計算的結果應用激活函數以產生輸出體積,將輸出體積作為輸入體積提供到後續的層。激活函數可以由每個卷積層節點或由後續的局部地連接的ReLU層的節點應用。
池化層30-2局部地連接到卷積層30-1,且包括連接到輸入體積中的局部區域的複數個節點(為了明確起見未描繪)。池化層30-2也產生作為輸入體積提供到後續的層(舉例而言,例如另一個卷積層30-1、扁平層40等等)的輸出體積。在某些實施例中,卷積層30-1及池化層30-2形成單個隱藏層30。類似地,在某些實施例中,卷積層30-1、ReLU層、及池化層30-2形成單個隱藏層30。一般而言,可以將卷積層及池化層的輸出體積描述為特徵圖,且一或更多個單個隱藏層30形成CNN 15的特徵學習部分。
隱藏層40是局部地連接到池化層30-2的「扁平」層,且包括一或更多個隱藏(扁平)節點41、42、43、44、45等等。隱藏(扁平)層40使由前一池化層30-2所產生的輸出體積「扁平」成行向量,此行向量被提供到後續的全連接的隱藏層50。
隱藏層50是全連接到隱藏(扁平)層40的分類層,且包括一或更多個隱藏(分類)節點51、52、53、54、55等等。
輸出層60包括一或更多個輸出節點61、62等等,且全連接到隱藏(分類)層50。全連接的輸出層60接收由隱藏(分類)層50所輸出的分類結果,而每個節點均輸出預測的類別分數。可以由輸出層60或者由介於隱藏(分類)層50與輸出層60之間的額外層將歸一化函數(例如Softmax函數)應用於預測的類別分數。
圖2B描繪依據本揭示內容的一個實施例的CNN 15的卷積層30內的卷積運算200。卷積層一般包括「M」個過濾器、「C」個輸入通道、「C」個輸入特徵圖(即每個輸入通道均有一個輸入特徵圖)、及「M」個輸出特徵圖(即每個過濾器均有一個輸出特徵圖)。每個過濾器均具有「C」個權重集合(即每個過濾器均每個輸入通道有一個權重集合),且跨輸入特徵圖進行卷積以產生與過濾器對應的輸出特徵圖。卷積層一般需要移動大量的資料、產生顯著的計算負載、且需要相當大小的緩存器來儲存中間值。
更詳細而言,卷積運算200包括「M」個過濾器2021 、2022 、…、202M 、包括「C」個輸入資料矩陣2041 、2042 、...、204N (即N等於C)的輸入特徵圖204、及包括「M」個輸出資料矩陣2061 、2062 、...、206M 的輸出特徵圖206。出於說明的目的,每個過濾器內的權重集合均包括2x2的權重矩陣,每個輸入特徵圖均包括6x6的輸入資料矩陣,而每個輸出特徵圖均包括5x5的輸出資料矩陣。對於圖2B中所示的特定佈置而言,運算總數為2x2xNx5x5xM。
圖2C描繪依據本揭示內容的一個實施例的CNN 15的另一種卷積層運算201。卷積層運算201是卷積層運算200的簡化版本,此簡化版本包括三個輸入通道(即「C」及「N」等於3)及單個過濾器2021 (即「M」等於1)。
輸入特徵圖204(6x6x3)包括輸入資料矩陣2041 、輸入資料矩陣2042 、及輸入資料矩陣2043 ,過濾器2021 (2x2x3)包括權重矩陣2021.1 (w1 )、權重矩陣2021.2 (w2 )、及權重矩陣2021.3 (w3 ),而輸出資料矩陣2061 (5x5x1)包括輸出資料矩陣。過濾器2021 與輸入特徵圖204進行卷積以產生具有單個輸出資料矩陣2061 的輸出特徵圖206。在此示例中,輸出資料矩陣元素o1 是過濾器2021.1 (w1 )與輸入資料矩陣2041 的左上四分部(a1 q1 )的點積、過濾器2021.2 (w2 )與輸入資料矩陣2042 的左上四分部(a2 q1 )的點積、及過濾器2021.3 (w3 )與輸入資料矩陣2043 的左上四分部(a3 q1 )的點積的總和。
更詳細而言,過濾器2021.1 (w1 )與輸入資料矩陣2041 的左上四分部(a1 q1 )的點積等於w1 1 • a1 1 + w1 2 • a1 2 + w1 3 • a1 7 + w1 4 • a1 8 。過濾器2021.2 (w2 )與輸入資料矩陣2042 的左上四分部(a2 q1 )的點積及過濾器2021.3 (w3 )與輸入資料矩陣2043 的左上四分部(a3 q1 )的點積用相同的方式計算,即過濾器2021.2 (w2 )與輸入資料矩陣2042 的左上四分部(a2 q1 )的點積等於w2 1 • a2 1 + w2 2 • a2 2 + w2 3 • a2 7 + w2 4 • a2 8 ,而過濾器2021.3 (w3 )與輸入資料矩陣2043 的左上四分部(a3 q1 )的點積等於w3 1 • a3 1 + w3 2 • a3 2 + w3 3 • a3 7 + w3 4 • a3 8
輸出資料矩陣元素o2 是過濾器2021.1 (w1 )與輸入資料矩陣2041 的下一個上四分部的點積、過濾器2021.2 (w2 )與輸入資料矩陣2042 的下一個上四分部的點積、及過濾器2021.3 (w3 )與輸入資料矩陣2043 的下一個上四分部的點積的總和。每個輸入資料矩陣2041 、2042 、及2043 中的「下一個」上四分部相對於第一個上四分部向右移動一行。
更詳細而言,過濾器2021.1 (w1 )與輸入資料矩陣2041 的下一個左上四分部的點積等於w1 1 • a1 2 + w1 2 • a1 3 + w1 3 • a1 8 + w1 4 • a1 9 。過濾器2021.2 (w2 )與輸入資料矩陣2042 的下一個左上四分部的點積及過濾器2021.3 (w3 )與輸入資料矩陣2043 的下一個左上四分部的點積用相同的方式計算,即過濾器2021.2 (w2 )與輸入資料矩陣2042 的左上四分部(a2 q1 )的點積等於w2 1 • a2 2 + w2 2 • a2 3 + w2 3 • a2 8 + w2 4 • a2 9 ,而過濾器2021.3 (w3 )與輸入資料矩陣2043 的左上四分部(a3 q1 )的點積等於w3 1 • a3 2 + w3 2 • a3 3 + w3 3 • a3 8 + w3 4 • a3 9
其餘的輸出資料矩陣元素o3 到o5 用類似的方式計算。在已經計算了輸出資料矩陣元素o5 之後,每個輸入資料矩陣2041 、2042 、及2043 中的「下一個」四分部一直移動到最左行且向下移動一列以供計算輸出資料矩陣元素o6 。接著藉由將每個輸入資料矩陣2041 、2042 、及2043 中的四分部向右移動一行來計算輸出資料矩陣元素o7 到o10 。其餘輸出資料矩陣元素o11 到o15 、o16 到o20 、及o21 到o25 用類似的方式計算。
一般而言,由於通常需要複雜的資料流及昂貴的資料路徑,不由CNN執行原生的卷積運算。而是,將原生的卷積運算轉換成通用矩陣乘法(GEMM)運算,隨後使用最佳化的軟體程序庫或專用硬體藉由中央處理單元(CPU)、專用處理器、硬體加速器處理引擎等等來更高效地執行GEMM運算。更詳細而言,可以使用「IM2COL」軟體函數來將每個卷積運算的過濾器(權重)矩陣及輸入特徵圖(IFM)矩陣轉換成與GEMM運算相容的擴充格式。將每個過濾器(權重)矩陣及每個IFM矩陣的IM2COL版本產生及儲存在記憶體中,隨後從記憶體加載及由GEMM運算處理。
圖2D描繪依據本揭示內容的一個實施例的CNN的轉換的卷積層運算。
在一個實施例中,可以將執行在中央處理器單元(CPU)上的CNN的卷積層運算轉換成通用矩陣乘法(GEMM)運算。藉由將過濾器2021 轉換成轉換的權重矩陣212(1x12)及將輸入特徵圖204轉換成轉換的輸入資料矩陣214(12x25),來將卷積層運算201轉換成GEMM運算。在將轉換的權重矩陣212與轉換的輸入資料矩陣214相乘之後,接著將轉換的輸出資料矩陣216(1x25)重整成輸出資料矩陣2061 (5x5)。為了容易說明起見,用簡略的形式描繪轉換的輸入資料矩陣214。
在此示例中,轉換的輸出資料矩陣元素o1 是轉換的權重矩陣212的第一列(即唯一的一列)與轉換的輸入資料矩陣214的第一行的點積的總和。如圖1B中所示,轉換的權重矩陣212包括過濾器2021.1 (w1 )、過濾器2021.2 (w2 )、及過濾器2021.3 (w3 ),而轉換的輸入資料矩陣214的第一列包括輸入資料矩陣2041 的左上四分部(a1 q1 )、輸入資料矩陣2042 的左上四分部(a2 q1 )、及輸入資料矩陣2043 的左上四分部(a3 q1 )的元素。
更詳細而言,轉換的輸出資料矩陣元素o1 等於w1 1 • a1 1 + w1 2 • a1 2 + w1 3 • a1 7 + w1 4 • a1 8 + w2 1 • a2 1 + w2 2 • a2 2 + w2 3 • a2 7 + w2 4 • a2 8 + w3 1 • a3 1 + w3 2 • a3 2 + w3 3 • a3 7 + w3 4 • a3 8 。如上所示,轉換的輸出資料矩陣元素o1 等於輸出資料矩陣元素o1
圖3A描繪依據本揭示內容的一個實施例使用NVM縱橫301來實施的圖2D的卷積層運算的一部分。
NVM縱橫301包括十二個列訊號線308(即列訊號線3081 、…、30812 )及單個行訊號線312。位元單元設置在列訊號線308與行訊號線312的每個交點處。每個位元單元均包括一或更多個NVM構件,其被程式化為表示與過濾器2021 的特定權重(即w1 1 、w1 2 等等)成比例的電導值。電導由g1 1 、g1 2 、g1 3 、g1 4 、g2 1 、g2 2 、g2 3 、g2 4 、g3 1 、g3 2 、g3 3、及g3 4 所表示,其分別與權重w1 1 、w1 2 、w1 3 、w1 4 、w2 1 、w2 2 、w2 3 、w2 4 、w3 1 、w3 2 、w3 3 、及w3 4 成比例。
為了計算轉換的輸出資料矩陣216的第一元素(即o1 ),分別沿著列訊號線3081 、…、30812 將來自轉換的輸入資料矩陣214的第一行的輸入資料作為輸入a1 1 、a1 2 、a1 7 、a1 8 、a2 1 、a2 2 、a2 7 、a2 8 、a3 1 、a3 2 、a3 7 、及a3 8 提供到縱橫302。藉由數位轉類比轉換器(DAC)310將輸入資料轉換成類比電壓v1 1 、v1 2 、v1 7 、v1 8 、v2 1 、v2 2 、v2 7 、v2 8 、v3 1 、v3 2 、v3 7 、及v3 8 ,且提供到行訊號線312。行訊號線312傳遞位元線(BL)訊號,該位元線訊號與沿著行訊號線312的輸入資料跟權重的累加點積成比例。接著使用類比轉數位轉換器(ADC)數位化BL訊號;可以向數位化的訊號應用偏置、縮放、及激活函數以獲得轉換的輸出資料矩陣216的第一元素(即o1 )。
圖3B描繪依據本揭示內容的一個實施例使用NVM縱橫302來實施的卷積層運算的架構300。
NVM縱橫302包括列訊號線308(即列訊號線3081 、3082 、…、308L )及行訊號線312(即行訊號線3121 、3122 、…、312M )。位元單元314設置在列訊號線308與行訊號線312的每個交點處,即位元單元31411 、…、314LM 。每個位元單元314均包括一或更多個NVM構件,其被程式化為表示與特定過濾器202的特定權重(舉例而言,例如過濾器2021 的W0 11 等等)成比例的電導值。在第一行(即行訊號線3121 )中,電導被描繪為G0 11 、G0 12 、…、GC 21 、GC 22
由於低電阻狀態(LRS)RON 與高電阻狀態(HRS)ROFF 之間寬的間隔,將多個線性分離的電阻水平編碼在個別的位元單元內一般是有用的。在相關電子材料RAM(CeRAM)的情況下,HRS/LRS比率至少為2個數量級,這支援4位元的編碼(即16個電阻水平)。
將來自輸入特徵圖204的資料沿著列訊號線3081 、…、308L 作為輸入I0 11 、…、IC 22 提供到縱橫302、由數位轉類比轉換器(DAC)轉換成類比電壓V0 11 、…、VC 22 、及跨NVM單元傳遞。在此實施例中,L等於輸入通道的數量的四倍,即2x2xC。DAC包括DAC構件3101 、…、310L 。行訊號線3121 、…、312M 傳遞對應的位元線(BL)訊號BL1 、…、BLM ,此等位元線訊號中的每一者均與沿著行訊號線的輸入資料與權重的累加的點積成比例。接著使用類比轉數位轉換器(ADC)來數位化每個BL訊號;可以向數位化的訊號應用偏置、縮放、及激活函數以獲得輸出特徵圖206的輸出資料。
在M個過濾器及C個輸入通道的情況下將卷積層運算映射到NVM縱橫的操作大致描繪於圖3B中。在某些實施例中,權重是固定的,即權重被程式化到NVM縱橫中一次,且在推斷操作的過程期間不改變。典型的NVM構件(舉例而言,例如相變記憶體及電阻式RAM)具有有限的寫入「耐久力」,且有可能對它們進行有限次數(例如大約108 次)的寫入,而在那之後,器件會出現功能故障。其他的NVM構件(舉例而言,例如磁式RAM及CeRAM)可能展現相對較高的耐久力(接近1012 ),但連續操作可能導致壽命受限。因此,此類壽命限制對依賴每個推斷循環均更新權重的加速器架構構成了顯著的約束。
例如,對於在100 MHz下操作的IoT類別的加速器而言,對於使用率達峰值的情況而言,具有108 的耐久力的加速器可以具有1秒的壽命,而具有1012 的耐久力的加速器可以具有10,000秒或4天的壽命。不幸地,此類權重實際上不能從外部DRAM流出,且必須固定在晶片上。進一步地,NVM位元單元遭受高的寫入功率及必然的昂貴的功耗,這可能影響更新操作的高效效能。因此,寫入階段可能是有問題的,且花費長時間才能完成。
此類佈置與SRAM行為(其具有顯著較高的寫入耐久力)不同,且可能經不起在推斷期間重新程式化權重。結果是,可能需要將整個ANN展開成晶載縱橫,且在推斷期間固定。雖然此選項有利於消除DRAM功耗,但這也可能不合需要地限制可以程式化在晶片上的ANN的最大尺寸。進一步地,此選項也招致面積損失,因為映射較大的ANN需要實例化百萬位元容量的縱橫。這消耗了較大的面積且增加了對由良率損失引起的晶片故障的易感性。並且,實例化多個縱橫需要實例化多個ADC/DAC,所有這些都需要進行程式化、修整、及補償漂移。
NVM/CeRAM構件是一種特殊類型的隨機存取記憶體,其完全地或部分地由相關電子材料所形成。CeRAM可以展現陡變的導電或絕緣狀態過渡,其由電子相關性所引起,而不是由固態結構相改變(舉例而言,例如電阻式RAM器件中的絲狀形成及傳導)所引起。與熔化/凝固或絲狀體形成相比,CeRAM中的陡變導體/絕緣體過渡可能是響應於量子力學現象而發生。
可以從莫特躍遷的角度了解CeRAM在絕緣狀態與導電狀態之間的量子力學躍遷。在莫特躍遷中,若莫特躍遷條件發生,則材料可以從絕緣狀態切換到導電狀態。在實現臨界載子濃度使得滿足莫特準則時,莫特躍遷將發生,且狀態將從高電阻/阻抗(或電容)改變為低電阻/阻抗(或電容)。
CeRAM構件的「狀態」或「記憶體狀態」可以取決於CeRAM構件的阻抗狀態或導電狀態。在此背景脈絡下,僅舉數例,「狀態」或「記憶體狀態」意指記憶器件的指示值、符號、參數、或條件的可偵測狀態。在一個特定的實施方式中,可以至少部分地基於在讀取操作中在記憶器件的端子上偵測到的訊號來偵測記憶器件的記憶體狀態。在另一個實施方式中,藉由在「寫入操作」中跨記憶器件的端子施加一或更多個訊號,可以將記憶器件置於特定的記憶體狀態以表示或儲存特定的值、符號、或參數。
CeRAM構件可以包括夾在導電終端之間的材料。藉由在端子之間施加特定的電壓及電流,材料可以在上述的導電狀態與絕緣狀態之間過渡。可以藉由在重設電流密度下跨具有重設電壓及重設電流的端子施加第一程式化訊號,來將夾在導電端子之間的CeRAM構件的材料置於絕緣狀態,或藉由在設定電流密度下跨具有設定電壓及設定電流的端子施加第二程式化訊號,來將材料置於導電狀態。
關於NVM縱橫301及302,沿著每個行訊號線312的輸入資料與權重的累加的點積可以由等式2所表示,此等式表示簡單的MAC運算。將每個輸入資料值(即電壓Vi )乘以適當的權重(即電導Gi ),且將乘積累加成結果(即沿著BL的電流)。
Figure 02_image001
(等式2)
本揭示內容的實施例有利地將每個行訊號線312的MAC運算重構成電壓Vi 的初始總和,此等電壓要乘以特定的電導值Gk ,接著是累加每個電壓總和與彼特定電導值Gk 的乘積的MAC運算。在某些實施例中,電導值可以由4位元(k位元)數字所表示,這提供了16個不同的值(K個值),舉例而言,例如G1 、G2 、G3 、G4 、G5 、G6 、G7 、G8 、G9 、G10 、G11 、G12 、G13 、G14 、G15 、及G16 。也預期其他的位元尺寸,舉例而言,例如2位元、3位元等等。
例如,關於圖3A,電導g1 1 可以具有值G1 ,電導g1 2 可以具有值G2 ,電導g1 3 可以具有值G3 ,電導g1 4 可以具有值G4 ,電導g2 1 可以具有值G3 ,電導g2 2 可以具有值G4 ,電導g2 3 可以具有值G5 ,電導g2 4 可以具有值G6 ,電導g3 1 可以具有值G5 ,電導g3 2 可以具有值G6 ,電導g3 3 可以具有值G7 ,而電導g3 4 可以具有值G8
在此示例中,電導g1 3 及g2 1 具有相同的電導G3 ,電導g1 4 及g2 2 具有相同的電導G4 ,電導g2 3 及g3 1 具有相同的電導G5 ,電導g2 4 及g3 2 具有相同的電導G6 。因此,可以首先加總V1 7 及V2 1 ,隨後在後續的MAC運算期間乘以電導G3 ,可以首先加總V1 8 及V2 2 ,隨後在後續的MAC運算期間乘以電導G4 ,可以首先加總V2 7 及V3 1 ,隨後在後續的MAC運算期間乘以電導G5 ,且可以首先加總V2 8 及V3 2 ,隨後在後續的MAC運算期間乘以電導G6
此外,可以將其餘電壓設定為零(0)且隨後可以在起初加總所有的電壓,而不是僅加總要乘以特定電導值Gk 的電壓Vi 。在上述示例中,對於電導G3 而言,將其他10個電壓設定為零(即V1 1 、V1 2 、V1 8 、V2 2 、V2 7 、V2 8 、V3 1 、V3 2 、V3 7 、及V3 8 ),隨後加總所有電壓。一般而言,對於每個電導值(包括要乘以單個電壓的電導)均重複此過程。在上述示例中,對於電導G1 而言,將其他11個電壓設定為零(即V1 2 、V1 7 、V1 8 、V2 1 、V2 2 、V2 7 、V2 8 、V3 1 、V3 2 、V3 7 、及V3 8 ),隨後加總所有電壓。
每個行訊號線312的重構的MAC運算均可以由等式3及4所表示。
Figure 02_image003
(等式3)
Figure 02_image005
(等式4) 其中,對於每個輸入資料值L而言,在Gk 不與輸入資料值的適當權重對應時,將Vi 設定為零(0)。
有利地,如由等式4所表示地重構MAC運算造成了一種較簡單的實施方式,其中起初對所有輸入被乘數都進行加法以取決於它們是否以特定的權重值考慮到MAC運算中而有條件地與輸入激活相加。可以使用NVM構件來進行初始加法運算。然而,依據本揭示內容的實施例,這些NVM構件不需要被精確地程式化。利用二進制權重編碼(RON /ROFF )來將輸入激活連接到權重值而無需精確程式化。
圖4A描繪依據本揭示內容的一個實施例的重構的MAC運算的架構401的示意圖。在此實施例中,架構401包括DAC模塊402、縱橫404、及乘法器/縮放模組406。
一般而言,縱橫404包括MxN個構件。在此實施例中,M等於12,N等於16,且縱橫404包括提供在12個列訊號線4101 、…、41012 與16個行訊號線4121 、…、41216 的每個接面處的192個構件、節點、或位元單元4081,1 、…、40812,16 。每個相應的位元單元4081,1 、…、40812,16 均包括由si j 所表示的一或更多個NVM構件以儲存彼位元單元的狀態(例如RON /ROFF )。位元單元408在第一阻抗狀態與第二阻抗狀態(RON /ROFF )之間可切換。
乘法器/縮放模組406包括16個位元單元4071 、…、40716 ,其分別具有可程式化的電導或阻抗g1 、g2 、g3 、g4 、g5 、g6 、g7 、g8 、g9 、g10 、g11 、g12 、g13 、g14 、g15 、及g16 ,此等電導或阻抗被配置為與16個不同的權重值w1 、w2 、w3 、w4 、w5 、w6 、w7 、w8 、w9 、w10 、w11 、w12 、w13 、w14 、w15 、及w16 對應。
將輸入資料(即a1 1 、a1 2 、a1 7 、a1 8 、a2 1 、a2 2 、a2 7 、a2 8 、a3 1 、a3 2 、a3 7 、及a3 8 )提供到DAC模塊402、轉換成類比電壓v1 1 、v1 2 、v1 7 、v1 8 、v2 1 、v2 2 、v2 7 、v2 8 、v3 1 、v3 2 、v3 7 、及v3 8 ,隨後提供到相應的列訊號線4101 、…、41012 。首先藉由將位元單元40811 、…、408MN 置於RON /ROFF 狀態來在縱橫404中將電壓加總在一起,其中NVM構件不需要精確程式化。
在上述的示例中,與要針對特定的電導值加總的電壓相關聯的位元單元408被設定為RON 狀態。這些位元單元408包括NVM構件s1 1 、s2 2 、s3 3 、s4 4 、s5 3 、s6 4 、s7 5 、s8 6 、s9 5 、s10 6 、s11 7 、及s12 8 (由圖4A中的虛線圓圈所標識)。其餘的NVM構件被設定為ROFF 狀態,這提供了零的電壓值。
將來自每個行訊號線4121 、…、41216 的加總的訊號輸入到乘法器/縮放模組406的相應的位元單元4071 、…、40716 ,且在乘法器/縮放模組406中的單個行中進行MAC運算,其中所有構件都被精確地程式化(共16個構件)。
一般而言,轉換的輸入資料矩陣214包括提供到DAC模塊402的輸入資料值的總數(一次提供輸入資料值的一個行)。在圖2D中所描繪的示例中,輸入資料矩陣中的輸入資料值的總數為300(即12x25)。因此,輸入資料訊號(例如a1 1 、...、a3 8 )是選自一定總數(例如300個)的輸入訊號的M(例如12)個輸入訊號的集合,總數顯著地大於N(例如16)。
圖4B描繪依據本揭示內容的一個實施例的重構的MAC運算的架構400的示意圖。在此實施例中,架構400包括M個DAC 4031 、…、403M 的DAC模塊402、縱橫404、及乘法器/縮放模組406。
在許多實施例中,架構400對單個過濾器202的權重進行編碼,且為過濾器202產生單個輸出特徵圖206。在其他的實施例中,可以為每個過濾器202均提供一個單獨的縱橫404及乘法器/縮放模組406對以為過濾器202產生輸出特徵圖206。每個縱橫404及乘法器/縮放模組406對均可以耦接到共同的DAC模塊402。
如所示,縱橫404包括提供在列訊號線4101 、4102 、4103 、…、410M 與行訊號線4121 、4122 、4123 、…、412N 的每個接面處的MxN個構件、節點、或位元單元40811 、…、408MN 。每個相應的位元單元40811 、…、408M,N 均包括一或更多個NVM構件以儲存位元單元的狀態(例如RON /ROFF )。如上所述,位元單元408在第一阻抗狀態與第二阻抗狀態(RON /ROFF )之間可切換。
乘法器/縮放模組406包括位元單元4071 、…、407N ,其具有被程式化為與權重w_0、w_1、w_K-1對應的可程式化的電導或阻抗。如上所述,首先藉由使位元單元40811 、…、408MN 置於RON /ROFF 狀態來在縱橫404中將沿著相應的列訊號線4101 、4102 、4103 、…、410M 的輸入資料(舉例而言,例如激活a_0、a_1、...、a_M-1)加總在一起,其中NVM構件不需要精確程式化。在此實施例中,位元單元4081,1 、…、408MN 之中的某些位元單元如所示地在阻抗狀態之間切換。將來自每個行N的加總的訊號輸入到乘法器/縮放模組406的相應的位元單元4071 、…、407N ,且在乘法器/縮放模組406中的單個行中進行最終的MAC計算,其中所有構件都被精確地程式化(共N個構件)。
圖5描繪依據本揭示內容的一個實施例的重構的MAC運算的低精確度程式化過程500的流程圖。
在圖4B中所描繪的實施例中,縱橫404包括MxN個構件,而乘法器/縮放模組406包括N個不同的權重值;k是每個權重值的位元尺寸(即位元數),且N = K = 2k 。MxN個構件是低精確度(或二進制)程式化的NVM構件,而N個構件是高精確度程式化的NVM構件。
在方塊502中,過程被初始化且繼續進行到低精確度寫入迴圈的方塊504。在方塊504中,更新縱橫404的構件的索引。在方塊506中,讀取縱橫404的每個構件的二進制電阻或電導Gb 。接著,在方塊508中,對縱橫404的每個構件的Gb 進行寫入。過程終止在方塊510處。在此實施例中,將MxN個構件程式化為「0」(ROFF )或「1」(RON )中的任一者。從此處開始,乘法器/縮放模組406的構件被精確程式化。
圖6描繪依據本揭示內容的一個實施例的乘法器/縮放模組406的高精確度程式化過程600的流程圖。
在方塊602中,過程被初始化且繼續進行到高精確度寫入迴圈的方塊604。在方塊604中,更新乘法器/縮放模組406的構件的索引。在方塊606中,讀取乘法器/縮放模組406的每個構件的多重水平電阻或電導G。高精確度運算將電導或電阻率改變成非常精確的已知值。接著,在方塊608中,為乘法器/縮放模組406的每個構件調整多重水平G。接著,在方塊610中,讀取多重水平G,且在方塊612中驗證正確的多重水平G。若多重水平G正確,則過程迴圈回到方塊604,否則過程回到方塊608以供進一步調整。過程終止在方塊614處。
圖7描繪依據本揭示內容的一個實施例用於在神經網絡中執行乘法-累加加速的方法的流程圖700。
方法在方塊702處初始化,且繼續進行到方塊704,方塊704與圖5中所示的低精確度程式化過程500對應。關於圖4B,在低精確度程式化過程500中,向加總陣列(即縱橫404)應用輸入激活a_0、a_1、…、a_M-1。藉由低精確度程式化過程500由加總陣列中的NVM構件的每個行產生加總的訊號。過程繼續進行到方塊706,其與圖6中所示的高精確度程式化過程600對應。在高精確度程式化過程600中,將加總的訊號輸入到具有複數個NVM構件的乘法陣列(即乘法器/縮放模組406)。在方塊706中,如圖6的流程圖中所示,乘法陣列中的每個NVM構件均被精確地程式化為與權重成比例的電阻或電導水平。過程終止在方塊708處。
本說明書中對於「一個實施例」或「一實施例」的指稱意指,與實施例結合描述的特定的特徵、結構、或特性被包括在系統的至少一個實施例中。本說明書中各種地方中的語句「在一個實施例中」的出現不一定全都指相同的實施例。
本揭示內容的實施例在本文中參照依據本揭示內容的實施例的方法、裝置(系統)、及電腦程式產品的流程插圖及/或方塊圖來描述。將了解,流程插圖及/或方塊圖的每個方塊、及流程插圖及/或方塊圖中的方塊組合可以由電腦可讀取程式指令所實施。
詳細說明的一些部分(像是過程)可以從對電腦記憶體內的資料位元進行的運算的演算法及符號表示的角度來呈現。一般可以將演算法設想為導致所需結果的步驟。此等步驟是需要對物理量進行物理變換或操控的彼等步驟。通常,雖然未必,這些量採取能夠被儲存、傳輸、結合、比較及以其他方式操控的電或磁訊號的形式。將這些訊號指稱為位元、值、構件、符號、特性、項目、數字等等有時是合宜的(主要為了一般用途的理由)。
然而,應牢記,所有的這些用語及相似的用語要與適當的物理量相關聯且僅為應用於這些量的合宜標籤。從以下論述可以清楚看出,除非另有具體指出,否則要理解,在整篇說明書內,利用諸如「處理」或「計算」或「決定」或「導出」或「顯示」等等的用語的論述指的是電腦系統或類似電子計算設備的動作及過程,此等動作及過程將表示為電腦系統的暫存器及記憶體內的物理(電子)量的資料操控及變換成類似地表示為電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸、或顯示設備內的物理量的其他資料。
可以由一種裝置執行本文中所述的操作。此裝置可以出於所需的目的被特別建構,或可以包括通用電腦,通用電腦被儲存在電腦中的電腦程式選擇性地啟動或重新配置。可以將此類電腦程式儲存在電腦可讀取儲存媒體中,例如但不限於任何類型的碟片、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、EPROM、EEPROM、磁卡或光卡、或適於儲存電子指令的任何類型的媒體。如本文中所使用的電腦可讀取儲存媒體本身不被解釋為暫時性訊號,例如無線電波或其他自由傳播的電磁波、透過波導器或其他傳輸媒體傳播的電磁波(例如透過光纖纜線傳遞的光脈波)、或透過電線傳送的電訊號。
因此,本揭示內容的實施例及特徵包括但不限於前述及以下的可組合實施例。
在一個實施例中,一種裝置包括縱橫及乘法器。縱橫包括佈置在列和行的陣列中的複數個縱橫節點,每個縱橫節點均可程式化為第一電阻水平或第二電阻水平,且縱橫被配置為在縱橫節點的每個行上加總複數個類比輸入激活訊號及輸出複數個加總的激活訊號。乘法器耦接到縱橫,且包括複數個乘法器節點,每個乘法器節點均可程式化為與複數個神經網絡權重中的一者成比例的不同的電導水平,且乘法器被配置為在乘法器節點上加總複數個加總的激活訊號及輸出類比輸出激活訊號。
在裝置的另一個實施例中,每個縱橫節點均包括一或更多個非依電性構件(NVM),且每個乘法器節點均包括複數個NVM。
在裝置的另一個實施例中,縱橫包括M個列、N個行、及MxN個縱橫節點,且乘法器包括N個乘法器節點。
在裝置的另一個實施例中,裝置更包括:複數個數位轉類比轉換器(DAC),耦接到縱橫,每個DAC均被配置為接收數位輸入激活訊號及輸出複數個類比輸入激活訊號中的一者。
在裝置的另一個實施例中,基於神經網絡權重的位元尺寸(k)來將每個乘法器節點中的每個非依電性記憶構件程式化為不同的電導水平。
在裝置的另一個實施例中,電導水平的總數等於2k
在一個實施例中,一種方法包括以下步驟:在包括佈置成行的複數個非依電性記憶構件的加總陣列中,至少部分地基於複數個輸入訊號來為每個行產生加總的訊號,基於神經網絡的權重來將加總陣列中的每個非依電性記憶構件程式化為高電阻狀態或低電阻狀態;及在包括複數個非依電性記憶構件的乘法陣列中,至少部分地基於來自加總陣列的此等加總的訊號來產生輸出訊號,基於神經網絡的權重將乘法陣列中的每個非依電性記憶構件程式化為不同的電導水平。
在方法的另一個實施例中:加總陣列中的每個非依電性記憶構件均被配置為接收輸入訊號及基於程式化的電阻狀態將輸入訊號與相應的行的加總的訊號相加;乘法陣列中的每個非依電性記憶構件均被配置為從加總陣列的不同的行接收加總的訊號及基於程式化的電導水平來調整加總的訊號以產生調整的加總的訊號;及輸出訊號是此等調整的加總的訊號的組合。
在方法的另一個實施例中,加總陣列中的每個非依電性記憶構件均被配置為在被程式化為低電阻狀態時將輸入訊號與相應的行的加總的訊號相加,及在被程式化為高電阻狀態時不將輸入訊號與相應的行的加總的訊號相加。
在方法的另一個實施例中,加總陣列是具有M個列、N個行、及MxN個非依電性記憶構件的縱橫,且其中乘法陣列具有N個構件。
在方法的另一個實施例中,複數個輸入訊號是選自一定總數的輸入訊號的M個輸入訊號的集合,總數顯著地大於N。
在方法的另一個實施例中,基於神經網絡的權重的位元尺寸(k)來將乘法陣列中的每個非依電性記憶構件程式化為不同的電導水平。
在方法的另一個實施例中,電導水平的總數等於2k
在一個實施例中,另一種裝置包括:加總陣列,包括佈置成行的複數個非依電性記憶構件,基於神經網絡的權重來將加總陣列中的每個非依電性記憶構件程式化為高電阻狀態或低電阻狀態,加總陣列被配置為至少部分地基於複數個輸入訊號來為每個行產生加總的訊號;及乘法陣列,耦接到加總陣列,且包括複數個非依電性記憶構件,基於神經網絡的權重來將乘法陣列中的每個非依電性記憶構件程式化為不同的電導水平,乘法陣列被配置為至少部分地基於來自加總陣列的加總的訊號來產生輸出訊號。
在裝置的另一個實施例中:加總陣列中的每個非依電性記憶構件均被配置為接收輸入訊號及基於程式化的電阻狀態將輸入訊號與相應的行的加總的訊號相加;乘法陣列中的每個非依電性記憶構件均被配置為從加總陣列的不同的行接收加總的訊號及基於程式化的電導水平來調整加總的訊號以產生調整的加總的訊號;及輸出訊號是此等調整的加總的訊號的組合。
在裝置的另一個實施例中,加總陣列中的每個非依電性記憶構件均被配置為在被程式化為低電阻狀態時將輸入訊號與相應的行的加總的訊號相加,及在被程式化為高電阻狀態時不將輸入訊號與相應的行的加總的訊號相加。
在裝置的另一個實施例中,加總陣列是具有M個列、N個行、及MxN個非依電性記憶構件的縱橫,且其中乘法陣列具有N個構件。
在裝置的另一個實施例中,複數個輸入訊號是選自一定總數的輸入訊號的M個輸入訊號的集合,總數顯著地大於N。
在裝置的另一個實施例中,基於神經網絡的權重的位元尺寸(k)來將乘法陣列中的每個非依電性記憶構件程式化為不同的電導水平。
在裝置的另一個實施例中,電導水平的總數等於2k
將理解,本文中所使用的示例及對應圖解僅用於說明的目的。可以在不脫離本文中所表達的原理的情況下使用不同的配置及技術。例如,在不脫離這些原理的情況下,可以將元件及模組添加、刪除、修改、或用不同的連接佈置。
在本揭示內容的實施例的以下詳細說明中,闡述了許多的具體細節以提供對本揭示內容的更透徹的了解。然而,熟習本領域者將理解,可以在沒有這些具體細節的情況下實行本揭示內容。在其他的情況下,不詳細描述眾所周知的特徵以避免不必要地使說明書變得複雜。
要了解,本文中所使用的技術乃用於描述依據本揭示內容的各種實施例的目的且不旨在是限制性的。並且,如本文中所使用的用語「一」被界定為一個或多於一個。如本文中所使用的用語「複數」被界定為兩個或多於兩個。如本文中所使用的用語「另一個」被界定為至少第二個或更多個。如本文中所使用的用語「包括」及/或「具有」被界定為包括(即開放語言)。如本文中所使用的用語「耦接」被界定為連接,然而不一定是直接連接且不一定是機械連接。用語「提供」在本文中是用其最廣泛的意義來界定的,例如一次地或在一段時間內、以整體方式或以多個部件的方式變得實體存在、變得可用、及/或向某人或某物供應。
如本文中所使用的,用語「約」或「大約」適用於所有數值,無論是否明確指出這些數值。此類用語一般指熟習本領域者會認為等同於所記載的值(即具有相同的功能或結果)的數字範圍。這些用語可以包括捨入到最靠近的有效數字的數字。在此文件中,任何對用語「縱向」的指稱均應被了解為意指在與個人計算設備從一個終端到相對的終端的伸長方向對應的方向上。
依據前述內容,揭露了一種用於執行乘法-累加加速的方法及架構。在已經如此詳細地描述且藉由參照本申請案的本揭示內容的實施例來描述本申請案的本揭示內容的情況下,將理解,在不脫離隨附申請專利範圍中所界定的範圍的情況下,變體及變型是可能的。
10:ANN 15:CNN 20:輸入層 21:輸入節點 22:輸入節點 23:輸入節點 30:隱藏節點 30-1:卷積層 30-2:池化層 31:隱藏節點 32:隱藏節點 33:隱藏節點 34:隱藏節點 35:隱藏節點 40:隱藏層 41:隱藏節點 42:隱藏節點 43:隱藏節點 44:隱藏節點 45:隱藏節點 50:隱藏層 51:隱藏節點 52:隱藏節點 53:隱藏節點 54:隱藏節點 55:隱藏節點 60:輸出層 61:輸出節點 62:輸出節點 100:ANN 102:輸入向量 103-1:第一層 103-2:第二層 104:矩陣 106:輸出向量 200:卷積運算 201:卷積層運算 2021 :過濾器 2022 :過濾器 202M :過濾器 2021.1 :權重矩陣 2021.2 :權重矩陣 2021.3 :權重矩陣 204:輸入特徵圖 2041 :輸入資料矩陣 2042 :輸入資料矩陣 2043 :輸入資料矩陣 204N :輸入資料矩陣 206:輸出特徵圖 2061 :輸出資料矩陣 2062 :輸出資料矩陣 206M :輸出資料矩陣 212:轉換的權重矩陣 214:轉換的輸入資料矩陣 216:轉換的輸出資料矩陣 300:架構 301:NVM縱橫 302:NVM縱橫 3081 :列訊號線 3082 :列訊號線 30812 :列訊號線 308L :列訊號線 3101 :DAC構件 3102 :DAC構件 31012 :DAC構件 310L :DAC構件 312:行訊號線 3121 :行訊號線 3122 :行訊號線 312M :行訊號線 31411 :位元單元 314LM :位元單元 400:架構 401:架構 402:DAC模塊 4031 :DAC 4032 :DAC 4033 :DAC 40312 :DAC 403M :DAC 404:縱橫 406:乘法器/縮放模組 4071 :位元單元 4072 :位元單元 40716 :位元單元 407N :位元單元 40811 :位元單元 4081N :位元單元 408M1 :位元單元 408MN :位元單元 4081,1 :位元單元 4081,16 :位元單元 40812,1 :位元單元 40812,16 :位元單元 4101 :列訊號線 4102 :列訊號線 4103 :列訊號線 41012 :列訊號線 410M :列訊號線 4121 :行訊號線 4122 :行訊號線 4123 :行訊號線 41216 :行訊號線 412N :行訊號線 500:過程 502:方塊 504:方塊 506:方塊 508:方塊 510:方塊 600:過程 602:方塊 604:方塊 606:方塊 608:方塊 610:方塊 612:方塊 614:方塊 700:流程圖 702:方塊 704:方塊 706:方塊 708:方塊
在隨附的圖式中藉由示例而非限制的方式繪示了本揭示內容,在此等圖式中,類似的元件符號指示類似的構件。
圖1A描繪依據本揭示內容的一個實施例的ANN。
圖1B描繪依據本揭示內容的一個實施例的ANN的高階方塊圖。
圖2A描繪依據本揭示內容的一個實施例的CNN。
圖2B描繪依據本揭示內容的一個實施例的CNN的卷積層內的卷積運算。
圖2C描繪依據本揭示內容的一個實施例的CNN的另一種卷積層運算。
圖2D描繪依據本揭示內容的一個實施例的CNN的轉換的卷積層運算。
圖3A描繪依據本揭示內容的一個實施例使用NVM縱橫(crossbar)來實施的圖2D的卷積層運算的一部分。
圖3B描繪依據本揭示內容的一個實施例使用NVM縱橫來實施的卷積層運算的架構。
圖4A描繪依據本揭示內容的一個實施例的重構的MAC運算的架構的示意圖。
圖4B描繪依據本揭示內容的一個實施例的重構的MAC運算的架構的示意圖。
圖5描繪依據本揭示內容的一個實施例的重構的MAC運算的低精確度程式化過程的流程圖。
圖6描繪依據本揭示內容的一個實施例的乘法器/縮放模組的高精確度程式化過程的流程圖。
圖7描繪依據本揭示內容的一個實施例用於在神經網絡中執行乘法-累加加速的方法的流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
400:架構
402:DAC模塊
4031 :DAC
4032 :DAC
4033 :DAC
403M :DAC
404:縱橫
406:乘法器/縮放模組
4071 :位元單元
4072 :位元單元
407N :位元單元
40811 :位元單元
4081N :位元單元
408MN :位元單元
4101 :列訊號線
4102 :列訊號線
4103 :列訊號線
410M :列訊號線
4121 :行訊號線
4122 :行訊號線
4123 :行訊號線
412N :行訊號線

Claims (20)

  1. 一種裝置,包括: 一縱橫,包括佈置在一列和行的陣列中的複數個縱橫節點,每個縱橫節點均可程式化為一第一電阻水平或一第二電阻水平,該縱橫被配置為在縱橫節點的每個行上加總複數個類比輸入激活訊號及輸出複數個加總的激活訊號;及 一乘法器,耦接到該縱橫,且包括複數個乘法器節點,每個乘法器節點均可程式化為與複數個神經網絡權重中的一者成比例的一不同的電導水平,該乘法器被配置為在該等乘法器節點上加總該複數個加總的激活訊號及輸出一類比輸出激活訊號。
  2. 如請求項1所述的裝置,其中每個縱橫節點均包括一或更多個非依電性構件(NVM),且每個乘法器節點均包括複數個NVM。
  3. 如請求項2所述的裝置,其中該縱橫包括M個列、N個行、及MxN個縱橫節點,且該乘法器包括N個乘法器節點。
  4. 如請求項1所述的裝置,更包括: 複數個數位轉類比轉換器(DAC),耦接到該縱橫,每個DAC均被配置為接收一數位輸入激活訊號及輸出該複數個類比輸入激活訊號中的一者。
  5. 如請求項1所述的裝置,其中基於該等神經網絡權重的一位元尺寸(k)來將每個乘法器節點中的每個非依電性記憶構件程式化為該不同的電導水平。
  6. 如請求項5所述的裝置,其中電導水平的一總數等於2k
  7. 一種用於執行一重構的乘法和累加運算的方法,該方法包括以下步驟: 在包括佈置成行的複數個非依電性記憶構件的一加總陣列中,至少部分地基於複數個輸入訊號來為每個行產生一加總的訊號,基於一神經網絡的權重來將該加總陣列中的每個非依電性記憶構件程式化為一高電阻狀態或一低電阻狀態;及 在包括複數個非依電性記憶構件的一乘法陣列中,至少部分地基於來自該加總陣列的該等加總的訊號來產生一輸出訊號,基於該神經網絡的該等權重將該乘法陣列中的每個非依電性記憶構件程式化為一不同的電導水平。
  8. 如請求項7所述的方法,其中: 該加總陣列中的每個非依電性記憶構件均被配置為接收一輸入訊號及基於該程式化的電阻狀態將該輸入訊號與一相應的行的該加總的訊號相加; 該乘法陣列中的每個非依電性記憶構件均被配置為從該加總陣列的一不同的行接收一加總的訊號及基於該程式化的電導水平來調整該加總的訊號以產生一調整的加總的訊號;及 該輸出訊號是該等調整的加總的訊號的一組合。
  9. 如請求項8所述的方法,其中該加總陣列中的每個非依電性記憶構件均被配置為在被程式化為該低電阻狀態時將該輸入訊號與一相應的行的該加總的訊號相加,及在被程式化為該高電阻狀態時不將該輸入訊號與該相應的行的該加總的訊號相加。
  10. 如請求項9所述的方法,其中該加總陣列是具有M個列、N個行、及MxN個非依電性記憶構件的一縱橫,且其中該乘法陣列具有N個構件。
  11. 如請求項10所述的方法,其中該複數個輸入訊號是選自一定總數的輸入訊號的M個輸入訊號的一集合,該總數顯著地大於N。
  12. 如請求項7所述的方法,其中基於該神經網絡的該等權重的一位元尺寸(k)來將該乘法陣列中的每個非依電性記憶構件程式化為該不同的電導水平。
  13. 如請求項12所述的方法,其中電導水平的一總數等於2k
  14. 一種裝置,包括: 一加總陣列,包括佈置成行的複數個非依電性記憶構件,基於一神經網絡的權重來將該加總陣列中的每個非依電性記憶構件程式化為一高電阻狀態或一低電阻狀態,該加總陣列被配置為至少部分地基於複數個輸入訊號來為每個行產生一加總的訊號;及 一乘法陣列,耦接到該加總陣列,且包括複數個非依電性記憶構件,基於該神經網絡的該等權重來將該乘法陣列中的每個非依電性記憶構件程式化為一不同的電導水平,該乘法陣列被配置為至少部分地基於來自該加總陣列的該等加總的訊號來產生一輸出訊號。
  15. 如請求項14所述的裝置,其中: 該加總陣列中的每個非依電性記憶構件均被配置為接收一輸入訊號及基於該程式化的電阻狀態將該輸入訊號與一相應的行的該加總的訊號相加; 該乘法陣列中的每個非依電性記憶構件均被配置為從該加總陣列的一不同的行接收一加總的訊號及基於該程式化的電導水平來調整該加總的訊號以產生一調整的加總的訊號;及 該輸出訊號是該等調整的加總的訊號的一組合。
  16. 如請求項15所述的裝置,其中該加總陣列中的每個非依電性記憶構件均被配置為在被程式化為該低電阻狀態時將該輸入訊號與該相應的行的該加總的訊號相加,及在被程式化為該高電阻狀態時不將該輸入訊號與該相應的行的該加總的訊號相加。
  17. 如請求項16所述的裝置,其中該加總陣列是具有M個列、N個行、及MxN個非依電性記憶構件的一縱橫,且其中該乘法陣列具有N個構件。
  18. 如請求項17所述的裝置,其中該複數個輸入訊號是選自一定總數的輸入訊號的M個輸入訊號的一集合,該總數顯著地大於N。
  19. 如請求項14所述的裝置,其中基於該神經網絡的該等權重的一位元尺寸(k)來將該乘法陣列中的每個非依電性記憶構件程式化為該不同的電導水平。
  20. 如請求項19所述的裝置,其中電導水平的一總數等於2k
TW109129533A 2019-08-29 2020-08-28 重構mac運算 TWI869441B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/556,101 US20210064379A1 (en) 2019-08-29 2019-08-29 Refactoring MAC Computations for Reduced Programming Steps
US16/556,101 2019-08-29

Publications (2)

Publication Number Publication Date
TW202111703A true TW202111703A (zh) 2021-03-16
TWI869441B TWI869441B (zh) 2025-01-11

Family

ID=70050154

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109129533A TWI869441B (zh) 2019-08-29 2020-08-28 重構mac運算

Country Status (5)

Country Link
US (2) US20210064379A1 (zh)
EP (1) EP4022426B1 (zh)
CN (1) CN114365078B (zh)
TW (1) TWI869441B (zh)
WO (2) WO2021038182A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI815502B (zh) * 2021-07-23 2023-09-11 台灣積體電路製造股份有限公司 記憶體裝置及記憶體內計算方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3113326B1 (fr) * 2020-08-06 2023-01-06 St Microelectronics Rousset Procédé de calcul convolutif intra-mémoire et circuit intégré correspondant
US12314842B2 (en) 2020-08-10 2025-05-27 Western Digital Technologies, Inc. Matrix-vector multiplication using SOT-based non-volatile memory cells
US11393516B2 (en) * 2020-10-19 2022-07-19 Western Digital Technologies, Inc. SOT-based spin torque oscillators for oscillatory neural networks
US12242949B2 (en) * 2021-03-29 2025-03-04 Infineon Technologies LLC Compute-in-memory devices, systems and methods of operation thereof
US12136468B2 (en) 2022-10-11 2024-11-05 Globalfoundries U.S. Inc. Calibration methods and structures for partitioned memory architecture with single resistor or dual resistor memory elements
US12106804B2 (en) 2022-10-11 2024-10-01 Globalfoundries U.S. Inc. Partitioned memory architecture with dual resistor memory elements for in-memory serial processing
US12211585B2 (en) 2022-10-11 2025-01-28 Globalfoundries U.S. Inc. Partitioned memory architecture with single resistor memory elements for in-memory serial processing
US12125530B2 (en) 2022-10-11 2024-10-22 Globalfoundries U.S. Inc. Partitioned memory architecture with single resistor or dual resistor memory elements for in-memory pipeline processing
US12159685B2 (en) * 2022-10-11 2024-12-03 Globalfoundries U.S. Inc. Partitioned memory architecture and method for repeatedly using the architecture for multiple in-memory processing layers
CN115910136B (zh) * 2022-11-09 2025-07-25 华中科技大学 一种基于电阻式存储器的卷积加速运算阵列及其控制方法
TWI898206B (zh) * 2023-04-18 2025-09-21 大陸商星宸科技股份有限公司 神經網路之運算轉換方法、基於卷積運算進行矩陣乘法運算的方法,以及智慧處理單元

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150067273A1 (en) 2013-08-30 2015-03-05 Microsoft Corporation Computation hardware with high-bandwidth memory interface
CN115942752A (zh) * 2015-09-21 2023-04-07 莫诺利特斯3D有限公司 3d半导体器件和结构
US10418369B2 (en) * 2015-10-24 2019-09-17 Monolithic 3D Inc. Multi-level semiconductor memory device and structure
WO2017155544A1 (en) * 2016-03-11 2017-09-14 Hewlett Packard Enterprise Development Lp Hardware accelerators for calculating node values of neural networks
JP6556768B2 (ja) * 2017-01-25 2019-08-07 株式会社東芝 積和演算器、ネットワークユニットおよびネットワーク装置
EP3580699B1 (en) 2017-02-07 2023-12-06 The Regents of The University of Michigan Systems and methods for mixed-signal computing
US10055383B1 (en) * 2017-04-28 2018-08-21 Hewlett Packard Enterprise Development Lp Matrix circuits
US20190042915A1 (en) 2018-03-30 2019-02-07 Intel Corporation Procedural neural network synaptic connection modes
CN109901815B (zh) * 2019-01-16 2023-03-24 北京大学深圳研究生院 基于阻变存储器的并行逻辑门及乘法器
US11144824B2 (en) 2019-01-29 2021-10-12 Silicon Storage Technology, Inc. Algorithms and circuitry for verifying a value stored during a programming operation of a non-volatile memory cell in an analog neural memory in deep learning artificial neural network
KR20230090849A (ko) * 2021-12-15 2023-06-22 삼성전자주식회사 뉴럴 네트워크 장치 및 이를 포함하는 전자 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI815502B (zh) * 2021-07-23 2023-09-11 台灣積體電路製造股份有限公司 記憶體裝置及記憶體內計算方法

Also Published As

Publication number Publication date
EP4022426B1 (en) 2024-10-09
WO2021038228A1 (en) 2021-03-04
US20220179658A1 (en) 2022-06-09
CN114365078B (zh) 2025-02-18
CN114365078A (zh) 2022-04-15
EP4022426C0 (en) 2024-10-09
TWI869441B (zh) 2025-01-11
WO2021038182A2 (en) 2021-03-04
EP4022426A1 (en) 2022-07-06
US11922169B2 (en) 2024-03-05
US20210064379A1 (en) 2021-03-04

Similar Documents

Publication Publication Date Title
TW202111703A (zh) 重構mac運算
CN111985607B (zh) 运用于类神经网络系统的乘积累加电路的相关控制电路
EP3627401B1 (en) Method and device for training neural network
KR102672586B1 (ko) 인공신경망의 훈련 방법 및 장치
US10346347B2 (en) Field-programmable crossbar array for reconfigurable computing
US10755170B2 (en) Resistive processing unit with hysteretic updates for neural network training
US20190122105A1 (en) Training of artificial neural networks
US11188825B2 (en) Mixed-precision deep-learning with multi-memristive devices
US20190369873A1 (en) Peripheral Circuit and System Supporting RRAM-Based Neural Network Training
CN108780492A (zh) 模拟协处理器
CN113792010A (zh) 存算一体芯片及数据处理方法
CN111478703B (zh) 基于忆阻交叉阵列的处理电路及输出电流的补偿方法
CN115699028B (zh) 模拟人工智能网络推理的逐行卷积神经网络映射的高效瓦片映射
US11544540B2 (en) Systems and methods for neural network training and deployment for hardware accelerators
CN114026573B (zh) 基于非易失性存储器的紧凑型混合信号乘法累加引擎
US10832773B1 (en) Architecture for enabling zero value shifting
CN115660079B (zh) 用于特征选择的忆阻器遗传算法的加速器及其操作方法
CN114118390B (zh) 硬件加速器和混合电阻器忆阻器交叉开关阵列电路
Nikam et al. Long short-term memory implementation exploiting passive RRAM crossbar array
Doevenspeck et al. Noise tolerant ternary weight deep neural networks for analog in-memory inference
CN116523011B (zh) 基于忆阻的二值神经网络层电路及二值神经网络训练方法
Zhao et al. Intra-array Non-Idealities modeling and algorithm optimization for RRAM-based computing-in-memory applications
Halawani et al. A re-configurable memristor array structure for in-memory computing applications
US20260037792A1 (en) Neural network device and operating method of the same
CN116451761A (zh) 基于忆阻器阵列的循环神经网络的训练方法以及装置