TWI815392B - 存內計算裝置及用於執行mac操作之方法 - Google Patents

存內計算裝置及用於執行mac操作之方法 Download PDF

Info

Publication number
TWI815392B
TWI815392B TW111113436A TW111113436A TWI815392B TW I815392 B TWI815392 B TW I815392B TW 111113436 A TW111113436 A TW 111113436A TW 111113436 A TW111113436 A TW 111113436A TW I815392 B TWI815392 B TW I815392B
Authority
TW
Taiwan
Prior art keywords
tcam
activation
array
computing device
sram
Prior art date
Application number
TW111113436A
Other languages
English (en)
Other versions
TW202240583A (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 TW202240583A publication Critical patent/TW202240583A/zh
Application granted granted Critical
Publication of TWI815392B publication Critical patent/TWI815392B/zh

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • 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
    • 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/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/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
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/06Arrangements for interconnecting storage elements electrically, e.g. by wiring
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • G11C15/043Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using capacitive charge storage elements

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Logic Circuits (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Circuits Of Receivers In General (AREA)

Abstract

本發明的方面涉及用於使用TCAM陣列作為存算一體(CIM)裝置來執行MAC操作的裝置和方法,與使用位於記憶體陣列外部的處理器的計算相比,其能夠實現更高的計算吞吐量、更高的性能和更低的能耗。在一些實施例中,權重矩陣中的權重可被編程在TCAM位單元陣列的多個SRAM中。每個SRAM可以作為乘法器操作,該乘法器執行存儲的權重與應用在TCAM位單元陣列中的搜索線的輸入激活值之間的乘法。TCAM位單元內的兩個SRAM可以獨立地操作為在它們各自的選擇線上獨立地接收兩個輸入激活值,並利用存儲在每個相應的SRAM中的權重來執行乘法操作。

Description

存內計算裝置及用於執行MAC操作之方法
本申請一般涉及存算一體(compute-in-memory,CIM)裝置,以及更具體地,涉及可以執行乘法和累加(multiply and accumulate,MAC)操作的CIM裝置。
深度學習、機器學習、神經網絡和其它基於矩陣的可微程序用於解決各種問題,包括自然語言處理和圖像中的目標識別。解決這些問題通常涉及基於矩陣向量乘法執行計算。例如,在具有多個神經元的神經網絡中,輸入到神經元的激活值可被視為輸入激活向量,而來自神經元的輸出激活值可被視為輸出激活向量。該神經網絡的計算通常涉及輸入激活向量與權重矩陣的矩陣向量乘法,以計算輸出激活向量。通常,權重矩陣可以是矩形的(rectangular),輸出激活向量的長度不一定與輸入激活向量的長度相同。神經網絡的計算通常涉及對資料值(包括輸入/輸出激活向量和權重)執行的乘法和累加(multiply and accumulate,MAC)操作的計算。MAC操作是指兩個值之間的乘法運算,以及,隨後將一系行乘法結果累加以提供輸出MAC值。
大型深度神經網絡的計算涉及許多不同資料值的大規模並列計算。計算操作(例如,算術或邏輯運算)通常由處理器基於處理器與存儲裝置(例如,記憶體陣列)之間的資料傳輸進行。隨著大規模並列神經網絡的資料 吞吐量要求增加,快速處理器與記憶體的較慢資料傳輸有時可能成為機器學習應用的瓶頸。
內容可尋址記憶體(Content-addressable memory,CAM)是一種為搜索密集型應用設計的計算機記憶體。由於其並列特性,CAM的搜索速度比隨機存取記憶體(random access memory,RAM)架構快得多。CAM通常用在互聯網路由器和交換機中,它們可以提高路由查找、資料包分類和資料包轉發的速度。三元CAM或TCAM被設計為使用三種不同的輸入(0、1和X)來存儲和查詢資料。“X”輸入(通常被稱為“無關”或“通配符”狀態)使得TCAM基於模式匹配執行更廣泛的搜索,而不是三元CAM,其中,三元CAM僅使用0和1執行精確的匹配搜索。
本發明提出了一種存內計算裝置及用於執行MAC操作之方法,以實現更高的計算吞吐量和更高的性能。
第一方面,一種存內計算裝置,包括:記憶體陣列,包括被佈置成多個列的多個三態內容可尋址記憶體(TCAM)位單元,其中,每個TCAM位單元包括兩個靜態隨機存取記憶體(SRAM),每個SRAM被配置為將存儲在其中的權重應用於輸入激活以產生輸出值;以及多條激活線,每條激活線互連到該多個列中的相應列的TCAM位單元,且被配置為從位於該相應列內的每個TCAM位單元中的兩個SRAM接收輸出值。
在一些實施例中,該存內計算裝置還包括:加法器,具有多個加法器輸入,每個加法器輸入耦接到該多條激活線中的相應激活線,該加法器被配置為基於該兩個SRAM的輸出值產生乘法累加(MAC)值。
在一些實施例中,該多個TCAM位單元中的每個TCAM位單元包 括:被配置為從第一條搜索線接收輸入激活的第一SRAM和被配置為從第二條搜索線接收輸入激活的第二SRAM。
在一些實施例中,該存內計算裝置還包括多個反相器,其中,每條激活線經由該多個反相器中的相應反相器耦接到相應的加法器輸入。
在一些實施例中,該記憶體陣列內的TCAM位單元是16電晶體(16-T)TCAM位單元。
在一些實施例中,該記憶體陣列被配置為接收輸入激活向量和權重矩陣。
在一些實施例中,該輸入激活向量的輸入激活被提供給兩個或更多個不同列的TCAM位單元。
在一些實施例中,該輸入激活向量是被以時分複用方式接收的。
在一些實施例中,在每個SRAM內,該輸出值是基於該權重和該輸入激活的乘積產生的。
在一些實施例中,該記憶體陣列位於第一層中,該第一搜索線位於與該第一層平行的第二層中,以及,該多條激活線包括位於第三層中的導體,該第三層與該第二層平行且與該第二層偏離開。
在一些實施例中,該多個TCAM位單元被佈置在多個行中,以及,該存內計算裝置還包括:路由電路,位於該多個行中的一個行的旁邊,且被配置為將輸入激活路由到該多個TCAM位單元中的一些或全部。
在一些實施例中,該存內計算裝置還包括:SRAM邊緣單元,位於該多個TCAM位單元的一列的旁邊。
在一些實施例中,該記憶體陣列包括:第一子陣列和沿行方向位於該第一子陣列下方的第二子陣列,該SRAM邊緣單元位於該第一子陣列和該第二子陣列之間。
在一些實施例中,該存內計算裝置還包括:路由電路,位於該多個列中的一列的旁邊,且被配置為將輸入激活路由到該多個TCAM位單元中的一些或全部。
在一些實施例中,該記憶體陣列包括:第一子陣列和沿行方向位於該第一子陣列下方的第二子陣列,以及,在該第一子陣列和第二子陣列之間沒有SRAM邊緣單元。
第二方面,本發明提供了一種用於執行乘法和累加(MAC)操作之方法,其中,該方法通過操作三態內容可尋址記憶體(TCAM)單元陣列來對輸入激活向量和權重矩陣執行該MAC操作,該TCAM單元陣列中的多個TCAM位單元被佈置成多個列且每個TCAM位單元包括兩個靜態隨機存取記憶體(SRAM),以及,該方法包括:將多個權重存儲在該TCAM單元陣列內的多個SRAM中;利用該多個SRAM將輸入激活向量與該多個權重相乘以產生多個輸出值;利用激活線收集來自該多個列中的相應列的每個TCAM位單元中的兩個SRAM的輸出值;以及對來自該激活線的輸出值求和以產生MAC值。
在一些實施例中,對來自該激活線的輸出值求和包括:將該激活線耦接到加法器樹。
在一些實施例中,該乘法的動作是以時分複用的方式執行的。
在一些實施例中,該乘法的動作包括:為TCAM位單元中的第一SRAM提供來自該TCAM單元陣列的第一搜索線的輸入激活向量的第一輸入激活;以及為該TCAM位單元中的第二SRAM提供來自該TCAM單元陣列的第二搜索線的輸入激活向量的第二輸入激活。
在一些實施例中,該乘法的動作還包括:向該多個列的兩列或多個不同列的TCAM位單元中的SRAM提供第一輸入激活。
本發明提供的高線性度輸入緩衝器包括頻變阻抗電路,能夠提供 高線性度的輸出信號。本發明內容是通過示例的方式提供的,並非旨在限定本發明。在下面的詳細描述中描述其它實施例和優點。本發明由申請專利範圍限定。
100,200,300,400,500:CIM裝置
112-0,212-0:第一列
112-1,212-1,:第二列
112-2:第三列
112-3:第四列
110:TCAM位單元
101:第一SRAM
101a,102b:搜索線
102:第二SRAM
103:公共輸出節點
101a:第一SRAM 101的搜索線
102b:第二SRAM 102的搜索線
120,120-0,120-1,120-2,120-3,220-0:激活線
130:SRAM邊緣單元
150:反相器
140,240,442:加法器樹
201,202:SRAM
262:時鐘週期
264:第一時期
266:第二時期
301,302,303,304:子陣列
351,352,451,551:路由電路
401:陣列
440,540:4位加法器
501,502:TCAM位單元陣列
542:加法器/累加器
1000:計算裝置
12:CPU
14:GPU
16:記憶體
17:輸出介面
18:用戶輸入介面
19:網絡介面
20:通訊網絡
30:用戶
通過閱讀後續的詳細描述和實施例可以更全面地理解本發明,該實施例參照附圖給出。應當理解,附圖不一定按比例繪製。出現在多個附圖中的項目在它們出現的所有附圖中由相同的附圖標記表示。
第1圖是說明MAC操作的示例性神經網絡表示的示意圖,該MAC操作是利用本文公開的CIM裝置執行的。
第2圖是根據發明一些實施例示出的用在CIM裝置中以執行MAC操作的示例性16電晶體(16-transistor,16-T)TCAM位單元的示意圖。
第3A圖是根據本發明第一實施例示出的使用TCAM位單元陣列的CIM裝置架構的示意圖。
第3B圖是示出第3A圖所示的相同CIM裝置的示意性電路圖,並詳細介紹了每個TCAM位單元內的SRAM電路和輸入激活總線架構。
第4A圖是根據本發明第二實施例示出的CIM裝置架構(在該架構中,以時分複用方式執行加法)的示意圖。
第4B圖是根據本發明一些實施例示出的用於操作第4A圖所示的CIM裝置200的示例性時序示意圖。
第5圖是根據本發明第三實施例示出的具有多個塊(tiles)的CIM裝置的示意圖。
第6圖是根據本發明第四實施例示出的具有帶轉置輸入激活線路由方案的多個塊的CIM裝置的示意圖。
第7圖是根據本發明第五實施例示出的具有連續塊架構的CIM裝置的另一變體的 示意圖。
第8圖是示出說明性計算裝置1000的框圖示意圖。
在下面的詳細描述中,為了說明的目的,闡述了許多具體細節,以便所屬技術領域中具有通常知識者能夠更透徹地理解本發明實施例。然而,顯而易見的是,可以在沒有這些具體細節的情況下實施一個或多個實施例,不同的實施例或不同實施例中披露的不同特徵可根據需求相結合,而並不應當僅限於附圖所行舉的實施例。
以下描述為本發明實施的較佳實施例。以下實施例僅用來例舉闡釋本發明的技術特徵,並非用來限制本發明的範疇。在通篇說明書及申請專利範圍當中使用了某些詞彙來指稱特定的組件。所屬技術領域中具有通常知識者應可理解,製造商可能會用不同的名詞來稱呼同樣的組件。本說明書及申請專利範圍並不以名稱的差異來作為區別組件的方式,而係以組件在功能上的差異來作為區別的基準。本發明的範圍應當參考后附的申請專利範圍來確定。在以下描述和申請專利範圍當中所提及的術語“包含”和“包括”為開放式用語,故應解釋成“包含,但不限定於...”的意思。此外,術語“耦接”意指間接或直接的電氣連接。因此,若文中描述一個裝置耦接至另一裝置,則代表該裝置可直接電氣連接於該另一裝置,或者透過其它裝置或連接手段間接地電氣連接至該另一裝置。文中所用術語“基本”或“大致”係指在可接受的範圍內,所屬技術領域中具有通常知識者能夠解決所要解決的技術問題,基本達到所要達到的技術效果。舉例而言,“大致等於”係指在不影響結果正確性時,所屬技術領域中具有通常知識者能夠接受的與“完全等於”有一定誤差的方式。
本發明公開了用於執行MAC操作的裝置和方法,其利用TCAM陣 列作為存算一體(compute-in-memory,CIM)裝置。CIM(存算一體)或存內計算(in-memory computation,或可互換地稱為“記憶體內計算”)是一種利用位於記憶體陣列內的內部電路對資料執行計算而無需將此類資料發送至處理器的技術,與利用位於記憶體陣列外部的處理器的計算相比,CIM或存內計算可以實現更高的計算吞吐量和更高的性能。由於減少了外部處理器和記憶體之間的資料移動,因此,CIM還可以減少能源消耗(energy consumption)。在本發明實施例中,存算一體裝置和存內計算裝置的稱呼是可互換的。
一些實施例涉及一種CIM裝置,其包括被佈置成列(row)和行(column)的TCAM位單元(TCAM bit cells)的陣列(亦可互換地稱為TCAM位單元陣列或TCAM單元陣列,其包括被佈置成列和行的多個TCAM位單元)。每個TCAM位單元具有兩個靜態隨機存取記憶體(static random-access memory,SRAM),如第2圖中示出的6-T SRAM+2個電晶體。權重矩陣中的權重可以作為電荷存儲在TCAM位單元的每個SRAM中。每個SRAM(如第2圖所示,這裡描述的SRAM包括第2圖中標註的“6T SRAM”和對應的兩個電晶體)可以作為乘法器(multiplier)操作,該乘法器執行存儲的權重與施加到TCAM位單元陣列中的搜索線的輸入激活值之間的乘法(multiplication)。TCAM位單元內的兩個SRAM可以獨立地操作以在它們各自的(respective)選擇線上獨立地接收兩個輸入激活值,並利用存儲在每個各自的SRAM中的權重來執行乘法操作。可以理解地,本領域普通技術人員應當理解16-T TCAM位單元的結構,其是熟知的,故本文不再詳細描述TCAM位單元的具體結構及功能。
在一些實施例中,同一列(same row)內的多個TCAM位單元與激活線互連在一起,以接收輸出值,該輸出值為由一列TCAM位單元內的SRAM執行的乘法的結果。針對MAC操作的求和(summing)由耦接到激活線的加法器樹(adder tree)提供。在一些實施例中,每列TCAM位單元設置有相應的激活線, 以從該列接收來自TCAM位單元的輸出乘法值。激活線耦接到用於MAC操作的加法器樹。
根據本發明的一方面,由於用於一列TCAM單元的激活線與用於該列內的多個TCAM位單元的多個選擇線(其是在行方向上延伸的)相交(intersecting),因此,為了避免激活線和選擇線之間的短路,激活線可以由導體(conductor)來實現,該導體被設置(disposed)在與用於TCAM位單元陣列的基板內的選擇線所處層/平面不同的層(layer)/平面(plane)中,例如,位於較高的金屬層中。一個或多個垂直通孔結構可以被提供,以將激活線耦接到相應的TCAM位單元來接收輸出值。
一些方面涉及CIM裝置執行MAC計算的操作。一方面涉及基於要執行的MAC操作將權重矩陣中的權重編程到TCAM位單元陣列的SRAM中。在一些實施例中,輸入激活向量中的輸入激活值被提供給不同列的TCAM位單元。由於每個TCAM位單元提供兩個SRAM存儲兩個權重,因此,與兩個權重的乘法運算可以是以時分複用的方式執行的。在一示例中,控制器可以使得兩個乘法運算是在一個時鐘週期內的不同的非重疊時期(different non-overlapping phases)執行的,以產生時間複用輸出值。在這樣的示例中,可以在完成乘法之後的時鐘週期中執行該時間復用輸出值的加法。
在一些實施例中,CIM裝置包括TCAM位單元陣列的多個子陣列(sub-arrays)或組(tiles)。在第一實施例中,第一塊沿行方向位於第二塊之上,CIM裝置包括將這兩個塊分開的SRAM邊緣單元(SRAM edge cell),以使得相鄰的第一塊和第二塊之間的搜索線可以用於獨立地提供不同的輸入激活向量。在這樣的實施例中,輸入激活向量通過沿一行TCAM位單元的路由/佈線電路(routing circuit)可以沿塊的一側水平地佈線/路由。在另一實施例中,輸入激活向量的路由可以是利用跨不同塊的行來提供的。在這樣的實施例中,由於搜 索線能夠跨相鄰塊共享,因此,相鄰塊之間不需要SRAM邊緣單元且可以實現更高的陣列效率。
一些方面可以利用針對TCAM位單元的現有代工廠設計而沒有硬體改變或做較少的硬體改變,這可以降低所公開的CIM裝置的設計和製造成本。
本文公開的實施例可用於人工智能(artificial intelligence,AI)應用中的神經網絡的計算,下面詳細描述一些示例。應當理解的是,本發明實施例還可以用於其它應用,例如但不限於圖像處理、圖像分類和利用相機捕獲的圖像人臉識別。在一些實施例中,CIM裝置是移動設備的一部分。
下文進一步描述上述方面和實施例,以及附加方面和實施例。這些方面和/或實施例可以被單獨使用、一起使用或以兩個或更多個的任意組合使用,本發明對此不做限制。
第1圖是示例性神經網絡表示的示意圖,其示出了利用本文公開的CIM裝置執行的MAC操作。第1圖示出了輸入激活向量(a0,a1,a2,a3),它可以表示來自前一層的四個輸入激活值。神經網絡應用權重矩陣
Figure 111113436-A0305-02-0011-1
,其中,每個權重wi,j分別表示用於相應的輸入激活和神經元的權重。神經網絡基於輸入激活向量與權重矩陣的向量矩陣乘法(vector-matrix multiplication)產生輸出激活向量(N0,N1,N2,N3),其具有用於下一層(next layer)的四個相應神經元的四個輸出值N0...N3。向量矩陣乘法可以是利用MAC運算執行的。應該理解的是,雖然第1圖示出的是4x4的方形權重矩陣,但這僅用於說明目的,本發明並不限於此示例。可以理解地,前一層(previous layer)的神經元的數量可與下一層的神經元的數量不同,以及,輸入激活向量和輸出激活向量可以具有任何合適的大小(size,亦可互換地稱為“尺寸”)和/或維度(dimension)。
第2圖是根據一些實施例示出的可以用在CIM裝置中用於執行MAC操作的示例性16電晶體(16-transistor,16-T)TCAM位單元的示意圖。第2圖示出了包括第一SRAM 101和第二SRAM 102的TCAM位單元110。TCAM位單元110是16-T TCAM位單元,其中,SRAM 101、102中的每一個可被實現為6-T SRAM加兩個相應的電晶體。應當說明的是,現在已知或未來開發的TCAM位單元的任何代工設計均可以用於TCAM位單元110,本發明在這方面不受任何限制。
如第2圖所示,用於對TCAM位單元110進行編程的任何已知技術可用於在SRAM 101、102上存儲電荷Q0和Q1,其中,Q0和Q1的位值(bit value)可表示權重矩陣的兩個權重值。第一SRAM 101從第一搜索線(search line)SL接收第一輸入值a,而SRAM 102從第二搜索線SLB接收第二輸入值b。在本發明實施例中,SRAM 101、102中的每一個可以作為輸入值與存儲電荷的獨立乘法器來操作,其中,輸出值被提供在SRAM 101和SRAM 102共享的公共輸出節點(common output node)103處。例如,反相輸出節點MULT通過反相器150耦接到公共輸出節點103。本領域普通技術人員應當理解,TCAM位單元110相當於是對存儲的權值Q0與從第一搜索線SL接收到的第一輸入值相乘然後再反相,從而,TCAM位單元110的輸出值經由反相器150後的MULT相當於是Q0與第一輸入值的乘積。也就是說,TCAM位單元110相當於執行了乘法操作和反相操作,本領域普通技術人員可以理解,其也是屬於乘法器操作。如第2圖中的真值表1011所示,MULT的位值表示第一輸入值a與第一SRAM的權重Q0的乘積。例如,當第一輸入值a和權重Q0都為1時,MULT才為1。如第2圖中的真值表1021所示,MULT的位值表示第二輸入值b與第二SRAM的權重Q1的乘積。儘管第2圖的真值表示出了具有單個位元(single bit)權重Q0和Q1的乘法,但多位元乘法也是適用的,例如,通過將多個位元值存儲在SRAM中的電容器中。
根據一方面,當TCAM 110用在CIM裝置中時,輸入值a和b獨立地 應用於SL和SLB,從而使得SRAM 101、102兩者可以執行獨立的乘法。此操作不同於某些使用TCAM的非CIM操作,例如,存儲或搜索,其中,SL和SLB彼此不是獨立操作的。可以使用用於獨立控制將不同輸入值路由到SL和SLB的任何合適技術。在一示例中,輸入值可以被順序地提供,或者,以時間復用的方式提供,以使得在一時間段內,只有一個乘法操作在TCAM 110內執行。
第2圖還示出了跨兩個搜索線SL和SLB且水平延伸的激活線120,以將公共輸出節點103互連到反相器150的輸入。在一些實施例中,為了避免激活線120與搜索線SL、SLB之間的短路,激活線120被實施為在金屬層中延伸的導體ML,其中,該金屬層位於偏離(offset)於搜索線SL和SLB所在的層/平面的不同層/平面(在本發明中,“層”和“平面可互換地使用”)中,且平行於TCAM 110的半導體基板(substrate)的表面。在非限制性示例中,激活線120被設置在/位於(is disposed in)M3金屬層中。換句話說,在一些實施例中,記憶體陣列、搜索線以及激活線分別位於不同的金屬層。在TCAM 110使用現有代工廠TCAM設計的實施例中,激活線120被添加而不顯著增加整個記憶體陣列的電路設計的成本或複雜性。
第3A圖是根據本發明第一實施例的利用TCAM位單元陣列的CIM裝置架構的示意圖。第3A圖示出了CIM裝置100,其包含排行成四列四行的TCAM位單元陣列110。在第一列112-0內,四個TCAM位單元的輸出節點一起互連到激活線120-0,激活線120-0是沿列方向延伸的。激活線120-0通過反相器耦接到加法器樹(adder tree)140,並將反相輸出MULT[0]提供給加法器樹140。
第3A圖說明了將權重矩陣的權重加載到TCAM位單元陣列的不同SRAM位置以及輸入激活值的路由(routing)的示例,以在8位元輸入激活向量(a0,a1,......a7)與8x4權重矩陣
Figure 111113436-A0305-02-0013-3
之間執行向量矩陣乘法。第3A 圖中的TCAM位單元陣列被配置為採用8個不同的輸入激活值a0、a1、......a7,它們沿著最左邊的行進行路由。例如,利用第一列112-0,第一輸入激活值a0被提供在第一SRAM 101的搜索線101a處,第一SRAM 101將a0與權重w(0,0)相乘。第二輸入激活值a1被提供在第二SRAM 102的搜索線102b處,第二SRAM 102將a1與權重w(1,0)相乘。來自兩個SRAM 101、102的乘法的結果作為輸出值提供給激活線120-0作為MULT[0]。加法器樹140被配置為從MULT[0]接收乘積a0.w(0,0)和a1.w(1,0)並相應地執行累加操作。
仍然參考第3A圖中的第一列112-0,其說明了第一列內的8個SRAM中的每一個如何分別耦接到8個輸入激活值a0、a1、......a7中的其中一個的激活總線架構。在操作期間,每次提供8個輸入激活值。例如,路由電路可以僅激活(active)對應於其中一個輸入激活值的搜索線,而禁用(disable)其餘7個輸入激活值的搜索線。第一列112-0中的四個TCAM位單元中的SRAM的8個乘積被表示在MULT[0]中。加法器樹140基於a0.w(0,0)+a1.w(1,0)+a2.w(2,0)+a3.w(3,0)+a4.w(4,0)+a5.w(5,0)+a6.w(6,0)+a7.w(7,0)累積MULT[0]中的乘積,以提供MAC值N0。
仍參考第3A圖,其示出了TCAM位單元的剩餘三列112-2、112-2、112-3中的每一列經由對應的激活線120-1、120-2、120-3耦接到加法器樹140。值得注意的是,每個輸入激活值僅被提供給每列內的其中一個SRAM,以及,輸入激活值被提供給四列中的每一列。因此,可以在四個列中同時執行四個乘法運算,以產生四個MULT值,且四個MULT值可並列地輸出到加法器樹140。
第3B圖是示出第3A圖所示的相同CIM裝置的示意性電路圖,並詳細介紹了每個TCAM位單元內的SRAM電路和輸入激活總線架構。例如,第3B圖示出了左上TCAM位單元的第一SRAM耦接到第一搜索線(search line)101a,而同一TCAM位單元的第二SRAM耦接到第二搜索線102b。
基於TCAM的CIM裝置100可以提供若干優點。CIM陣列架構具有高度的可擴展性,以給具有不同矩陣和向量大小要求的跨不同技術代的應用提供靈活性。例如,雖然第3A圖示出了具有8x4權重矩陣的MAC操作,但CIM裝置100可以被擴展為能夠適應任何大小的權重矩陣。例如,通過增加更多的4列TCAM位單元,可以使用8×8權重矩陣。類似地,可以通過將四列中的每一列擴展到具有8個行來計算16×4權重矩陣。激活線120-0的長度可以沿著列方向增加以容納額外的行。可以基於現在已知或未來開發的任何合適的SRAM/TCAM讀/寫電路架構來提供大量乘法器單元,以受益於TCAM位單元陣列的高存儲密度。例如,可以通過使用陣列內的更多位單元行和列,和/或通過使用如下所述的一組子陣列來提供縮放。
返回參考第3A圖,在列112-3下方提供有SRAM邊緣單元(edge cell)130。邊緣單元130可以提供四列112-0、112-1(第二列)、112-3(第三列)、112-3(第四列)與附加電路(例如,位於第3A圖所示的邊緣單元130下方的不同塊中的附加列TCAM位單元)之間的電隔離。
第4A圖是根據本發明第二實施例示出的在CIM裝置架構中以時分複用方式執行加法運算的示意圖。第4A圖示出了具有兩列212-0、212-1的CIM裝置200,其中,每列具有4個TCAM位單元。在第一列212-0中,激活線220-0耦接到每個TCAM位單元,以將輸出值MULT[0]提供給加法器樹240。
CIM裝置200允許一個輸入激活值(例如,a0)與不同權重的時間復用乘法。如圖所示,與a0的乘積被配置為分兩個階段執行。例如,a0_p1被提供給SRAM 201中的w(0,0),而a0_p1被提供給與SRAM 201位於相同列212-0內的SRAM 202中的w(0,2)。乘法a0.w(0,0)和a0.w(0,2)可以在不同的時間執行,例如,在兩個不重疊的階段。這在第4B圖中進行說明,第4B圖為根據一些實施例的用於操作第4A圖所示的CIM裝置200的示意性時序圖。
第4B圖示出了乘積a0.w(0,0)和a0.w(0,1)可以在時鐘週期262的第一時期264的期間並列執行,在第一時期264中,a0_p1是有效的(active)而a0_p2是被禁用的(disabled)。可以在時鐘週期262的第二時期266的期間執行乘積a0.w(0,2)和a0.w(0,3),在第二時期266中,a0_p2是有效的而a0_p1是被禁用的。時鐘週期262可以是由CIM裝置200內的電路提供的時鐘信號CLK,但本發明並不限於此,即可以使用任何合適的時序信號。
在第4A圖所示的第二實施例中的權重矩陣映射(以適應時分複用操作)還與第3A圖所示的第一實施例中的權重矩陣映射是不同的。因此,不同於CIM裝置100,在CIM裝置200中,一個輸入激活值a0與不同權重的乘法輸出值通過單個激活線互連,而不是CIM裝置100中的多個激活線。例如,在第4A圖中,a0.w(0,0)和a0.w(0,2)這兩者都通過第一列中的激活線220-0互連到MULT[0],而該相同的乘積需要第3A圖中的兩列MULT[0]和MULT[2]。因此,第二實施例可以提供優於第一實施例的一些優點。由於需要更少的列數,可以使半導體基板沿行方向上的加法器高度更緊湊,從而提高半導體基板上的面積利用率。作為另一個優點,由於針對w(0,0)和w(0,2)的SRAM在不同的時間階段切換,因此,在給定時間處切換的位單元數量更少。因此,隨著時間的推移,開關電流可以更均勻地分佈,從而降低平均開關電流並降低局部電阻性IR壓降。同時,由於第二實施例並列進行的計算更少,因此與第一實施例相比,計算更慢。
第5圖是根據本發明第三實施例示出的具有多個組(tiles,或可互換地稱為“塊”)的CIM裝置的示意圖。如第5圖所示,CIM裝置300包括四個塊(或子陣列)301、302、303、304的TCAM位單元。每個塊在很多方面類似於第3A圖中所示的TCAM位單元陣列。激活輸入值a0提供給塊301是通過位於塊301左邊緣且平行於行方向的路由電路351進行路由的(routed)。激活輸入值a1提供給塊302是通過位於塊302的左邊緣且平行於行方向的路由電路352進行路由的。塊 302位於塊301下方,並通過一個或多個SRAM邊緣單元130與塊301分隔開,以切斷一個塊中的選擇線延伸到不同塊中,從而在不同的激活輸入之間提供電隔離。該塊可以是利用第3A圖所示的第一實施例,第4A圖所示的第二實施,兩個實施例的組合,或TCAM位單元陣列的任何其它合適的佈置實現的。
在第5圖中,路由電路351可以是解復用器(demultiplexer),用於基於例如從控制器(未示出)傳輸到解復用器的3位(3-bit)控制輸入信號將a0引導到用於輸入激活值的八個不同輸入之一。應當理解的是,可以使用用於將信號路由到另一電路的多個輸入的任何合適的解碼電路(decoding circuitry)。在一示例中,路由電路351可以包括字線解碼器(word-line decoder)。
第6圖是根據本發明第四實施例示出的利用轉置的(transposed)輸入激活線路由方案以及包括多個塊的CIM裝置的示意圖。如第6圖所示,CIM裝置400與第5圖中的CIM裝置300不同,不同之處在於:利用位於陣列401底列(bottom row)旁邊的路由電路451,輸入激活值是從陣列401下方路由的。由於輸入線的這種垂直路由,TCAM位單元的陣列401可以垂直延伸成多列(例如,如第6圖所示的64個SRAM列),而不被分解為8位或4位子陣列(這些子陣列由SRAM邊緣單元分隔開以進行隔離)。由於列之間沒有SRAM邊緣單元佔用空間,本實施例可以大大提高區域利用效率。
權重矩陣陣列401的配置可以相對於輸入激活值的路由進行編程,類似於第3A圖所示的第一實施例,第4A圖所示的第二實施例,兩個實施例的組合,或TCAM位單元陣列的任何其它合適的佈置,以提供輸入激活向量與權重矩陣的MAC操作。
在第6圖中,每列TCAM位單元的輸出值通過沿列方向的水平激活線互連到4位加法器440,4位加法器440又連接到加法器樹442,加法器樹442被配置為對加法器樹接收到的值進行累加。可以理解地,加法器的作用是進行相 鄰兩個激活值運算結果(4-bit)求和,而加法器樹則是將加法器的輸出進行累加。二者的功能相同,但結構有所不同,後者會在多級累加的過程中優化邏輯,減小面積,延時和功耗,本領域普通技術人員應當理解加法器和加法器樹的結構,因此,本文不再詳細描述。
第7圖是根據本發明第五實施例示出的具有連續塊架構的CIM裝置的另一變體的示意圖。在第7圖中,CIM裝置500包括在列和行方向上延伸的連續的TCAM位單元陣列501、502。輸入激活向量的路由由位於陣列501下方並在陣列501的底列旁邊的路由電路551提供。類似於第6圖中的實施例,輸入資料的這種垂直佈線允許記憶體塊沿行方向堆疊以針對每條位線提供32、64、128、256列或更多列。關於輸出,可以提供4位加法器540的陣列且其沿行方向排行,以及,累加運算進一步由加法器/累加器542提供。由於SRAM邊緣單元的使用被最小化,因此,與第5圖中的第三實施例相比,第7圖的連續塊架構可以實現顯著的面積利用效率。
第8圖是示出其中可以實踐一些實施例的說明性計算裝置1000的框圖示意圖。在第8圖中,計算裝置1000可以是台式計算機、服務器或諸如機器學習加速器之類的高性能計算系統。計算裝置1000也可以是便攜式、手持或可穿戴式電子裝置。在一些實施例中,計算裝置1000可以是智能手機、個人數字助理(personal digital assistance,PDA)、平板電腦、智能手錶。計算裝置10可以由諸如可充電電池的電池供電。計算裝置1000也可以是通用計算機,因為本申請的方面不限於便攜式裝置或電池供電的裝置。計算裝置1000可以是能夠根據本文公開的任何實施例執行MAC操作的CIM裝置。
計算裝置1000包括具有一個或多個處理器的中央處理單元(central processing unit,CPU)12,具有一個或多個圖形處理器的圖形處理單元(graphics processing unit,GPU)14以及記憶體(例如,非暫時性計算機可讀存儲介質) 16,例如,其包括易失性和/或非易失性記憶體。記憶體16可以存儲一個或多個指令以對CPU 12和/或GPU 14進行編程以執行本文所描述的任何功能。記憶體16可以包括一個或多個TCAM位單元陣列,其可以執行根據本文上述公開的MAC操作。記憶體16還可包括路由電路及一個或多個記憶體控制器,其被配置為路由輸入激活值和加法器樹的編程操作。
計算裝置1000可以具有一個或多個輸入裝置和/或輸出裝置,例如,如第8圖所示的用戶輸入介面(user input interface)18和輸出介面(output interface)17。這些裝置可用於呈現用戶界面。可用於提供用戶界面的輸出介面的示例包括用於視覺呈現輸出的打印機或顯示屏、用於輸出聲音的揚聲器或其它聲音生成裝置,以及用於呈現觸覺輸出的振動或機械運動發生器。可用於用戶界面的輸入界面的示例包括鍵盤和指示裝置,例如鼠標、觸摸板或用於筆、觸筆或手指觸摸輸入的數字化儀。作為另一示例,輸入介面18可以包括用於捕捉音頻信號的一個或多個麥克風、一個或多個相機和用於捕捉視覺信號的光傳感器,以及,輸出介面17可以包括用於視覺呈現的顯示屏和/或揚聲器,以向計算裝置1000的用戶30呈現有聲的圖像或文本。
如第8圖所示,計算裝置1000可以包括一個或多個網絡介面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等),雖然圖中未示出,但計算裝置10還可以包括一個或多個高速資料總線(其與第8圖所示的組件互連)以及電力子系統(為這些組件提供電力)。
上面描述的各方面和各實施例,可以單獨使用、一起使用或以兩個或更多個的任意組合使用,因為本申請在這方面不受限制。
已經如此描述了本發明的至少一個實施例的一些方面,應當理解,本領域技術人員將容易想到各種改變、修改和改進。這樣的改變、修改和改進旨在成為本公開的一部分,並且旨在落入本發明的精神和範圍內。此外,儘管指出了本發明的優點,但應當理解,並非本文描述的技術的每個實施例都將包括所描述的每個優點。
此外,本發明可以體現為一種方法,本發明提供了該方法的示例。作為該方法的一部分執行的動作可以以任何合適的方式排序。因此,可以構造以不同於圖示的順序執行動作的實施例,這可以包括同時執行一些動作,即使在說明性實施例中被示為順序動作。
在一些實施例中,術語“大約”、“基本上”和“大約”可以用來表示在目標值的±20%之內,在一些實施例中,也可用來表示在目標值的±10%之內;在一些實施例中,可用來表示在目標值的±5%之內。在一些實施例中,可用來表示在目標值的±2%以內。術語“大約”和“大約”可以包括目標值。
在申請專利範圍中使用諸如“第一”,“第二”,“第三”等序數術語來修改申請專利要素,其本身並不表示一個申請專利要素相對於另一個申請專利要素的任何優先權、優先級或順序,或執行方法動作的時間順序,但僅用作標記,以使用序數詞來區分具有相同名稱的一個申請專利要素與具有相同名稱的另一個元素要素。
雖然已經對本發明實施例及其優點進行了詳細說明,但應當理解的係,在不脫離本發明的精神以及申請專利範圍所定義的範圍內,可以對本發明進行各種改變、替換和變更,例如,可以通過結合不同實施例的若干部分來得出新的實施例。所描述的實施例在所有方面僅用於說明的目的而並非用於限 制本發明。本發明的保護範圍當視所附的申請專利範圍所界定者為准。所屬技術領域中具有通常知識者皆在不脫離本發明之精神以及範圍內做些許更動與潤飾。
100:CIM裝置
112-0:第一列
112-1:第二列
112-2:第三列
112-3:第四列
110:TCAM位單元
101:第一SRAM
102:第二SRAM
101a:第一SRAM 101的搜索線
102b:第二SRAM 102的搜索線
120-0,120-1,120-2,120-3:激活線
130:SRAM邊緣單元
140:加法器樹

Claims (20)

  1. 一種存內計算裝置,包括:記憶體陣列,包括被佈置成多個列和多個行的多個三態內容可尋址記憶體(TCAM)位單元,其中,每個TCAM位單元包括兩個靜態隨機存取記憶體(SRAM),每個SRAM被配置為將存儲在其中的權重應用於輸入激活以產生輸出值;以及多條激活線,每條激活線互連到該多個列中的相應列內的多個TCAM位單元,且被配置為從位於該相應列內的該多個TCAM位單元中的每個TCAM位單元中的兩個SRAM接收輸出值。
  2. 如請求項1所述之存內計算裝置,其中,該存內計算裝置還包括:加法器樹,具有多個加法器輸入,每個加法器輸入耦接到該多條激活線中的相應激活線,該加法器樹被配置為基於該相應列內的該多個TCAM位單元中的每個TCAM位單元中的兩個SRAM的輸出值產生乘法累加(MAC)值。
  3. 如請求項1所述之存內計算裝置,其中,該多個TCAM位單元中的每個TCAM位單元包括:被配置為從第一條搜索線接收輸入激活的第一SRAM和被配置為從第二條搜索線接收輸入激活的第二SRAM。
  4. 如請求項1所述之存內計算裝置,其中,該存內計算裝置還包括多個反相器,其中,每條激活線經由該多個反相器中的相應反相器耦接到相應的加法器輸入。
  5. 如請求項1所述之存內計算裝置,其中,該記憶體陣列內的TCAM位單元是16電晶體(16-T)TCAM位單元。
  6. 如請求項1所述之存內計算裝置,其中,該記憶體陣列被配置為接收輸入激活向量和權重矩陣。
  7. 如請求項6所述之存內計算裝置,其中,該輸入激活向量的輸入激活被提供給兩個或更多個不同列的TCAM位單元。
  8. 如請求項6所述之存內計算裝置,其中,該輸入激活向量是被以時分複用方式接收的。
  9. 如請求項1所述之存內計算裝置,其中,在每個SRAM內,該輸出值是基於該權重和該輸入激活的乘積產生的。
  10. 如請求項3所述之存內計算裝置,其中,該記憶體陣列位於第一層中,該第一搜索線位於與該第一層平行的第二層中,以及,該多條激活線包括位於第三層中的導體,該第三層與該第二層平行且與該第二層偏離開。
  11. 如請求項3所述之存內計算裝置,其中,該多個TCAM位單元被佈置在多個行中,以及,該存內計算裝置還包括:路由電路,位於該多個行中的一個行的旁邊,且被配置為將輸入激活路由到該多個TCAM位單元中的一些或全部。
  12. 如請求項11所述之存內計算裝置,其中,該存內計算裝置還包括:SRAM邊緣單元,位於該多個TCAM位單元的一列的旁邊。
  13. 如請求項12所述之存內計算裝置,其中,該記憶體陣列包括:第一子陣列和沿行方向位於該第一子陣列下方的第二子陣列,該SRAM邊緣單元位於該第一子陣列和該第二子陣列之間。
  14. 如請求項3所述之存內計算裝置,其中,該存內計算裝置還包括:路由電路,位於該多個列中的一列的旁邊,且被配置為將輸入激活路由到該多個TCAM位單元中的一些或全部。
  15. 如請求項14所述之存內計算裝置,其中,該記憶體陣列包括: 第一子陣列和沿行方向位於該第一子陣列下方的第二子陣列,以及,在該第一子陣列和第二子陣列之間沒有SRAM邊緣單元。
  16. 一種用於執行乘法和累加(MAC)操作之方法,其中,該方法通過操作三態內容可尋址記憶體(TCAM)單元陣列來對輸入激活向量和權重矩陣執行該MAC操作,該TCAM單元陣列中的多個TCAM位單元被佈置成多個列和多個行且每個TCAM位單元包括兩個靜態隨機存取記憶體(SRAM),以及,該方法包括:將多個權重存儲在該TCAM單元陣列內的多個SRAM中;利用該多個SRAM將輸入激活向量與該多個權重相乘以產生多個輸出值;利用多條激活線收集來自該多個列中的相應列內的多個TCAM位單元中的每個TCAM位單元中的兩個SRAM的輸出值,其中,每條激活線互連到該多個列中的相應列內的多個TCAM位單元;以及對來自該激活線的輸出值求和以產生MAC值。
  17. 如請求項16所述之方法,其中,對來自該激活線的輸出值求和包括:將該激活線耦接到加法器樹。
  18. 如請求項16所述之方法,其中,該乘法的動作是以時分複用的方式執行的。
  19. 如請求項16所述之方法,其中,該乘法的動作包括:為TCAM位單元中的第一SRAM提供來自該TCAM單元陣列的第一搜索線的輸入激活向量的第一輸入激活;以及為該TCAM位單元中的第二SRAM提供來自該TCAM單元陣列的第二搜索線的輸入激活向量的第二輸入激活。
  20. 如請求項19所述之方法,其中,該乘法的動作還包括:向該多個列的兩列或多個不同列的TCAM位單元中的SRAM提供第一輸入 激活。
TW111113436A 2021-04-09 2022-04-08 存內計算裝置及用於執行mac操作之方法 TWI815392B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163172759P 2021-04-09 2021-04-09
US63/172,759 2021-04-09
US17/709,183 US20220328099A1 (en) 2021-04-09 2022-03-30 Method and apparatus for performing a mac operation in a memory array
US17/709,183 2022-03-30

Publications (2)

Publication Number Publication Date
TW202240583A TW202240583A (zh) 2022-10-16
TWI815392B true TWI815392B (zh) 2023-09-11

Family

ID=81326660

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111113436A TWI815392B (zh) 2021-04-09 2022-04-08 存內計算裝置及用於執行mac操作之方法

Country Status (4)

Country Link
US (1) US20220328099A1 (zh)
EP (1) EP4071761A1 (zh)
CN (1) CN115206376A (zh)
TW (1) TWI815392B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040199724A1 (en) * 2000-11-21 2004-10-07 Jalowiecki Ian Paul Content-addressable (associative) memory devices
US20100271854A1 (en) * 2009-04-28 2010-10-28 Integrated Device Technology, Inc. Ternary Content Addressable Memory Having Reduced Leakage Effects
US20130135914A1 (en) * 2011-11-30 2013-05-30 Stmicroelectronics Pvt. Ltd. Xy ternary content addressable memory (tcam) cell and array
TWI618063B (zh) * 2013-07-05 2018-03-11 Arm股份有限公司 三元內容可定址記憶體

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4624198B2 (ja) * 2005-07-06 2011-02-02 ルネサスエレクトロニクス株式会社 半導体記憶装置
US9620179B2 (en) * 2014-11-26 2017-04-11 Invecas, Inc. Sense amplifier and methods thereof for single ended line sensing
US9543015B1 (en) * 2015-09-22 2017-01-10 Nxp Usa, Inc. Memory array and coupled TCAM architecture for improved access time during search operation
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
US20210012202A1 (en) * 2019-07-12 2021-01-14 Facebook Technologies, Llc Systems and methods for asymmetrical scaling factor support for negative and positive values

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040199724A1 (en) * 2000-11-21 2004-10-07 Jalowiecki Ian Paul Content-addressable (associative) memory devices
US20100271854A1 (en) * 2009-04-28 2010-10-28 Integrated Device Technology, Inc. Ternary Content Addressable Memory Having Reduced Leakage Effects
US20130135914A1 (en) * 2011-11-30 2013-05-30 Stmicroelectronics Pvt. Ltd. Xy ternary content addressable memory (tcam) cell and array
TWI618063B (zh) * 2013-07-05 2018-03-11 Arm股份有限公司 三元內容可定址記憶體

Also Published As

Publication number Publication date
US20220328099A1 (en) 2022-10-13
EP4071761A1 (en) 2022-10-12
CN115206376A (zh) 2022-10-18
TW202240583A (zh) 2022-10-16

Similar Documents

Publication Publication Date Title
JP7209616B2 (ja) Gemmデータフロー加速器半導体回路
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
WO2018184570A1 (zh) 运算装置和方法
US11126549B2 (en) Processing in-memory architectures for performing logical operations
CN112149816B (zh) 支持深度神经网络推理加速的异构存算融合系统及方法
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
KR20190121048A (ko) 3 차원 적층 구조를 갖는 뉴로모픽 회로 및 이를 포함하는 반도체 장치
CN111738433B (zh) 一种可重配置的卷积硬件加速器
Garofalo et al. A heterogeneous in-memory computing cluster for flexible end-to-end inference of real-world deep neural networks
Sutradhar et al. Look-up-table based processing-in-memory architecture with programmable precision-scaling for deep learning applications
Du Nguyen et al. Computation-in-memory based parallel adder
CN117151181A (zh) 神经形态芯片
JP2018073452A (ja) Dram基盤のプロセシングユニット
KR20200066538A (ko) 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기
JP2007522571A (ja) 任意のアルゴリズムを並列計算するための再構成可能なスイッチング装置
NL2015114B1 (en) Scalable computation architecture in a memristor-based array.
US11775808B2 (en) Neural network computation device and method
Wang et al. TAICHI: A tiled architecture for in-memory computing and heterogeneous integration
WO2022179075A1 (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
TWI815392B (zh) 存內計算裝置及用於執行mac操作之方法
Akbari et al. A high-performance network-on-chip topology for neuromorphic architectures
Yoshida et al. The approach to multiple instruction execution in the GMICRO/400 processor
TWI825849B (zh) 存算一體裝置及相關的方法
Kim et al. Functionality-based processing-in-memory accelerator for deep convolutional neural networks