TWI825849B - 存算一體裝置及相關的方法 - Google Patents

存算一體裝置及相關的方法 Download PDF

Info

Publication number
TWI825849B
TWI825849B TW111126564A TW111126564A TWI825849B TW I825849 B TWI825849 B TW I825849B TW 111126564 A TW111126564 A TW 111126564A TW 111126564 A TW111126564 A TW 111126564A TW I825849 B TWI825849 B TW I825849B
Authority
TW
Taiwan
Prior art keywords
array
sub
switches
bit
input
Prior art date
Application number
TW111126564A
Other languages
English (en)
Other versions
TW202305623A (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 新加坡商聯發科技(新加坡)私人有限公司
Publication of TW202305623A publication Critical patent/TW202305623A/zh
Application granted granted Critical
Publication of TWI825849B publication Critical patent/TWI825849B/zh

Links

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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1069I/O lines read out arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/412Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using field-effect transistors only
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/12Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/08Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Semiconductor Memories (AREA)
  • Memory System (AREA)
  • Solid State Image Pick-Up Elements (AREA)

Abstract

本發明的多個方面針對用於使用記憶體陣列作為存算一體(CIM)裝置來執行MAC操作的裝置和方法,與使用位於記憶體陣列外部的處理器的計算相比,其能夠實現更高的計算吞吐量、更高的性能和更低的功耗。在一些實施例中,使用被佈置成行和列的位單元陣列來提供激活架構以存儲表示權重矩陣中的權重值的電荷。讀字線(RWL)還可用於向一列位單元內的位單元提供輸入激活值,而讀位線(RBL)被配置為接收來自排成一行的位單元的乘積。一些實施例提供位單元陣列的多個子陣列或塊。

Description

存算一體裝置及相關的方法
本申請通常涉及存算一體(compute-in-memory,CIM)裝置,具體地,涉及能夠在神經網絡計算中執行乘法累加(multiply and accumulate,MAC)操作的CIM裝置。
深度學習、機器學習、神經網絡和其它基於矩陣的可微程序用於解決各種問題,包括自然語言處理和圖像中的目標識別。解決這些問題通常涉及基於矩陣向量乘法執行計算。例如,在具有多個神經元的神經網絡中,輸入到神經元的激活值可視為輸入激活向量,而來自神經元的輸出激活值可視為輸出激活向量。此類神經網絡的計算通常涉及輸入激活向量與權重矩陣的矩陣向量乘法,以計算輸出激活向量。通常,權重矩陣可以是矩形的(rectangular),輸出激活向量的長度不一定與輸入激活向量的長度相同。神經網絡的計算通常涉及對資料值(包括輸入/輸出激活向量和權重)執行的乘法累加(multiply and accumulate,MAC)操作的計算。MAC操作是指兩個值之間的乘法運算,以及,隨後將一系列的乘法結果進行累加以提供輸出MAC值。
大型深度神經網絡的計算涉及許多不同資料值的大規模並行計算。計算操作(例如,算術或邏輯運算)通常由處理器基於處理器與存儲裝置(例如,記憶體陣列)之間的資料傳輸進行。隨著大規模並行神經網絡的資料吞吐量要求增加,快速處理器與記憶體的較慢資料傳輸有時會成為機器學習應用的瓶頸。
本發明的目的之一在於提供一種執行MAC操作的存算一體(CIM)裝置和方法,其能夠實現更高的計算吞吐量。
第一方面,本發明提供了一種存算一體裝置,包括記憶體陣列及一個或多個加法器,其中,該記憶體陣列包括多個位單元陣列,每個位單元陣列包括:被佈置成多個行和多個列的多個位單元,每個位單元被配置為根據權重矩陣存儲權重,且用於將該權重與輸入激活向量的輸入激活相乘以產生乘積;多條讀字線(RWL),每條RWL沿著列方向延伸,且每條RWL被配置為將該輸入激活向量的輸入激活提供給相應列的位單元;以及,多條讀位線(RBL),每條RBL沿著行方向延伸,且每條RBL被配置為從相應行的位單元接收乘積;其中,該一個或多個加法器耦接該每個位單元陣列的多條RBL,且被配置為基於從該每個位單元陣列的多條RBL接收到的一些或全部乘積產生乘法累加(MAC)值。
在一些實施例中,該一個或多個加法器包括加法器樹。
在一些實施例中,該存算一體裝置還包括多個反相器,其中,該多條RBL中的每條RBL經由該多個反相器中的相應反相器耦接至該一個或多個加法器。
在一些實施例中,該記憶體陣列內的該多個位單元是8電晶體(8-T)位單元。
在一些實施例中,該記憶體陣列被配置為接收輸入激活向量和權重矩陣。
在一些實施例中,每條RWL被配置為將該輸入激活向量的輸入激活提供至相應列的位單元,以及,該MAC值是基於該輸入激活向量和該權重矩陣之間的向量乘積。
在一些實施例中,該存算一體裝置還包括:路由電路,其具有被配置為接收輸入激活的路由輸入,以及,耦接到該多條RWL中的一些或全部的多個路由輸出,該路由電路被配置為將該輸入激活路由到該多條RWL中的一些或全部。
在一些實施例中,該路由電路包括解復用器。
在一些實施例中,該存算一體裝置還包括:靜態隨機存取記憶體(SRAM)邊緣單元,被設置在多列位單元中的一列的旁邊。
在一些實施例中,該記憶體陣列包括第一子陣列和沿著行方向與該第一子陣列對齊的第二子陣列,以及,該存算一體裝置還包括:第一路由電路,具有路由輸入和耦接該第一子陣列中的多條RWL中的一些或全部的多個路由輸出;第二路由電路,具有路由輸入和耦接該第二子陣列中的多條RWL中的一些或全部的多個路由輸出。
在一些實施例中,該存算一體裝置還包括:一個或多個輸入復用器,其可控制為將輸入激活路由到該第一路由電路的路由輸入或該第二路由電路的路由輸入。
在一些實施例中,該存算一體裝置還包括:互連電路,其將該第一子陣列和該第二子陣列中的多條RBL耦接到該加法器樹,其中,該互連電路包括一個或多個輸出復用器。
在一些實施例中,該一個或多個輸出復用器和該一個或多個輸入復用器被配置為接收相同的地址信號且基於該地址信號尋址。
在一些實施例中,該記憶體陣列包括第一子陣列和第二子陣列,以及,該存算一體裝置還包括:第一組開關,該第一組開關中的每個開關將該第一子陣列中的對應RBL可切換地耦接到該加法器樹;以及,第二組開關,該第二組開關中的每個開關將該第二子陣列中的對應RBL可切換地耦接到該加法器樹;其中,該第一組開關被配置為相對於該第二組開關以相反的相位接通或斷開。
在一些實施例中,該第一子陣列和該第二子陣列是沿著列方向或沿著行方向對齊的。
在一些實施例中,該第一組開關基於地址信號進行切換,以及,該第二組開關基於該地址信號的反相版本進行切換。
在一些實施例中,該存算一體裝置還包括耦接該第一組開關和該第二組開關的解碼器,該解碼器被配置為接收地址信號並控制該第一組開關和該第二組開關基於該地址信號進行切換。
在一些實施例中,該記憶體陣列包括第一子陣列和沿著列方向與該第一子陣列對齊的第二子陣列,以及,該加法器樹位於該第一子陣列和該第二子陣列之間,且耦接到該第一子陣列的部分或全部RBL以及耦接到該第二子陣列的部分或全部RBL。
在一些實施例中,該記憶體陣列包括被佈置成多個行和多個列的多個子陣列,每列內的多個子陣列彼此鄰接。
在一些實施例中,該一個或多個加法器包括:位於該多個子陣列的兩個相鄰列之間的加法器;以及,加法器樹,通過沿著列方向延伸的導體耦接該加法器。
在一些實施例中,該一個或多個加法器經由沿著列方向延伸的一個或多個導體耦接該多條RBL。
在一些實施例中,該一個或多個導體被佈置在第一金屬層中,該一金屬層與佈置有該多條RBL的第二金屬層平行且偏離開。
第二方面,本發明提供了一種用於操作記憶體陣列以執行輸入激活向量與權重矩陣的乘法累加(MAC)操作的方法,其中,該記憶體陣列包括多個位單元陣列,每個位單元陣列被佈置成多個行和多個列的多個位單元,該方法包括:根據該權重矩陣將多個權重存儲在該記憶體陣列的多個位單元中;對於該多個列中的每一列,使用沿著列方向延伸的對應讀字線(RWL)向該列內的位單元提供該輸入激活向量的輸入激活;對於每個位單元,將該輸入激活與存儲在其中的權重相乘以產生乘積;對於該多個行中的每一行,使用沿著行方向延伸的讀位線(RBL)從該行內的對應位單元接收乘積;以及,通過使用耦接該每個位單元陣列的多條RBL的加法器樹對接收到的該乘積求和來產生MAC值。
在一些實施例中,產生該MAC值包括:產生該輸入激活向量與該權重矩陣之間的向量乘積。
在一些實施例中,該方法還包括:使用解復用器將輸入激活路由到該多條RWL中的一條RWL。
在一些實施例中,該記憶體陣列包括第一子陣列和第二子陣列,以及,該方法還包括:基於地址信號將該第一子陣列中的第一組RBL或該第二子陣列中的第二組RBL中的一組可切換地耦接到該加法器樹。
在一些實施例中,該方法還包括:基於該地址信號將輸入激活選擇性地路由到該第一子陣列或該第二子陣列中的一個。
本發明內容是通過示例的方式提供的,並非旨在限定本發明。在下面的詳細描述中描述其它實施例和優點。本發明由申請專利範圍限定。
以下描述為本發明實施的較佳實施例。以下實施例僅用來例舉闡釋本發明的技術特徵,並非用來限制本發明的範疇。在通篇說明書及申請專利範圍當中使用了某些詞彙來指稱特定的組件。所屬技術領域中具有通常知識者應可理解,製造商可能會用不同的名詞來稱呼同樣的組件。本說明書及申請專利範圍並不以名稱的差異來作為區別組件的方式,而係以組件在功能上的差異來作為區別的基準。本發明的範圍應當參考后附的申請專利範圍來確定。在以下描述和申請專利範圍當中所提及的術語“包含”和“包括”為開放式用語,故應解釋成“包含,但不限定於…”的意思。此外,術語“耦接”意指間接或直接的電氣連接。因此,若文中描述一個裝置耦接至另一裝置,則代表該裝置可直接電氣連接於該另一裝置,或者透過其它裝置或連接手段間接地電氣連接至該另一裝置。文中所用術語“基本”或“大致”係指在可接受的範圍內,所屬技術領域中具有通常知識者能夠解決所要解決的技術問題,基本達到所要達到的技術效果。舉例而言,“大致等於”係指在不影響結果正確性時,所屬技術領域中具有通常知識者能夠接受的與“完全等於”有一定誤差的方式。
本文公開了使用記憶體陣列(memory array)作為存算一體(compute-in-memory,CIM)裝置來執行MAC操作的裝置和方法。如第2A圖所示,記憶體陣列包括多個位單元陣列(如位單元陣列110),其中,該多個位單元陣列可以被佈置成多個行和多個列,每個行內的位單元陣列共享相同的輸入激活,每個位單元陣列可以如第2B圖所示包括被佈置為多個行和多個列的多個位單元(如位單元110_0),可以理解地,第2A圖和第2B圖所示的陣列都可以稱為記憶體陣列,本領域普通技術人員可以理解,第2A圖所示對應位元單元陣列的權重(如W0,0)可以是對應多維權重矩陣的表示,例如,對應第2B圖所示的4*4維權重矩陣。CIM(存算一體)或存內計算(in-memory computation,或可互換地稱為“記憶體內計算”)是一種利用位於記憶體陣列內的內部電路對資料執行計算而無需將此類資料發送至處理器的技術,與利用位於記憶體陣列外部的處理器的計算相比,CIM或存內計算可以實現更高的計算吞吐量和更高的性能。由於減少了外部處理器和記憶體之間的資料移動,因此,CIM還可以減少功耗(energy consumption)。
一些實施例針對具有激活架構的CIM裝置,該激活架構可用於神經網絡計算中與權重矩陣的MAC操作。該權重矩陣可以是深度神經網絡計算中使用的濾波器矩陣(filter matrix)。權重矩陣的大小(size,亦可互換地描述為“尺寸”)可以被縮放為適應神經網絡中不同數量的神經元和不同的層數。在一些實施例中,記憶體陣列(例如,位單元陣列)具有可編程數量的濾波器,記憶體陣列的一個或多個子陣列可以被選擇性地激活(activated)或停用(deactivated)以將CIM裝置編程為在給定相同激活輸入的情況下執行不同濾波器尺寸的計算。這樣的可編程設計可以增加CIM裝置的靈活性。在不使用子陣列時停用子陣列的能力也可以降低CIM裝置的功耗。
一些實施例包括被佈置成列和行(arranged in rows and columns)的記憶體陣列。每個位單元(bit cell)具有存儲電荷(charge)Q的靜態隨機存取記憶體(static random-access memories,SRAM),該電荷Q用於表示權重矩陣中的權重值。每個位單元可以作為乘法器(multiplier)操作,該乘法器執行存儲的權重與施加在位單元陣列中的讀字線(read word line,RWL)上的輸入激活值之間的乘法(multiplication)。在這樣的實施例中,讀字線RWL可以重新用於(repurposed)提供輸入激活值給對應該RWL的一列位單元中的位單元。
在一些實施例中,在一個位單元陣列中,來自多個位單元的乘積可以使用沿著行方向延伸的讀位線(read-bit lines,RBL)進行讀取。在一個位單元陣列中,每條RBL耦接一行位單元內的位單元,並被配置為從這些位單元接收乘積(product)。針對多個位單元陣列,每條RBL連接到一個或多個加法器(adder),例如,累加該乘積以產生MAC值的加法器樹(adder tree)。一行內的位單元的數量可以被設計為適應不同大小的輸入激活向量。
一些方面涉及將輸入激活信號路由(route)到不同的RWL,例如,在第5圖的示例中,輸入激活信號a0被根據控制信號CIM_MUXSEL<1:0>路由到4個RWL中的一者。在一些實施例中,可以在記憶體陣列的邊緣(edge)附近提供路由電路(routing circuit)。路由電路具有被配置為接收輸入激活的路由輸入,以及耦接到不同列的位單元的RWL的多個路由輸出。在一些實施例中,路由電路可以包括解復用器(demultiplexer)。
一些實施例在記憶體陣列內提供位單元陣列的多個子陣列(sub-arrays)或塊(tiles)。一些方面涉及輸入激活信號和來自多個子陣列的輸出乘積的路由。在一實施例中,兩個路由電路被提供,以將輸入激活信號路由到兩個子陣列中的RWL。在一實施例中,輸入復用器(multiplexer)用於將一個輸入激活(例如,經由兩個路由電路中的一個)路由到其中一個子陣列。通過使用兩個隔離開的(isolated)子陣列(其具有耦接到RBL的更長行的位單元)而不是單個陣列,可以減少RBL上的器件負載效應(device loading effect),這可以改善CIM裝置的功耗。
在一些實施例中,來自多條RBL的輸出乘積可以在被提供給加法器樹之前使用互連電路(interconnect circuit)進行多路復用。因此,與RBL的數量相比,需要更少的加法器樹連接,這可以減少RBL電容并降低CIM裝置的功耗。在一些實施例中,一組開關被提供,以在子陣列不活動時可切換地將子陣列中的RBL與加法器斷開,這也可以降低RBL電容和CIM裝置的功耗。該組開關可以通過使用被配置為控制輸入復用器(例如,將輸入激活路由到不同子陣列)的地址信號進行尋址。
一些方面可以將現有的代工廠設計用於位單元的記憶體陣列(位單元陣列),例如8電晶體(8 transistor,8-T)記憶體陣列,而沒有或僅有最少的硬件改變,這可以降低本發明公開的CIM裝置的設計和製造成本。
本文公開的實施例可用於人工智能(artificial intelligence,AI)應用中的神經網絡的計算,下面詳細描述一些示例。應當理解,本發明實施例還可以用於其它應用,例如但不限於圖像處理、圖像分類和使用相機拍攝圖像的人臉識別。在一些實施例中,CIM裝置是移動裝置的一部分。
下文進一步描述了上述方面和實施例,以及附加方面和實施例。這些方面和/或實施例可以單獨使用、一起使用或以兩個或更多個的任意組合使用,因為本申請在這方面不受限制。
第1圖是示例性神經網絡表示的示意圖,其示出了使用本文公開的CIM裝置執行的MAC操作(MAC operation,亦可互換地描述為“MAC運算”)。第1圖示出了輸入激活向量(a0, a1, a2, a3),其可以表示來自前一層的四個輸入激活值。神經網絡應用權重矩陣W= ,其中,每個權重w i,j分別代表對應輸入激活和神經元的權重。神經網絡基於輸入激活向量與權重矩陣的向量矩陣乘法生成具有四個輸出值N0 . . . N3的輸出激活向量(N0, N1, N2, N3),以用於下一層的四個相應神經元(為便於理解及簡化目的,四個神經元可分別表示為N0, N1, N2, N3)。該向量矩陣乘法可以使用MAC運算來執行。本領域普通技術人員應當理解,權重w i,j是為方便說明與理解的一種描述方式,其通常又可對應為多維權重矩陣的表示。
應該理解的是,雖然第1圖示出了4x4的方形權重矩陣,但這僅用於說明目的,前一層的神經元數量可以與下一層的神經元數量不同,輸入激活向量和輸出激活向量可以具有任何合適的大小和/或尺寸。此外,雖然第1圖圖示了單層神經元N0-N3,但本發明的多個方面也可以應用MAC操作用於涉及多層的神經網絡計算。例如,在第1圖所示的單層神經元N0-N3之前具有多層的神經網絡中,輸入激活向量(a0, a1, a2, a3)和神經元N0-N3之間可存在多個可能的權重。可以選擇多個濾波器(filter)來表示中間的神經元的層,以及,第1圖所示的權重矩陣的每個權重都可以利用所選擇的濾波器的卷積操作(其是利用本文公開的CIM裝置的MAC操作實現的)計算出來。在這樣的MAC操作中,所選擇的濾波器可以形成與第1圖所示的權重矩陣相類似的權重矩陣。下面借助第2A圖和第2B圖描述對單層權重矩陣和濾波器卷積的MAC操作的示例。
第2A圖是根據一些實施例的具有記憶體陣列(在第2A圖的示例中包括16個位單元陣列110)的示例性CIM裝置(用於計算如第1圖所示的單層神經網絡)的示意圖。第2A圖示出了具有位單元陣列(array of bit cells,亦可互換地描述為“記憶體陣列”,其包括多個位單元或記憶體)110排列成四行和四列的CIM裝置100。每個列(row)中的位單元陣列用於接收四個輸入激活a0、a1、a2、a3中的其中一個(響應者)。位單元陣列中的每個位單元被編程有電荷(例如,其表示4×4權重矩陣中的權重),且被配置為執行其列接收到的輸入激活與存儲在其中的權重之間的乘法運算。乘法運算的乘積沿每一行(each column)內的位單元陣列收集,並基於第1圖所示的式子累加(例如,針對第0行收集到的乘積累加值為:a 0*W0,0+a 1*W1,0+a 2*W2,0+a 3*W3,0,針對第1行收集到的乘積累加值為:a 0*W0,1+a 1*W1,1+a 2*W2,1+a 3*W3,1,針對第2行收集到的乘積累加值為:a 0*W0,2+a 1*W1,2+a 2*W2,2+a 3*W3,2)以產生分別用於神經元的四個輸出激活N0、N1、N2、N3。對此,本領域普通技術人員應當理解如何基於位元單元的乘積沿位元單元陣列的行方向產生MAC值。
第2B圖是根據一些實施例的示例性位單元陣列(用於應用濾波器來計算在第2A圖中使用的權重矩陣的權重W0,0,或者,用於執行第2A圖所示位單元陣列110的相關計算))的示意圖。可以理解地,第2B圖所示的多個位單元構成的位單元陣列也可以理解為記憶體陣列。第2B圖示出了位單元陣列110,其具有排列成四列和四行的位單元(bit cell)110_0的陣列。每個列從讀字線RWL0、RWL1、RWL2、RWL3中的相應者接收輸入激活。每個位單元被編程為具有濾波器值(filter value,亦可互換地稱為“權重“)W F(X,Y),其中,X是濾波器的標識符,Y是濾波器的位號(bit number)。例如,W F(2,1 表示濾波器2的第1位(bit 1),用於計算神經元0的權重0(W0,0)或用於神經元0的權重0(W0,0)的相關計算。在第2B圖所示的例子中,提供了4×4矩陣的濾波器值,其中,四個列中的每一列代表四個4位濾波器X=(0, 1, 2, 3)中的一個,即在第2B圖的示例中,示出了4組/個濾波器,每個濾波器具有4位。RWL用於選擇四個濾波器中的一個。
仍參照第2B圖,利用四個讀位線(read-bit line)RBL0、RBL1、RBL2、RBL3,每個位單元的輸出乘積(output products)被逐行(column-wise)/按行收集。如第2B圖所示,利用四個導體(conductor,例如,導線、金屬層中的金屬佈線)120,對應每個相應RBL的輸出值MULT0 . . . . . MULT3被路由以做進一步處理,例如,用於與同位元單元陣列110處於相應列上的其它位元單元陣列內的相應RBL的MULT0 . . . . . MULT3進行累加。例如,導體120可以將輸出乘積路由到加法器樹(未示出)。
第2B圖僅僅是說明4位濾波器的選擇以使用4×4的位單元陣列來計算W0,0的示例,可以理解地,通過使用具有不同行數的位單元陣列110,第2B圖的設計可以被擴展到任意大小位的濾波器。通過具有不同的列數,位單元陣列110還可用於計算任意不同數量的濾波器。例如,位單元陣列110可以存儲4、8、16、32或任意合適數量的濾波器。每個濾波器可以是4、8、16、32或任何合適的位數。
第3A圖是根據一些實施例示出的示例性8電晶體(8-T)記憶體位單元(其用在CIM裝置中以執行MAC操作)的示意圖。第3A圖示出了位單元310,其可用作第2B圖中的位單元110_0。位單元310包括6-T SRAM(通常,反相器由兩個電晶體構成)。可以理解地,現在已知或未來開發的位單元的任何代工設計均可以用於位單元310,本發明對此不做限制。在本發明中,位單元310內的SRAM能夠作為輸入值與所存儲的電荷Q的獨立乘法器來操作。例如,反相輸出節點MULT經由反相器1301耦接RBL 103。如第3A圖中的真值表1011所示,反相輸出節點MULT的值表示由RWL0提供的輸入值與存儲在位單元310的SRAM中的權重Q的乘積。在一些實施例中,所存儲的電荷Q可用於代表權重值(如上面描述的濾波器值)。例如,當只有RWL0和權重Q0都為1時,MULT才為1。乘積的輸出可以由MULT提供,也可以由RBL沿著行方向進行路由。
位單元310用於執行MAC操作以計算類似於第2B圖所示設計的濾波器卷積。例如,位單元310可以用作乘法器以應用濾波器的一個位,如第3B圖中的示意圖所示的W F(0,0)
第4圖是根據第一實施例的使用記憶體(位單元)陣列的CIM裝置架構(示出了其中的一部分)的示意圖。第4圖示出的CIM裝置400包括位單元410排列成四列412-0、412-1、412-2、412-3和四行413-0、413-1、413-2、413-3的陣列。在第一列412-0中,位單元互連到沿著列方向延伸的RWL0。在操作期間,讀字線RWL0、RWL1、RWL2和RWL3中的每一個可以用作列412-0、412-1、412-2、412-3中的相應列的激活線,以向相應列內的位單元提供輸入激活值。在一實施例中,輸入激活值可以被順序地提供,例如,一次提供在一條RWL中,而剩餘的RWL未使用或停用。其它使用情形也是可行的,例如,並行使用兩條或多條RWL。四條RWL中的激活時序可以使用任何合適的方式來控制,例如通過內部或外部時鐘信號。根據一方面,RWL可以同時執行兩個功能:攜帶輸入激活(例如,a0)和選擇濾波器的資訊(filtering selection information),例如,讀字線RWL0、RWL1、RWL2和RWL3中的其中一個是有效/激活的以選擇其耦接的位單元(或濾波器)執行乘法運算,且代表輸入激活值a0,而其它讀字線不是有效的,如為0。
在第一行413-0中,四個位單元可以存儲四個位值(four-bit value),例如,四位濾波器的值。第一行內的位單元被沿著行方向延伸的RBL0互連。輸出激活線420-0通過反相器將RBL0耦接到加法器樹140,並向加法器樹140提供反相輸出MULT0(MULT0和MULTB0互為反相)。類似地,輸出激活線420-1、420-2和420-3中的每一個將相應的RBL1、RBL3和RBL4互連到加法器樹140。每條RBL上的乘積可以以任何合適的方式驅動,以配合四條RWL中的輸入激活的時序。加法器樹140用於累加接收到的乘積以產生MAC值,例如,N0=a0*W0,0+ a1*W1,0+ a2*W2,0+ a3*W3,0,N1= a0*W0,1+ a1*W1,1+ a2*W2,1+ a3*W3,1,依次類推,其中,W0,0、W1,0等權重的計算可參考第2A圖和第2B圖進行理解,對此,本發明不再詳細描述。加法器樹140可以以現在已知或未來開發的任何合適的方式來實現。儘管圖中未示出,但可以提供一個或多個加法器(例如4位加法器),以將MULT0耦接到加法器樹140。
在一些實施例中,輸出激活線420-0、420-1、420-2和420-3中的每一個沿著列方向延伸以將信號路由到加法器樹。為了避免激活線420(包括輸出激活線420-0、420-1、420-2和420-3)和RBL(包括RBL0、RBL1、RBL3和RBL4)之間的短路,激活線420可以被實現為在金屬層中延伸的導體,其中,該金屬層是與RBL所處金屬層偏移開(offset)的不同層(layer)/平面(例如,金屬佈線/走線等)(plane),且平行於位單元410(或位單元410所處位單元陣列)的半導體基板的表面。在一非限制性示例中,輸出激活線420設置在M3金屬層中,同時,層間互連結構(諸如通孔)被提供以將輸出激活線420與相應的RBL耦接。在位單元410再次使用現有代工廠記憶體位單元設計的實施例中,添加輸出激活線420而不會顯著增加整個記憶體陣列的電路設計的成本或複雜性。
在其它實施例中,可以不存在輸出激活線420-0、420-1、420-2和420-3,從而不需要在位單元上的金屬層中提供額外的路由來路由RBL的輸出。在這樣的實施例中,來自RBL的信號可以沿著行方向而不是沿著列方向路由。例如,為此目的,可以在位單元行的下方設置路由電路。
基於記憶體的CIM裝置400可以提供若干優點。CIM陣列架構具有高度可擴展性,以給具有不同矩陣和向量大小要求的跨不同技術代的應用提供靈活性。例如,雖然第4圖示出了4x4權重矩陣的MAC操作,但CIM裝置400可以被擴展為適應任何大小的權重矩陣。例如,通過增加更多的4列位單元,可以使用8×4權重矩陣進行計算,例如,8個濾波器。類似地,通過將四個列中的每一列擴展為具有8個行,可以使用4×8權重矩陣來計算8位濾波器。可以基於現在已知或未來開發的任何合適的SRAM讀/寫電路架構來提供大量乘法器單元,以受益於位單元陣列的高記憶體密度。例如,可以通過在陣列內使用更多的位單元行和列,和/或通過使用如下所述的一組子陣列或塊來提供縮放。
第5圖是根據第二實施例的CIM裝置架構的示意圖,它是第4圖所示CIM裝置的變體。第5圖示出了在許多方面與CIM裝置400相類似的CIM裝置500,其中,相類似的部件用相同的附圖標記表示。CIM裝置500與CIM裝置400的不同之處在於:提供了路由電路(routing circuit)551,其中,路由電路551具有接收輸入激活a0的路由輸入(routing input)5511,以及,四個路由輸出(routing outputs)5512,每個路由輸出耦接到RWL0、RWL1、RWL2和RWL3中的一者以基於控制信號CIM_MUXSEL<1:0>將輸入激活a0選擇性地路由到四條RWL(即RWL0、RWL1、RWL2和RWL3)中的一者。在第5圖所示的例子中,路由電路551是解復用器(demultiplexer)。
第5圖還示出了存儲在每個位單元中的權重矩陣的4位權重的負載(loading)。在操作期間,基於解復用器551的輸出一次激活四條RWL中的一者。在一示例中,每一列的位單元用於存儲來自一個濾波器的權重或來自一個層的權重。因此,CIM裝置500可用於計算四個濾波器。用於一列的每個濾波器具有四個位,這些位存儲在四行中每一行的位單元中。第5圖中的架構可以通過添加更多的列和/或行進行縮放(scale),以便為更多數量的濾波器和/或具有更多位數的濾波器提供計算。
CIM裝置500還包括多個靜態隨機存取記憶體(static random-access memories,SRAM)邊緣單元(edge cells)130,其位於第四列(最底列)位單元的下方和第一列(最頂列)位單元的上方。邊緣單元130可以提供第5圖所示位單元的四個列與附加電路(例如,位於第5圖所示的四個列的下方或上方的不同塊中的附加列的位單元)之間的電隔離。
第6圖是根據第三實施例的CIM裝置架構的示意圖,其是第5圖所示CIM裝置的變體。第6圖示出了在許多方面與CIM裝置500相類似的CIM裝置600,其中類似的組件用相同的附圖標記表示。CIM裝置600與CIM裝置400的不同之處在於:提供了八個列而非四個列的位單元。額外的列可用於擴大用在計算中的濾波器或權重的數量。每個列可以存儲一個濾波器或一個層的4位權重。解復用器651根據控制信號CIM_MUXSEL<2:0>激活8條RWL中的一者以路由輸入激活a0。
第7圖是根據第四實施例的具有子陣列或塊的CIM裝置架構的示意圖。如第7圖所示,CIM裝置700包括彼此相鄰並沿著行方向對齊的子陣列701和702。CIM裝置700還包括分別沿著列方向與子陣列701、702對齊的子陣列703和704。
如圖所示,子陣列701和702中的每一個加載(loading)有具有4位權重的獨立權重矩陣。可以理解地,子陣列701、702、703、704可以是第2A圖中的4個位單元陣列,也就是說,第7圖中的子陣列701、702、703、704分別為單個的位單元陣列。在CIM裝置700中提供了兩個解復用器751、752。第一解復用器751耦接到第一子陣列701中的四條RWL,第二解復用器752耦接第二子陣列702中的四條RWL。第一解復用器751用於根據地址信號CIM_ADDR<1:0>將第一激活輸入a0路由到第一子陣列701中的四條RWL中的一者。第二解復用器752用於根據地址信號CIM_ADDR<1:0>將第二激活輸入a1路由到第二子陣列702中的四條RWL中的一者。可以理解地,針對子陣列701和702,相同的RWL被激活,例如,子陣列701中的RWL0和子陣列702中的RWL0是有效的,分別用於攜帶輸入激活值a0和a1,而其它RWL沒被激活的/無效的。
加法器樹740位於第一子陣列701和第三子陣列703之間。如圖所示,第三子陣列703中的輸入激活由耦接到第一子陣列701的相同RWL提供。由於加法器樹740被兩個子陣列(兩個位單元陣列)701和703共享,因此,需要較少的加法器組件來執行兩個子陣列的CIM操作,這能夠增加半導體基板上的電路的面積利用效率。在一些實施例中,可以通過使用時間復用或時間共享來共享加法器樹。
返回參考第6圖,每條RBL將8個位單元連接到加法器樹。當一行中的8個位單元在操作期間切換時,與第5圖中的CIM裝置500相比,CIM裝置600消耗更多的電力,因為其裝置負載較大。例如,在CIM裝置600中,每條RBL一次電容耦接到8個位單元而不是4個位單元,從而造成較大的裝置負載。
在本發明實施例中,通過將一行的多個權重或濾波器拆分成隔離開的(isolated)子陣列,可以減少裝置負載並且可以減少功耗。
第8圖是根據第五實施例的CIM裝置架構(其具有被復用的激活輸入的子陣列)的示意圖。在第8圖至第10圖的示例中,子陣列701和子陣列702作為整體構成第2A圖所示的一個/單個位單元陣列(也就是說,在第8圖至第10圖的示例中,第一位單元陣列包括子陣列701和子陣列702),類似地,在第8圖的示例中,子陣列703和子陣列704構成第2A圖所示的另一個位單元陣列(也就是說,在第8圖的示例中,第二位單元陣列包括子陣列703和子陣列704),可以理解地,第9圖和第10圖可以看做是第8圖左半部的變型實現。第8圖示出了在許多方面與CIM裝置700相類似的CIM裝置800,其中,類似的組件用相同的附圖標記表示。CIM裝置800與CIM裝置700的不同之處在於:輸入復用器854是根據第二地址信號CIM_ADDR<2>可控的,以將輸入激活a0路由到兩個解複用器(demultiplexer,圖中簡稱為“DEMUX”)751、752中一者的路由輸入。即,第二地址信號CIM_ADDR<2>指定輸入激活是應該路由到頂部四列的位單元還是底部四列的位單元。4×4子陣列701和702加載有表示8個濾波器或8個權重的權重或濾波器。第一地址信號CIM_ADDR<1:0>可用於將輸入激活路由到兩個子陣列內的四條RWL中的一者。通過在子陣列701的底列(bottom row)和子陣列702的頂列(top row)之間設置SRAM邊緣單元731,子陣列701與子陣列702隔離開。因此,子陣列701或702中任意一個的每條RBL僅耦接到一行中的4個位單元,這與第6圖用於八列或八個權重/濾波器的計算的方案相比,在第8圖中,RBL上的器件負載是減少的。
通過添加額外的子陣列和解複用器,第8圖的架構可以進一步擴展為激活16個或32個濾波器之一,具體地,本發明對此不做限制。
第9圖是根據第六實施例的具有互連電路(interconnect circuit)的CIM裝置架構的示意圖。第9圖示出了在某些方面類似於CIM裝置800的CIM裝置900,其中,類似的組件用相同的附圖標記表示。CIM裝置900包括互連電路930,該互連電路930包括多個輸出復用器(output multiplexer)931,該輸出復用器931將在輸出復用器931的輸入9311處接收到的八個MULT信號路由到四個輸出9312中的一者,以提供給加法器樹940。因此,只需要一半數量的輸入連接到加法器樹940。例如,加法器樹940可以包括四個加法器,每個加法器對應於一個復用器輸出9312,而不是如第8圖的加法器樹740中需要八個加法器來接收來自子陣列701和702的乘積。如第9圖所示,輸出復用器931可以由提供給輸入復用器854以選擇性地激活兩個子陣列701、702中的一者的相同地址信號CIM_ADDR<2>控制,應該理解,可以使用任何合適的復用方案來減少對加法器樹的加法器輸入要求的數量。通過復用輸出乘積,可以有利地提高加法器樹940的複雜性和電路面積效率。
第10圖是根據第七實施例的CIM裝置子陣列架構(其在子陣列的列之間具有加法器復用)的示意圖。第10圖示出了在許多方面類似於CIM裝置900的CIM裝置1000,其中,類似的組件用相同的附圖標記表示。CIM裝置1000與CIM裝置900的不同之處在於:提供了第一組開關1041和第二組開關1042,第一組開關1041中的每個開關將第一子陣列701中的對應RBL可切換地耦接到加法器樹940,第二組開關1042中的每個開關將第二子陣列702中的對應RBL可切換地耦接到加法器樹。如第10圖所示,第一組開關1041中的每個開關設置在從第一子陣列701的對應RBL到加法器樹940的電路路徑內。可以理解地,開關可以以任何合適的方式實現,例如但不限於金屬氧化物矽場效應電晶體(metal-oxide silicon field effect transistor,MOSFET)。在非限制性示例中,開關可以是NMOS。
第一組開關1041和第二組開關1042一次只有一組開關打開(open or turned off,斷開的),而另一組開關閉合(closed or turned on,接通的)。如第10圖所示,這可以通過根據地址信號CIM_ADDR<2>控制第二組開關1042的切換以及通過根據經由反相器1043的被反相的CIM_ADDR<2>控制第一組開關1041的切換來實現,從而使得兩組開關以彼此相位相反的方式打開或閉合(例如,第一組開關接通而第二組開關斷開,或者,第二組開關接通而第一組開關斷開)。因此,這兩組開關充當替代的多路復用方案,這與第9圖中的互連電路930相比可以節省電路面積。例如,通過在第10圖中移除互連電路930,不需要復用器931。
作為另一個優點,當一組開關被斷開(turned off)時,例如,當相應的子陣列未被CIM_ADDR<2>選擇時,開關將子陣列中的RBL與加法器樹斷開,這可以減少RBL電容和CIM裝置的功耗。
第11圖是根據第八實施例的CIM子陣列架構(其在子陣列的行之間具有加法器復用)的示意圖。第11圖示出了在許多方面與CIM裝置1000相類似的CIM裝置1100,其中,類似的組件用相同的附圖標記表示。與CIM裝置1000一樣,CIM裝置1100也加載有8個4位濾波器(可以理解地,子陣列1101和1103構成一個/單個位單元陣列,即單個的位單元陣列包括子陣列1101和1103,第11圖的示例和第10圖的示例是基於類似思想實現的不同實施例,第10圖是利用上(Up,U)下(Down,D)結構的子陣列來實現位單元陣列,第11圖是利用左右結構的子陣列來實現位單元陣列),CIM裝置1100與CIM裝置1000的不同之處在於:兩個子陣列1101、1103沿著列方向並排設置,且針對輸入激活共享相同的RWL。
與第4圖中的CIM裝置400相比,CIM裝置1100的輸出RBL不使用與記憶體陣列重疊的水平導體420路由到加法器樹。反而,子陣列1101和1103的RBL在互連到加法器樹940之前沿著行方向在子陣列下方進行路由。因此可以實現CIM裝置1100而不需要在不同的金屬層添加垂直通孔和導體420來提供互連。
CIM裝置1100提供與CIM裝置1000不同的解復用方案來選擇8個濾波器中的一個。如第11圖所示,第一地址信號CIM_ADDR<1:0>控制解復用器1151將輸入激活a0路由到四個列之一者的RWL。兩個子陣列之間的選擇進一步通過第二地址信號CIM_ADDR<2>執行,該第二地址信號控制第一組開關1141和第二組開關1143的打開和關閉。第一組開關1141中的每個開關將第一子陣列1101中的對應RBL可切換地耦接到加法器樹940;第二組開關1142中的每個開關將第二子陣列1103中的對應RBL可切換地耦接到加法器樹。如第11圖所示,第一組開關1141中的每個開關設置在從第一子陣列1101的對應RBL到加法器樹940的電路路徑內。開關可以以任何合適的方式實現,例如但不限於金屬氧化物矽場效應電晶體(MOSFET)。在非限制性示例中,開關是NMOS。
第一組開關1141和第二組開關1143一次只有一組開關是打開的,而另一組開關是閉合的。這可以被實現,如第11圖所示,通過基於地址信號CIM_ADDR<2>控制第二組開關1143的切換,以及,通過基於經由反相器反相的CIM_ADDR<2>控制第一組開關1141的切換,使得兩組開關以彼此相反的相位打開或關閉。因此,兩組開關充當複用方案,用於選擇性地將子陣列中的RBL與加法器樹斷開。從而,可以減少RBL電容且可以減少CIM裝置1100的功耗。
第12圖是根據第九實施例的CIM裝置子陣列架構(其在子陣列的列和行中具有加法器復用)的示意圖。第12圖示出了在許多方面與CIM裝置1100相類似的CIM裝置1200,其中類似的組件用相同的附圖標記表示。CIM裝置1200與CIM裝置1100的不同之處在於:提供了四個子陣列1201、1202、1203和1204(可以理解地,第12圖所示實施例中的四個子陣列1201、1202、1203和1204構成一個/單個位單元陣列,即,位單元陣列包括四個子陣列1201、1202、1203和1204)。解碼器1256基於地址信號CIM_ADDR<3:2>控制四組開關1241、1242、1243、1244的切換,以選擇四個子陣列中的一個,并將所選子陣列中的RBL的輸出乘積路由到加法器樹940。第12圖的架構是CIM裝置1100的擴展以提供具有16個濾波器的計算,且可以通過進一步擴展為包括更多子陣列而進一步擴展到32或64個濾波器。
第13圖是根據第十實施例的CIM裝置子陣列架構(其具有相互鄰接的多行子陣列)的示意圖。第13圖示出了具有沿著列方向彼此鄰接的四個行1313-0、1313-1、1313-2、1313-3的CIM裝置1300。每個子陣列可表示位單元陣列,例如,針對每個輸入激活(如a0、a1、…a63)的每一行中的每個子陣列是4×4維的位單元陣列(其由4×4個位單元構成),其共享解復用的RWL以提供輸入激活,類似於第12圖中的CIM裝置1200。多個子陣列的兩個相鄰列之間設置有加法器,以及,加法器樹1340通過沿著列方向延伸的導體耦接到該加法器。在第13圖的示例中,每兩個相鄰列的子陣列之間設置有加法器,例如,四個4位加法器1342被提供在第一列1312-0的下方和第二列1312-1的上方。加法器1342沿著列方向彼此鄰接,例如以切片或交錯方式提供表示四個神經元N0、N1、N2和N3的乘積。由於加法器1342將兩列子陣列(在第13圖的示例中,一個子陣列對應第2A圖中的一個位單元陣列)分隔在上面和下面,所以在同一列內的鄰接子陣列之間或表示相鄰神經元的子陣列之間不需要SRAM邊緣單元。因此,CIM裝置1300可以在其上實現CIM裝置1300的半導體基板上提供更好的電路面積利用效率。
第14圖是示出其中可以實踐一些實施例的說明性計算裝置1400的高級框圖。在第14圖中,計算裝置1400可以是台式計算機、服務器或諸如機器學習加速器之類的高性能計算系統。計算裝置1400也可以是便攜式、手持或可穿戴式電子裝置。在一些實施例中,計算裝置1400可以是智能手機、個人數字助理(personal digital assistance,PDA)、平板電腦、智能手錶。計算裝置1400可以由諸如可充電電池的電池供電。計算裝置1400也可以是通用計算機,因為本申請的方面不限於便攜式裝置或電池供電的裝置。計算裝置1400可以是能夠根據本文公開的任何實施例執行MAC操作的CIM裝置。
計算裝置1400包括具有一個或多個處理器的中央處理單元(central processing unit,CPU)12,具有一個或多個圖形處理器的圖形處理單元(graphics processing unit,GPU)14以及記憶體(例如,非暫時性計算機可讀存儲介質)16,例如,其包括易失性和/或非易失性記憶體。記憶體16可以存儲一個或多個指令以對CPU 12和/或GPU 14進行編程以執行本文所描述的任何功能。記憶體16可以包括一個或多個TCAM位單元陣列,其可以執行根據本文上述公開的MAC操作。記憶體16還可包括路由電路及一個或多個記憶體控制器,其被配置為路由輸入激活值和加法器樹的編程操作。
計算裝置1400可以具有一個或多個輸入裝置和/或輸出裝置,例如,如第14圖所示的用戶輸入介面(user input interface)18和輸出介面(output interface)17。這些裝置可用於呈現用戶界面。可用於提供用戶界面的輸出介面的示例包括用於視覺呈現輸出的打印機或顯示屏、用於輸出聲音的揚聲器或其它聲音生成裝置,以及用於呈現觸覺輸出的振動或機械運動發生器。可用於用戶界面的輸入界面的示例包括鍵盤和指示裝置,例如鼠標、觸摸板或用於筆、觸筆或手指觸摸輸入的數字化儀。作為另一示例,輸入介面18可以包括用於捕捉音頻信號的一個或多個麥克風、一個或多個相機和用於捕捉視覺信號的光傳感器,以及,輸出介面17可以包括用於視覺呈現的顯示屏和/或揚聲器,以向計算裝置1400的用戶30呈現有聲的圖像或文本。
如第14圖所示,計算裝置1400可以包括一個或多個網絡介面19,以實現經由各種網絡(例如,通訊網絡20)的通訊。該網絡的示例包括局域網或廣域網,例如,企業網絡或互聯網。這樣的網絡可以基於任何合適的技術且可以根據任何合適的協議進行操作以及可以包括無線網絡、有線網絡或光纖網絡。網絡介面的示例包括Wi-Fi、WiMAX、3G、4G、5G NR、白色空間(white space)、802.11x、衛星、藍牙、近場通訊(near field communication,NFC)、LTE、GSM/WCDMA/HSPA、CDMA1x/EVDO、DSRC、GPS等),雖然圖中未示出,但計算裝置1400還可以包括一個或多個高速資料總線(其與第14圖所示的組件互連)以及電力子系統(為這些組件提供電力)。
上面描述的各方面和各實施例,可以單獨使用、一起使用或以兩個或更多個的任意組合使用,因為本申請在這方面不受限制。
已經如此描述了本發明的至少一個實施例的一些方面,應當理解,本領域技術人員將容易想到各種改變、修改和改進。這樣的改變、修改和改進旨在成為本公開的一部分,並且旨在落入本發明的精神和範圍內。此外,儘管指出了本發明的優點,但應當理解,並非本文描述的技術的每個實施例都將包括所描述的每個優點。
此外,本發明可以體現為一種方法,本發明提供了該方法的示例。作為該方法的一部分執行的動作可以以任何合適的方式排序。因此,可以構造以不同於圖示的順序執行動作的實施例,這可以包括同時執行一些動作,即使在說明性實施例中被示為順序動作。
在申請專利範圍中使用諸如“第一”,“第二”,“第三”等序數術語來修改申請專利要素,其本身並不表示一個申請專利要素相對於另一個申請專利要素的任何優先權、優先級或順序,或執行方法動作的時間順序,但僅用作標記,以使用序數詞來區分具有相同名稱的一個申請專利要素與具有相同名稱的另一個元素要素。
雖然已經對本發明實施例及其優點進行了詳細說明,但應當理解的係,在不脫離本發明的精神以及申請專利範圍所定義的範圍內,可以對本發明進行各種改變、替換和變更,例如,可以通過結合不同實施例的若干部分來得出新的實施例。所描述的實施例在所有方面僅用於說明的目的而並非用於限制本發明。本發明的保護範圍當視所附的申請專利範圍所界定者為准。所屬技術領域中具有通常知識者皆在不脫離本發明之精神以及範圍內做些許更動與潤飾。
100,400:CIM裝置 110:位單元陣列 110_1,310,410:位單元 120:導體 103:RBL 1301,1043:反相器 1011:真值表 412-0,412-1,412-2,412-3:列 413-0,413-1,413-2,413-3,1313-0,1313-1,1313-2,1313-3:行 420-0,420-1,420-2,420-3:輸出激活線 500,600,700,800,900,1000,1100,1200,1300:CIM裝置 551:路由電路 5511:路由輸入 5512:路由輸出 130,731:靜態隨機存取記憶體(SRAM)邊緣單元 140,740,940,1340:加法器樹 a0,a1,a2,a3,…,a62,a63:輸入激活 651,751,752,1151:解復用器 701,702,703,704,1201,1202,1203,1204:子陣列 854:輸入復用器 930:互連電路 9311:輸出復用器931的輸入 931:輸出復用器 9312:輸出復用器931的輸出 1041:第一組開關 1042:第二組開關 1101,1141:第一子陣列 1103,1142:第二子陣列 1256:解碼器 1241,1242,1243,1244:開關 1312-0:第一列 1312-1:第二列 1342:加法器 30:用戶 1400:計算裝置 12:CPU 14:GPU 16:記憶體 17:輸出介面 18:用戶輸入介面 19:網絡介面 20:通訊網絡
通過閱讀後續的詳細描述和實施例可以更全面地理解本發明,該實施例參照附圖給出。 第1圖是說明MAC操作(其是利用本發明公開的CIM裝置執行的)的示例性神經網絡表示的示意圖。 第2A圖是根據一些實施例示出的具有記憶體陣列的示例性CIM裝置(用於計算如第1圖所示的單層神經網絡)的示意圖。 第2B圖是根據一些實施例示出的具有記憶體陣列的示例性CIM裝置(用於應用濾波器來計算第2A圖中使用的權重矩陣的權重W0,0)的示意圖。 第3A圖是根據一些實施例示出的可以用在CIM裝置中以用於執行MAC操作的示例性8電晶體(8-transistor,8-T)記憶體位單元的示意圖。 第3B圖是說明使用乘法器來應用濾波器的一位(如W F(0,0))的示意圖。 第4圖是根據第一實施例示出的使用記憶體位單元陣列的CIM裝置架構的示意圖。 第5圖是根據第二實施例示出的CIM裝置架構(其為第4圖所示CIM裝置的變體)的示意圖。 第6圖是根據第三實施例示出的CIM裝置架構(其為第5圖所示CIM裝置的變體)的示意圖。 第7圖是根據第四實施例示出的具有子陣列(sub-array)或塊(tile)的CIM裝置架構的示意圖。 第8圖是根據第五實施例示出的具有被復用的激活輸入的子陣列的CIM裝置架構的示意圖。 第9圖是根據第六實施例示出的具有互連電路的CIM裝置架構的示意圖。 第10圖是根據第七實施例示出的在子陣列的列(rows)之間具有加法器復用的CIM裝置子陣列架構的示意圖。 第11圖是根據第八實施例示出的在子陣列的行(columns)之間具有加法器復用的CIM子陣列架構的示意圖。 第12圖是根據第九實施例示出的在子陣列的行和列中具有加法器復用的CIM裝置子陣列架構的示意圖。 第13圖是根據第十實施例示出的具有多行子陣列且相互鄰接的CIM裝置子陣列架構的示意圖。 第14圖是示出其中可以實踐一些實施例的說明性計算裝置1400的高級框圖。 在下面的詳細描述中,為了說明的目的,闡述了許多具體細節,以便所屬技術領域中具有通常知識者能夠更透徹地理解本發明實施例。然而,顯而易見的是,可以在沒有這些具體細節的情況下實施一個或複數個實施例,不同的實施例或不同實施例中披露的不同特徵可根據需求相結合,而並不應當僅限於附圖所列舉的實施例。
500:CIM裝置
551:路由電路
5511:路由輸入
5512:路由輸出
130:靜態隨機存取記憶體邊緣單元
140:加法器樹
a0:輸入激活

Claims (25)

  1. 一種存算一體裝置,包括記憶體陣列及一個或多個加法器,其中,該記憶體陣列包括多個位單元陣列,每個位單元陣列包括:被佈置成多個行和多個列的多個位單元,每個位單元被配置為根據權重矩陣存儲權重,且用於將該權重與輸入激活向量的輸入激活相乘以產生乘積;多條讀字線(RWL),每條RWL沿著列方向延伸,且每條RWL被配置為將該輸入激活向量的輸入激活提供給相應列的位單元;以及,多條讀位線(RBL),每條RBL沿著行方向延伸,且每條RBL被配置為從相應行的位單元接收乘積;其中,該一個或多個加法器耦接該每個位單元陣列的多條RBL,且被配置為基於從該每個位單元陣列的多條RBL接收到的一些或全部乘積產生乘法累加(MAC)值;其中,該一個或多個加法器包括加法器樹;其中,該記憶體陣列包括第一子陣列和第二子陣列,以及,該存算一體裝置還包括:第一組開關,該第一組開關中的每個開關將該第一子陣列中的對應RBL可切換地耦接到該加法器樹;以及,第二組開關,該第二組開關中的每個開關將該第二子陣列中的對應RBL可切換地耦接到該加法器樹;其中,該第一組開關被配置為相對於該第二組開關以相反的相位接通或斷開。
  2. 如請求項1所述之存算一體裝置,該存算一體裝置還包括多個反相器,其中,該多條RBL中的每條RBL經由該多個反相器中的相應反相器耦接至該一個或多個加法器。
  3. 如請求項1所述之存算一體裝置,其中,該記憶體陣列內的該多個位單元是8電晶體(8-T)位單元。
  4. 如請求項1所述之存算一體裝置,其中,該記憶體陣列被配置為接收輸入激活向量和權重矩陣。
  5. 如請求項1所述之存算一體裝置,其中,每條RWL被配置為將該輸入激活向量的輸入激活提供至相應列的位單元,以及,該MAC值是基於該輸入激活向量和該權重矩陣之間的向量乘積。
  6. 如請求項1所述之存算一體裝置,其中,該存算一體裝置還包括:路由電路,其具有被配置為接收輸入激活的路由輸入,以及,耦接到該多條RWL中的一些或全部的多個路由輸出,該路由電路被配置為將該輸入激活路由到該多條RWL中的一些或全部。
  7. 如請求項6所述之存算一體裝置,其中,該路由電路包括解復用器。
  8. 如請求項1所述之存算一體裝置,其中,該存算一體裝置還包括:靜態隨機存取記憶體(SRAM)邊緣單元,被設置在多列位單元中的一列的旁邊。
  9. 如請求項1所述之存算一體裝置,其中,該記憶體陣列包括第一子陣列和沿著行方向與該第一子陣列對齊的第二子陣列,以及,該存算一體裝置還包括:第一路由電路,具有路由輸入和耦接該第一子陣列中的多條RWL中的一些或全部的多個路由輸出;第二路由電路,具有路由輸入和耦接該第二子陣列中的多條RWL中的一些 或全部的多個路由輸出。
  10. 如請求項9所述之存算一體裝置,其中,該存算一體裝置還包括:一個或多個輸入復用器,其可控制為將輸入激活路由到該第一路由電路的路由輸入或該第二路由電路的路由輸入。
  11. 如請求項10所述之存算一體裝置,其中,該存算一體裝置還包括:互連電路,其將該第一子陣列和該第二子陣列中的多條RBL耦接到該加法器樹,其中,該互連電路包括一個或多個輸出復用器。
  12. 如請求項11所述之存算一體裝置,其中,該一個或多個輸出復用器和該一個或多個輸入復用器被配置為接收相同的地址信號且基於該地址信號尋址。
  13. 如請求項1所述之存算一體裝置,其中,該第一子陣列和該第二子陣列是沿著列方向或沿著行方向對齊的。
  14. 如請求項13所述之存算一體裝置,其中,該第一組開關基於地址信號進行切換,以及,該第二組開關基於該地址信號的反相版本進行切換。
  15. 如請求項13所述之存算一體裝置,其中,該存算一體裝置還包括耦接該第一組開關和該第二組開關的解碼器,該解碼器被配置為接收地址信號並控制該第一組開關和該第二組開關基於該地址信號進行切換。
  16. 如請求項1所述之存算一體裝置,其中,該記憶體陣列包括第一子陣列和沿著列方向與該第一子陣列對齊的第二子陣列,以及,該加法器樹位於該第一子陣列和該第二子陣列之間,且耦接到該第一子陣列的部分或全部RBL以及耦接到該第二子陣列的部分或全部RBL。
  17. 如請求項1所述之存算一體裝置,其中,該記憶體陣列包括被 佈置成多個行和多個列的多個子陣列,每列內的多個子陣列彼此鄰接。
  18. 如請求項17所述之存算一體裝置,其中,該一個或多個加法器包括:位於該多個子陣列的兩個相鄰列之間的加法器;以及,加法器樹,通過沿著列方向延伸的導體耦接該加法器。
  19. 如請求項1所述之存算一體裝置,其中,該一個或多個加法器經由沿著列方向延伸的一個或多個導體耦接該多條RBL。
  20. 如請求項19所述之存算一體裝置,其中,該一個或多個導體被佈置在第一金屬層中,該第一金屬層與佈置有該多條RBL的第二金屬層平行且偏離開。
  21. 一種用於操作記憶體陣列以執行輸入激活向量與權重矩陣的乘法累加(MAC)操作的方法,其中,該記憶體陣列包括第一子陣列、第二子陣列及多個位單元陣列,每個位單元陣列被佈置成多個行和多個列的多個位單元,該方法包括:根據該權重矩陣將多個權重存儲在該記憶體陣列的多個位單元中;對於該多個列中的每一列,使用沿著列方向延伸的對應讀字線(RWL)向該列內的位單元提供該輸入激活向量的輸入激活;對於每個位單元,將該輸入激活與存儲在其中的權重相乘以產生乘積;對於該多個行中的每一行,使用沿著行方向延伸的讀位線(RBL)從該行內的對應位單元接收乘積;通過使用耦接該每個位單元陣列的多條RBL的加法器樹對接收到的該乘積求和來產生MAC值;以及將第一組開關配置為相對於該第二組開關以相反的相位接通或斷開;其中該第一組開關中的每個開關將該第一子陣列中的對應RBL可切換地耦 接到該加法器樹;及其中該第二組開關中的每個開關將該第二子陣列中的對應RBL可切換地耦接到該加法器樹。
  22. 如請求項21所述之方法,其中,產生該MAC值包括:產生該輸入激活向量與該權重矩陣之間的向量乘積。
  23. 如請求項21所述之方法,其中,該方法還包括:使用解復用器將輸入激活路由到該多條RWL中的一條RWL。
  24. 如請求項21所述之方法,還包括:基於地址信號將該第一子陣列中的第一組RBL或該第二子陣列中的第二組RBL中的一組可切換地耦接到該加法器樹。
  25. 如請求項24所述之方法,其中,該方法還包括:基於該地址信號將輸入激活選擇性地路由到該第一子陣列或該第二子陣列中的一個。
TW111126564A 2021-07-16 2022-07-15 存算一體裝置及相關的方法 TWI825849B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163222487P 2021-07-16 2021-07-16
US63/222,487 2021-07-16
US17/852,193 2022-06-28
US17/852,193 US20230022347A1 (en) 2021-07-16 2022-06-28 Memory array with programmable number of filters

Publications (2)

Publication Number Publication Date
TW202305623A TW202305623A (zh) 2023-02-01
TWI825849B true TWI825849B (zh) 2023-12-11

Family

ID=82608314

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111126564A TWI825849B (zh) 2021-07-16 2022-07-15 存算一體裝置及相關的方法

Country Status (4)

Country Link
US (1) US20230022347A1 (zh)
EP (1) EP4120270A1 (zh)
CN (1) CN115617306A (zh)
TW (1) TWI825849B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6005813A (en) * 1997-11-12 1999-12-21 Micron Technology, Inc. Device and method for repairing a semiconductor memory
TW201447908A (zh) * 2013-03-04 2014-12-16 Micron Technology Inc 使用感測電路進行邏輯運算之裝置及方法
US20190102671A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Inner product convolutional neural network accelerator
WO2019246064A1 (en) * 2018-06-18 2019-12-26 The Trustees Of Princeton University Configurable in-memory computing engine, platform, bit cells and layouts therefore
US20200258569A1 (en) * 2019-02-09 2020-08-13 Purdue Research Foundation Multi-bit dot product engine
US11049013B1 (en) * 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126402B2 (en) * 2019-03-21 2021-09-21 Qualcomm Incorporated Ternary computation memory systems and circuits employing binary bit cell-XNOR circuits particularly suited to deep neural network (DNN) computing
US10958272B2 (en) * 2019-06-18 2021-03-23 Gsi Technology, Inc. Computational memory cell and processing array device using complementary exclusive or memory cells

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6005813A (en) * 1997-11-12 1999-12-21 Micron Technology, Inc. Device and method for repairing a semiconductor memory
TW201447908A (zh) * 2013-03-04 2014-12-16 Micron Technology Inc 使用感測電路進行邏輯運算之裝置及方法
US20190102671A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Inner product convolutional neural network accelerator
US11049013B1 (en) * 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit
WO2019246064A1 (en) * 2018-06-18 2019-12-26 The Trustees Of Princeton University Configurable in-memory computing engine, platform, bit cells and layouts therefore
US20200258569A1 (en) * 2019-02-09 2020-08-13 Purdue Research Foundation Multi-bit dot product engine

Also Published As

Publication number Publication date
US20230022347A1 (en) 2023-01-26
EP4120270A1 (en) 2023-01-18
TW202305623A (zh) 2023-02-01
CN115617306A (zh) 2023-01-17

Similar Documents

Publication Publication Date Title
TWI714806B (zh) 動態隨機存取記憶體處理單元架構
JP7209616B2 (ja) Gemmデータフロー加速器半導体回路
Haj-Ali et al. Efficient algorithms for in-memory fixed point multiplication using magic
CN109328343B (zh) 具有用以加速大数据应用的计算引擎的非易失性存储系统
JP2930341B2 (ja) データ並列処理装置
TWI713047B (zh) Dram式處理單元的電路和微架構
US20030222879A1 (en) Multiplier-based processor-in-memory architectures for image and graphics processing
US10180808B2 (en) Software stack and programming for DPU operations
Garofalo et al. A heterogeneous in-memory computing cluster for flexible end-to-end inference of real-world deep neural networks
US20220366968A1 (en) Sram-based in-memory computing macro using analog computation scheme
CN115904311A (zh) 用于多位存储单元中计算的模拟乘法-累加部件
JP2007522571A (ja) 任意のアルゴリズムを並列計算するための再構成可能なスイッチング装置
TWI825849B (zh) 存算一體裝置及相關的方法
Yoshida et al. The approach to multiple instruction execution in the GMICRO/400 processor
US20220334801A1 (en) Weight stationary in-memory-computing neural network accelerator with localized data multiplexing
CN115831185A (zh) 存算一体芯片、操作方法、制作方法和电子设备
TWI815392B (zh) 存內計算裝置及用於執行mac操作之方法
EP4193358A1 (fr) Module memoire reconfigurable adapte a mettre en oeuvre des operations de calcul
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
Duan et al. DDC-PIM: Efficient Algorithm/Architecture Co-design for Doubling Data Capacity of SRAM-Based Processing-In-Memory
US20230418604A1 (en) Reconfigurable vector processing in a memory
US20230385624A1 (en) Computing in memory with artificial neurons
US20230418508A1 (en) Performing distributed processing using distributed memory
Mun et al. Bottleneck-Stationary Compact Model Accelerator With Reduced Requirement on Memory Bandwidth for Edge Applications
Wang et al. Benchmarking DNN Mapping Methods for the In-Memory Computing Accelerators