[go: up one dir, main page]

TW202324075A - 折疊用於數位記憶體內計算的列加法器架構 - Google Patents

折疊用於數位記憶體內計算的列加法器架構 Download PDF

Info

Publication number
TW202324075A
TW202324075A TW111128554A TW111128554A TW202324075A TW 202324075 A TW202324075 A TW 202324075A TW 111128554 A TW111128554 A TW 111128554A TW 111128554 A TW111128554 A TW 111128554A TW 202324075 A TW202324075 A TW 202324075A
Authority
TW
Taiwan
Prior art keywords
circuit
columns
adder
memory
output
Prior art date
Application number
TW111128554A
Other languages
English (en)
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 TW202324075A publication Critical patent/TW202324075A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • 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
    • 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
    • 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/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • 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/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • G11C11/4085Word line control circuits, e.g. word line drivers, - boosters, - pull-up, - pull-down, - precharge
    • 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/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4094Bit-line management or control circuits
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

某些態樣提供了用於執行機器學習任務(並且具體地,記憶體內計算架構)的裝置。一個態樣提供了一種用於記憶體內計算的電路。概括而言,該電路包括:記憶體的多個列中的每一列上的複數個記憶體單元,複數個記憶體單元被配置為儲存表示神經網路的權重的多個位元,其中多個列中的每一列上的複數個記憶體單元在記憶體的不同字線上;多個加法電路,每個加法電路耦合到多個列中的相應一列;第一加法器電路,其耦合到多個加法電路中的至少兩個加法電路的輸出;及累加器,其耦合到第一加法器電路的輸出。

Description

折疊用於數位記憶體內計算的列加法器架構
本專利申請案主張享受於2021年8月2日提出申請的美國申請案第17/391,718的優先權,該美國申請案被轉讓給本案的受讓人並且整體地經由引用的方式併入本文中。
本案內容的各態樣係關於執行機器學習任務,並且具體地,本案內容的各態樣係關於記憶體內計算架構。
機器學習通常是產生經訓練的模型(例如,人工神經網路、樹或其他結構)的過程,經訓練的模型表示對先驗已知的訓練資料集合的廣義擬合。將經訓練的模型應用於新資料產生推斷,推斷可以用於獲得對新資料的洞察。在一些情況下,將模型應用於新資料被描述為對新資料「執行推斷」。
隨著機器學習的使用已經激增以實現各種機器學習(或人工智慧)任務,已經出現對於機器學習模型資料的更高效處理的需求。在一些情況下,可以使用專用硬體(諸如機器學習加速器)來增強處理系統處理機器學習模型資料的能力。然而,此種硬體需要空間和功率,空間和功率在處理設備上並不總是可用的。例如,「邊緣處理」設備(諸如行動設備、始終線上設備、物聯網路(IoT)設備等)通常必須對處理能力與功率和封裝約束進行平衡。進一步地,加速器可能需要跨共用資料匯流排移動資料,此舉可能導致顯著的功耗,並且將時延引入共享資料匯流排的其他過程。因此,正在考慮處理系統的其他態樣來處理機器學習模型資料。
記憶體設備是處理系統的另一態樣的一個實例,其可以被利用以用於經由所謂的記憶體內計算(CIM)過程來執行對機器學習模型資料的處理。習知的CIM過程使用類比信號來執行計算,此舉可能導致計算結果的不準確,從而對神經網路計算產生不利影響。因此,需要用於以增加的準確度來執行記憶體內計算的系統和方法。
某些態樣提供了用於執行機器學習任務(並且具體地,記憶體內計算架構)的裝置和技術。
一個態樣提供了一種用於記憶體內計算的電路。概括而言,該電路包括:記憶體的多個列中的每一列上的複數個記憶體單元,該複數個記憶體單元被配置為儲存表示神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上;多個加法電路,每個加法電路耦合到該多個列中的相應一列;第一加法器電路,其耦合到該多個加法電路中的至少兩個加法電路的輸出;及累加器,其耦合到該第一加法器電路的輸出。
一個態樣提供了一種用於記憶體內計算的方法。概括而言,該方法包括以下步驟:經由多個加法電路之每一者加法電路,將記憶體的多個列中的相應一列上的輸出信號相加,其中複數個記憶體單元在該多個列中的每一列上,該複數個記憶體單元儲存表示神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上;經由第一加法器電路將該多個加法電路中的至少兩個加法電路的輸出信號相加;及經由累加器將該第一加法器電路的輸出信號累加。
一個態樣提供了一種用於記憶體內計算的裝置。概括而言,該裝置包括:用於將記憶體的多個列中的相應一列上的輸出信號相加的第一構件,其中複數個記憶體單元在該多個列中的每一列上,該複數個記憶體單元儲存表示神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上;用於將用於相加的該第一構件中的至少兩者的輸出信號相加的第二構件;及用於將用於相加的該第二構件的輸出信號累加的構件。
其他態樣提供了:被配置為執行上述方法以及本文描述的方法的處理系統;包括指令的非暫時性電腦可讀取媒體,該等指令在由處理系統的一或多個處理器執行時,使得該處理系統執行上述方法以及本文描述的方法;體現在電腦可讀取儲存媒體上的電腦程式產品,其包括用於執行上述方法以及本文進一步描述的方法的代碼;及處理系統,其包括用於執行上述方法以及本文進一步描述的方法的構件。
以下描述和相關附圖詳細闡述了一或多個態樣的某些說明性特徵。
本案內容的各態樣提供了用於執行記憶體內計算(CIM)以處理資料密集型處理(諸如實現機器學習模型)的裝置、方法、處理系統和電腦可讀取媒體。一些態樣提供了用於使用加法電路來執行數位CIM的技術,每個加法電路在多個計算週期之後將記憶體的多個列中的相應一列上的輸出信號相加(例如,累加)。如本文所使用的,「加法電路」通常是指將一列上的記憶體單元的輸出信號相加(或跨順序的計算週期累加)的任何電路。在一些情況下,加法電路可以是累加器。累加器通常是指用於跨多個週期內將輸出信號累加的電路系統。在其他情況下,加法電路可以是加法器樹。「加法器電路」或「加法器樹」通常是指用於將多個記憶體單元(例如,跨字線或列的記憶體單元)的輸出信號相加的數位加法器。本文關於圖5B描述了加法器電路的示例性實現,並且本文關於圖5C描述了累加器的示例性實現。加法電路可以被實現為具有多個加法器電路的加法器樹或累加器。在一些態樣中,CIM電路系統的字線被順序地啟用,並且累加器同時執行累加,以在該等字線中的兩條或更多條字線被順序地啟用之後提供累加結果。
某些態樣提供了允許用於計算的權重的位元大小的可配置性的折疊架構。例如,可以禁用CIM架構的一或多個處理路徑(亦被稱為「翼」)以調整正在使用的權重的位元大小。例如,可以使用八個處理路徑(例如,包括列和相關聯的處理電路系統)來實現八位元權重,或者可以使用四個處理路徑(其中暫時地禁用其他四個處理路徑)來實現四位元權重。
基於CIM的機器學習(ML)/人工智慧(AI)可以用於多種多樣的任務,包括圖像和音訊處理,以及作出無線通訊決策(例如,以最佳化或者至少增加輸送量和信號品質)。進一步地,CIM可以是基於各種類型的記憶體架構(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)(例如,基於如在圖4中的SRAM單元)、磁阻式隨機存取記憶體(MRAM)和電阻式隨機存取記憶體(ReRAM或RRAM))的,並且可以附接到各種類型的處理單元,包括中央處理單元(CPU)、數位信號處理器(DSP)、圖形處理單元(GPU)、現場可程式設計閘陣列(FPGA)、人工智慧加速器等等。通常,CIM可以有益地減少「記憶體牆」問題,此情形是將資料移入以及移出記憶體消耗與資料的計算相比更多的功率。因此,經由在記憶體中執行計算,可以實現顯著的功率節省。此情形對於各種類型的電子設備(諸如較低功率邊緣處理設備、行動設備等)特別有用。
例如,行動設備可以包括被配置用於儲存資料和執行記憶體內計算操作的記憶體設備。行動設備可以被配置為基於由行動設備產生的資料(諸如由行動設備的相機感測器產生的圖像資料)來執行ML/AI操作。因此,行動設備的記憶體控制器單元(MCU)可以將權重從另一機載記憶體(例如,快閃記憶體或RAM)載入到記憶體設備的CIM陣列中,並且分配輸入特徵緩衝器和輸出(例如,輸出啟用)緩衝器。隨後,處理設備可以經由載入例如輸入緩衝器中的層並且利用被載入到CIM陣列中的權重處理該層來開始處理圖像資料。可以針對圖像資料的每個層重複該處理,並且輸出(例如,輸出啟用)可以被儲存在輸出緩衝器中,並且隨後由行動設備用於ML/AI任務,諸如臉孔辨識。 關於神經網路、深度神經網路和深度學習的簡要背景
神經網路被組織成互連節點的層。通常,節點(或神經元)是進行計算的地方。例如,節點可以將輸入資料與放大或抑制輸入資料的權重(或係數)集合進行組合。因此,輸入信號的放大或抑制可以被視為關於網路試圖學習的任務的各種輸入的相對重要性的分配。通常,對輸入權重乘積求和(或累加),並且隨後經由節點的啟用函數傳遞該總和,以決定信號是否應當在網路中進一步行進以及行進到何種程度。
在最基本的實現中,神經網路可以具有輸入層、隱藏層和輸出層。「深度」神經網路通常具有多於一個的隱藏層。
深度學習是一種訓練深度神經網路的方法。通常,深度學習將網路的輸入映射為來自網路的輸出,並且因此有時被稱為「通用近似器」,因為深度學習可以學習近似在任何輸入 x和任何輸出 y之間的未知函數 f( x)= y。換言之,深度學習找到用於將 x變換為 y的正確 f
更具體地,深度學習基於不同的特徵集合來訓練每一層的節點,該特徵集合是來自前一層的輸出。因此,隨著深度神經網路的每個連續層,特徵變得更加複雜。因此,深度學習功能強大,因為其可以逐步地從輸入資料中提取較高級別的特徵,並且經由學習以每個層中的依次更高的抽象級別表示輸入來執行複雜任務(諸如物件辨識),從而建立輸入資料的有用特徵表示。
例如,若利用視覺資料來介紹,則深度神經網路的第一層可以學習辨識輸入資料中的相對簡單的特徵,諸如邊緣。在另一實例中,若利用聽覺資料來介紹,則深度神經網路的第一層可以學習辨識輸入資料中的特定頻率的頻譜功率。隨後,深度神經網路的第二層可以基於第一層的輸出來學習辨識特徵組合,諸如用於視覺資料的簡單形狀或用於聽覺資料的聲音組合。隨後,較高層可以學習辨識視覺資料中的複雜形狀或聽覺資料中的詞語。更高層可以學習辨識常見的視覺物件或口語短語。因此,當被應用於具有自然層次結構的問題時,深度學習架構可以表現得特別好。 神經網路中的層連接性
神經網路(諸如深度神經網路(DNN))可以被設計為具有層之間的各種連接性模式。
圖1A圖示全連接神經網路102的實例。在全連接神經網路102中,第一層之每一者節點將其輸出傳送給第二層之每一者節點,使得第二層之每一者節點將接收來自第一層之每一者節點的輸入。
圖1B圖示局部連接神經網路104的實例。在局部連接神經網路104中,第一層中的節點可以連接到第二層中的有限數量的節點。更一般地,局部連接神經網路104的局部連接層可以被配置為使得一層之每一者節點將具有相同或相似的連接性模式,但是具有可以具有不同的值(例如,與第一層節點的局部區域110、112、114和116相關聯的值)的連接強度(或權重)。局部連接的連接性模式可以在較高層中造成空間上不同的感受野,因為在給定區域中的較高層節點可以接收經由訓練而被調諧到網路的總輸入的受限部分的屬性的輸入。
一種類型的局部連接神經網路是迴旋神經網路(CNN)。圖1C圖示迴旋神經網路106的實例。迴旋神經網路106可以被配置為使得與針對第二層之每一者節點的輸入相關聯的連接強度被共享(例如,針對與第一層節點的另一局部區域重疊的局部區域108)。迴旋神經網路非常適於在其中輸入的空間位置有意義的問題。
一種類型的迴旋神經網路是深度迴旋網路(DCN)。深度迴旋網路是多個迴旋層的網路,其亦可以被配置有例如池化和正規化層。
圖1D圖示DCN 100的實例,DCN 100被設計為辨識由圖像擷取設備130產生的圖像126中的視覺特徵。例如,若圖像擷取設備130是安裝在車輛中或安裝在其上的相機(或者以其他方式與車輛一起移動),則DCN 100可以利用各種監督學習技術來訓練,以辨識交通標誌以及甚至在交通標誌上的數值。DCN 100可以同樣被訓練用於其他任務,諸如辨識車道標線或辨識交通燈。該等僅是一些示例性任務,並且許多其他任務是可能的。
在圖1D的實例中,DCN 100包括特徵提取部分和分類部分。在接收到圖像126之後,迴旋層132將迴旋核心(例如,如在圖2中所圖示的以及描述的)應用於圖像126以產生第一特徵圖集合(或中間啟用)118。通常,「核心」或「濾波器」包括多維權重陣列,其被設計為強調輸入資料通道的不同態樣。在各個實例中,「核心」和「濾波器」可以互換地用於指代被應用於迴旋神經網路中的權重集合。
隨後,第一特徵圖集合118可以由池化層(例如,最大池化層,未圖示)進行二次取樣,以產生第二特徵圖集合120。池化層可以減小第一特徵圖集合118的大小,同時保持大部分資訊,以便提高模型效能。例如,第二特徵圖集合120可以由池化層從28x28矩陣下取樣到14x14矩陣。
該過程可以重複通過多個層。換言之,第二特徵圖集合120可以經由一或多個後續迴旋層(未圖示)進一步進行迴旋以產生一或多個後續特徵圖集合(未圖示)。
在圖1D的實例中,將第二特徵圖集合120提供給全連接層124,全連接層124進而產生輸出特徵向量128。輸出特徵向量128的每個特徵可以包括與圖像126的可能特徵(例如,「標誌」、「60」和「100」)相對應的數值。在一些情況下,softmax函數(未圖示)可以將輸出特徵向量128中的數值轉換為概率。在此種情況下,DCN 100的輸出122是圖像126包括一或多個特徵的概率。
softmax函數(未圖示)可以將輸出特徵向量128的各個元素轉換為概率,以便DCN 100的輸出122是圖像126包括一或多個特徵(諸如具有在其上的數值「60」的標誌,如在圖像126中)的一或多個概率。因此,在本實例中,輸出122中的針對「標誌」和「60」的概率應當高於輸出122的其他元素(諸如「30」、「40」、「50」、「70」、「80」、「90」和「100」)的概率。
在訓練DCN 100之前,由DCN 100產生的輸出122可能是不正確的。因此,可以計算輸出122和先驗已知的目標輸出之間的誤差。例如,此處目標輸出是關於圖像126包括「標誌」和數值「60」的指示。利用已知的目標輸出,隨後可以經由訓練來調整DCN 100的權重,使得DCN 100的後續輸出122達到目標輸出(具有高概率)。
為了調整DCN 100的權重,學習演算法可以計算用於權重的梯度向量。梯度向量可以指示若以特定方式調整權重則誤差將增加或減少的量。隨後可以調整權重以減小誤差。此種調整權重的方式可以被稱為「後向傳播」,因為此種調整過程涉及「後向傳遞」通過DCN 100的層。
在實踐中,權重的誤差梯度可以經由少量實例來計算,使得所計算出的梯度近似真實誤差梯度。此種近似方法可以被稱為隨機梯度下降。可以重複隨機梯度下降,直到整個系統的可實現誤差率已經停止下降或直到誤差率已經達到目標水平。
在訓練之後,可以向DCN 100提供新圖像,並且DCN 100可以產生各種特徵在新圖像中的推斷(諸如分類)或概率。 用於迴旋神經網路的迴旋技術
迴旋通常用於從輸入資料集合中提取有用特徵。例如,在諸如上述的迴旋神經網路中,迴旋使得能夠使用在訓練期間自動地學習其權重的核心及/或濾波器來提取不同的特徵。隨後,對所提取的特徵進行組合以進行推斷。
可以在迴旋神經網路的每個層之前及/或之後應用啟用函數。啟用函數通常是決定神經網路的節點的輸出的數學函數。因此,啟用函數基於節點的輸入是否與模型的預測相關,來決定節點是否應當傳遞資訊。在一個實例中,在 y= conv( x)(亦即, yx的迴旋), xy兩者通常可以被視為「啟用」。然而,就特定迴旋運算而言, x亦可以被稱為「預啟用」或「輸入啟用」,因為 x存在於特定迴旋之前,並且 y可以被稱為輸出啟用或特徵圖。
圖2圖示了傳統迴旋的實例,其中12圖元x12圖元x3通道輸入圖像是使用5x5x3迴旋核心204和步長(或步長大小)1進行迴旋的。所產生的特徵圖206是8圖元x8圖元x1通道。如在該實例中可見,傳統迴旋可以改變輸入資料的維度(此處,從12x12到8x8圖元)(與輸出資料相比),包括通道維度(此處,從3個通道到1個通道)。
用於減少計算負擔(例如,以每秒浮點運算(FLOP)來度量)和與包括迴旋層的神經網路相關聯的參數的數量的一種方式是對迴旋層進行分解。例如,諸如在圖2中圖示的空間可分離迴旋可以被分解為兩個分量:(1)逐深度迴旋,其中每個空間通道是經由逐深度迴旋獨立地迴旋的(例如,空間融合);及(2)逐點迴旋,其中所有空間通道被線性地組合(例如,通道融合)。在圖3A和圖3B中圖示了逐深度可分離迴旋的實例。通常,在空間融合期間,網路從空間平面學習特徵,並且在通道融合期間,網路學習跨通道的該等特徵之間的關係。
在一個實例中,可以使用用於空間融合的5x5核心和用於通道融合的1x1核心來實現逐深度可分離迴旋。具體而言,通道融合可以使用1x1x d核心,其反覆運算地通過深度 d的輸入圖像之每一者單點,其中核心的深度 d通常與輸入圖像的通道數量匹配。經由逐點迴旋的通道融合對於維度降低是有用的以用於高效計算。應用1x1x d核心並且在核心之後添加啟用層可以提供增加的網路深度,此舉可以提高網路的效能。
具體而言,在圖3A中,利用包括各自具有5x5x1維度的三個單獨核心304A-C的濾波器來對12圖元x12圖元x3通道輸入圖像302進行迴旋,以產生8圖元x8圖元x3通道的特徵圖306,其中每個通道是由核心304A-C當中的單個核心產生的。
隨後,使用逐點迴旋運算對特徵圖306進一步迴旋,其中具有維度1x1x3的核心308產生8圖元x8圖元x1通道的特徵圖310。如在該實例中所圖示的,特徵圖310具有降低的維度(1個通道相比於3個通道),此舉允許利用其進行更高效的計算。
儘管圖3A和圖3B中的逐深度可分離迴旋的結果基本上類似於圖2中的傳統迴旋,但是顯著地減少了計算數量,並且因此逐深度可分離迴旋在網路設計允許其的情況下提供了顯著的效率增益。
儘管未在圖3B中圖示,但是可以使用多個(例如, m個)逐點迴旋核心308(例如,濾波器的單個分量)來增加迴旋輸出的通道維度。因此,例如,可以產生 m=256 1x1x3核心308,該等核心各自輸出8圖元x8圖元x1通道特徵圖(例如,特徵圖310),並且該等特徵圖可以被堆疊以獲得所產生的8圖元x8圖元x256通道的特徵圖。所產生的通道維度的增加為訓練提供了更多參數,此舉可以提高迴旋神經網路(例如,在輸入圖像302中)辨識特徵的能力。 示例性的記憶體內計算(CIM)架構
圖4圖示可以在CIM陣列中實現的靜態隨機存取記憶體(SRAM)的示例性記憶體單元400。記憶體單元400可以被稱為8電晶體(8T)SRAM單元,因為記憶體單元400是利用八個電晶體來實現的。
如圖所示,記憶體單元400可以包括交叉耦合的反相器對424,該反相器對424具有輸出414和輸出416。如圖所示,交叉耦合的反相器對輸出414經由傳輸閘電晶體402選擇性地耦合到寫位元線(WBL)406,並且交叉耦合的反相器對輸出416經由傳輸閘電晶體418選擇性地耦合到互補寫位元線(WBLB)420。WBL 406和WBLB 420被配置為提供互補數位信號以寫入交叉耦合的反相器對424中(例如,儲存在其中)。WBL和WBLB可以用於在記憶體單元400中儲存用於神經網路權重的位元。如圖所示,傳輸閘電晶體402、418的閘極可以耦合到寫字線(WWL)404。例如,可以將要寫入的數位信號提供給WBL(並且將數位信號的補數提供給WBLB)。隨後,經由將邏輯高位準信號提供給WWL 404來將傳輸閘電晶體402、418(此處被實現為n型場效應電晶體(NFET))導通,從而將數位信號儲存在交叉耦合的反相器對424中。
如圖所示,交叉耦合的反相器對輸出414可以耦合到電晶體410的閘極。電晶體410的源極可以耦合到參考電位節點(VSS或電接地),並且電晶體410的汲極可以耦合到電晶體412的源極。如圖所示,電晶體412的汲極可以耦合到讀位元線(RBL)422。電晶體412的閘極可以經由讀字線(RWL)408來控制。RWL 408可以經由啟用輸入信號來控制。
在讀週期期間,RBL 422可以被預充電到邏輯高位準。若啟用輸入和被儲存在交叉耦合的反相器對輸出414處的權重位元兩者皆為邏輯高位準,則電晶體410、412兩者皆被導通,從而將RBL 422電耦合到電晶體410的源極處的VSS並且將RBL 422放電到邏輯低位準。若啟用輸入或被儲存在交叉耦合的反相器對輸出414處的權重為邏輯低位準,則電晶體410、412中的至少一者將被關斷,使得RBL 422保持邏輯高位準。因此,僅當權重位元和啟用輸入兩者皆為邏輯高位準時,RBL 422處的記憶體單元400的輸出為邏輯低位準,否則為邏輯高位準,從而有效地實現NAND閘運算。
圖5A圖示根據本案內容的某些態樣的用於CIM的電路500。電路500包括具有字線504 0到504 31(亦被稱為行)和列506 0到506 7的CIM陣列501。字線504 0到504 31被統稱為字線(WL)504,並且列506 0到506 7被統稱為列506。如圖所示,CIM陣列501可以包括啟用電路系統590,其被配置為向字線504提供啟用信號。儘管為了促進理解,CIM陣列501是利用32條字線和8列來實現的,但是CIM陣列可以利用任何數量的字線或列來實現。如圖所示,在WL 504和列506的交叉點處實現記憶體單元502 0-0到至502 31-7(被統稱為記憶體單元502)。
記憶體單元502中的每一者可以使用關於圖4描述的記憶體單元架構來實現。如圖所示,啟用輸入a(0,0)到a(31,0)可以被提供給相應的字線504,並且記憶體單元502可以儲存神經網路權重w(0,0)到w(31,7)。例如,記憶體單元502 0-0到502 0-7可以儲存權重位元w(0,0)到w(0,7),記憶體單元502 1-0到502 1-7可以儲存權重位元w(1,0)到w(1,7),以此類推。每條字線可以儲存多位元權重。例如,權重位元w(0,0)到w(0,7)表示神經網路的權重的八位元。
如圖所示,電路500可以包括加法器樹510 0到510 7(被統稱為加法器樹510),每個加法器樹被實現用於列506中的相應一列。加法器樹510中的每一者將來自列506中的相應一列上的記憶體單元502的輸出信號相加。每個加法器樹是使用加法器電路樹(諸如加法器電路511)來實現的。如圖所示,加法器樹510的輸出耦合到權重移位加法器樹電路512。權重移位加法器樹電路512包括多個權重移位加法器(例如,權重移位加法器514),每個權重移位加法器包括位元移位和加法電路以促進對位元移位和加法運算的執行。換言之,列506 0上的記憶體單元可以儲存用於相應權重的最高有效位元(MSB),並且在列506 7上的記憶體單元可以儲存用於相應權重的最低有效位元(LSB)。因此,當跨列506執行加法時,執行位元移位運算以將該等位元移位以考慮相關聯的列上的位元的重要性。
權重移位加法器樹電路512的輸出被提供給啟用移位累加器電路516。啟用移位累加器電路516包括位元移位電路518和累加器520。啟用移位累加器電路516亦可以包括觸發器(FF)522和FF 591。
在電路500的操作期間,啟用電路系統590向記憶體單元502提供第一啟用輸入集合599 a(0,0)到a(31,0)以在第一啟用週期期間進行計算。第一啟用輸入集合a(0,0)到a(31,0)代表啟用參數的最高有效位元。使用加法器樹510中的相應一者來將每一列上的計算的輸出相加。使用權重移位加法器樹電路512來將加法器樹510的輸出相加,其結果被提供給啟用移位累加器。在後續啟用週期期間,針對其他啟用輸入集合(諸如表示啟用參數的第二最高有效位元的啟用輸入a(0,1)到a(31,1))執行相同的操作,以此類推,直到處理了表示啟用參數的最低有效位元的啟用輸入。位元移位電路518基於啟用週期來執行位元移位運算。例如,對於使用八個啟用週期處理的8位元啟用參數,位元移位電路可以在第一啟用週期內執行8位元移位,在第二啟用週期內執行7位元移位,以此類推。在啟用週期之後,使用累加器520將位元移位電路518的輸出進行累加並且將其儲存在FF 522、591中,FF 522、591可以實現傳輸暫存器。
由於處理電路系統的對稱結構(諸如權重移位加法器樹電路512),電路500的架構被稱為「折疊」架構。折疊架構允許與在計算期間使用的權重相關聯的位元的數量的可配置性。例如,代替使用八位元權重的計算,可以經由停用列506中的四列來實現使用四位元權重的計算,如本文更詳細地描述的。
關於圖5A描述的態樣提供了逐位元儲存和逐位元乘法。加法器樹510針對列506執行群體計數加法。亦即,加法器樹510中的每一者將用於一列的記憶體單元的輸出信號相加。權重移位加法器樹電路512(例如,對於八列,具有如圖所示的三個階段)對針對八列產生的加權和進行組合(例如,在啟用週期期間針對給定啟用位元的位置提供累加結果)。啟用移位累加器電路516對來自多個(例如,八個)啟用週期的結果進行組合且輸出最終的累加結果。例如,位元移位電路518基於相關聯的啟用週期將權重移位加法器樹電路512的輸出處的位元移位。串列累加器520對由位元移位電路518產生的經移位的加法器輸出進行累加。使用FF 522、591實現的傳輸暫存器在已經完成針對最後啟用週期的計算之後複製串列累加器520的輸出。
跨列的並行加法提高了與電路500相關聯的處理效能(以每秒萬億次運算(TOPS)為單位),提供了更緊湊的全加法器單元,減少了寄生損失(因為加法器是在位元乘記憶體單元旁邊實現的),減少了開關活動(因為與習知實現相比,記憶體的較少行具有高啟用幅度),並且提供了實現簡單巨集產生的簡單平鋪(由於各單元在鄰接配置中被並排放置來實現加法器樹)。關於圖5A描述的態樣可以利用單個時鐘頻率來實現。
電路500使用不同位元大小的啟用或權重參數提供跨計算的線性能量縮放。換言之,使用加法器樹510和權重移位加法器樹電路512提供位元大小可配置性,從而允許n位元啟用,其中m位元權重累加,n和m是正整數,如本文所描述的。與電路500相關聯的能量消耗基於針對啟用參數和權重所配置的位元大小而線性地縮放。
圖5B圖示被配置為執行加法運算的加法器電路585的示例性實現。加法器電路585可以對應於本文描述的加法器電路中的任何加法器電路,諸如加法器電路511。如圖所示,加法器電路包括接收輸入570、571(被標記為A和B)的異或(XOR)閘573。XOR閘573的輸出被提供給XOR閘574的輸入,XOR閘574的另一輸入接收進位輸入(Cin)信號572。XOR閘574的輸出提供加法器電路的輸出(被標記為SUM)。如圖所示,加法器電路亦可以包括接收Cin信號572並且接收XOR閘573的輸出的AND閘575。AND閘576接收輸入570、571。AND閘575、576的輸出被提供給OR閘578的輸入,OR閘578產生用於加法運算的進位輸出信號。儘管為了促進理解,圖5B圖示加法器電路的一種示例性實現,但是本文描述的態樣可以使用任何合適的加法器電路架構來實現。
圖5C是累加器587的示例性實現。累加器587可以對應於本文描述的累加器中的任何累加器,諸如累加器520。如圖所示,累加器520包括接收輸入信號的加法器電路580,如圖所示。加法器電路580的輸出被提供給暫存器,該暫存器被配置為在被提供給暫存器581的時鐘信號的每個週期儲存加法器電路的輸出。暫存器581的輸出582用作累加器587的輸出,並且被回饋到加法器電路580的輸入,如圖所示。儘管為了促進理解,圖5C圖示累加器的一種示例性實現,但是本文描述的態樣可以使用任何合適的累加器架構來實現。
圖6圖示根據本案內容的某些態樣的使用位元列加法器樹電路650和列累加器電路652實現的用於CIM的電路600。位元列加法器樹電路650具有耦合到多個感測放大器602 0、602 1到602 7的輸出的輸入,該等感測放大器連接到多個列506,其中每一列具有多個位元線(例如,RBL)。例如,列506中的每一列可以具有四條位元線,每條位元線耦合到四個感測放大器之一(例如,感測放大器602 0)的輸入。CIM陣列501的字線可以包括多個字線群組(例如,八組),每一組具有四條字線。每組四條字線中的每條字線耦合到每一列上的四條位元線中的相應一者。在給定的計算週期中,每組四條字線經由對應的啟用信號變為活動,而其餘字線群組的啟用信號被設置為邏輯低位準。在總共八個時鐘週期中處理字線群組(例如,在該實例中,八個字線群組,總共32條字線)。感測放大器602 0、602 1到602 7被統稱為感測放大器602。針對列506中的每一列包括多個感測放大器(例如,四個),從而允許同時感測多個列。例如,感測放大器602 0同時感測列506 0上的相應記憶體單元502 0-0到502 3-0的輸出,感測放大器602 1同時感測列506 1上的相應記憶體單元502 0-1到502 3-1的輸出,以此類推到感測放大器602 7同時感測列506 7上的相應記憶體單元502 0-7到502 3-7的輸出。用於每一列的感測放大器的輸出耦合到加法器樹(例如,加法器樹604 0、604 1到604 7,被統稱為加法器樹604)。用於實現加法器樹604中的每一者的每個加法器電路可以如關於圖5B所描述地實現。
為了簡單起見,感測放大器602中的每一者被示為具有耦合到單個記憶體單元的輸出的輸入。然而,感測放大器602中的每一者的輸入可以耦合到多個記憶體單元的輸出,該等記憶體單元可以以順序方式被啟用。換言之,在針對每一列具有四個感測放大器的情況下,可以一次在每一列上啟用四條字線。作為一個實例,如圖所示,感測放大器602 0的輸入可以耦合到用於第一組字線(例如,字線504 0到504 3)的相應記憶體單元的輸出,但是亦耦合到用於第二組字線(例如,字線504 4到504 7)的相應記憶體單元的輸出,並且耦合到用於第三組字線(例如,字線504 8到504 11)的相應記憶體單元的輸出,以此類推到最後一組字線(例如,字線504 28到504 31)。因此,對於每列32條字線和四個感測放大器,可以使用八個計算週期來完成針對啟用輸入集合(例如,啟用輸入a(0,0)到a(31,0))的計算。
如所描述的,加法器樹604的輸出耦合到列累加器電路652。例如,加法器樹604中的每一者的輸出耦合到列累加器電路652的累加器606 0、606 1到606 7(被統稱為累加器606)中的一者。累加器606中的每一者可以如關於圖5C所描述地實現。累加器606中的每一者跨多個計算週期執行加法器樹604中的相應一者的輸出信號的累加。例如,在每個計算週期期間,針對四條字線執行計算,並且使用位元列加法器樹電路650的加法器樹604將針對四條字線的計算的輸出信號相加。在多個計算週期(例如,當使用四個感測放大器時,針對32條字線的八個週期)之後,累加器606中的每一者執行加法器樹604中的相應一者的輸出信號的累加。
一旦多個計算週期已經完成,累加器606的輸出被提供給權重移位加法器樹電路512以用於跨列進行相加,並且權重移位加法器樹電路512的輸出被提供給啟用移位累加器電路516以用於跨啟用週期進行累加,如關於圖5A所描述的。換言之,跨多個計算週期(例如,八個計算週期,每個計算週期用於四條字線,直到完成針對32條字線的計算)在累加器606中的每一者處發生逐位元累加。權重移位加法器樹電路512對八列的加權和進行組合(例如,在每個啟用週期期間提供針對給定啟用位元的位置的累加結果),並且啟用移位累加器電路516對來自多個(例如,八個)啟用週期的結果進行組合以輸出最終的累加結果。在一些態樣中,與權重移位加法器樹電路512和啟用移位累加器電路516相比,CIM陣列501、位元列加法器樹電路650和列累加器電路652以較高的頻率(例如,當使用八個計算週期來實現時為八倍,或小於八倍(由關鍵路徑延遲的限制決定的,同時仍然使用八個計算週期))操作。如圖所示,半鎖存器電路608 0、608 1到608 7(被統稱為半鎖存器電路608)可以耦合到累加器606的相應輸出。每個半鎖存器電路保持累加器606中的相應一者的輸出,並且一旦多個計算週期已經完成,就將輸出提供給權重移位加法器樹電路512的相應輸入。換言之,半鎖存器電路通常是指在時鐘週期開始時保持數位輸入(例如,累加器606之一的輸出)並且在時鐘週期結束時將數位輸入提供給鎖存器電路的輸出的鎖存器電路。半鎖存器電路608促進從列累加器電路652的較高頻率操作(例如,如圖所示的8x)到權重移位加法器樹電路512的較低頻率操作(例如,如圖所示的1x)的轉變。
圖7是圖示根據本案內容的某些態樣的與電路600相關聯的信號的時序圖700。電路600可以在數位記憶體內計算(DCIM)時鐘上操作。DCIM時鐘可以用作電路500、600在其上操作的主時鐘。在DCIM時鐘的8個週期之後,可以提供最終的累加輸出,以用於將權重與8位元啟用輸入相乘。如圖所示,可以從較低頻率的DCIM時鐘產生較高頻率的時鐘信號(被稱為本端時鐘)。例如,本端時鐘可以具有比DCIM時鐘的頻率大八倍的頻率。
如圖所示,在DCIM時鐘的八個週期之每一者週期中提供啟用輸入中的每一者的一位元。例如,在第一啟用週期(例如,DCIM時鐘的第一週期)期間將位元a(0,0)到a(31,0)(例如,不同啟用輸入的MSB)提供給記憶體單元,在第二啟用週期(例如,DCIM時鐘的第二週期)期間,將位元a(0,1)到a(31,1)(例如,不同啟用輸入的第二MSB(MSB-1))提供給記憶體單元,以此類推。
在本端時鐘的每個週期期間,針對計算週期提供感測放大器602的輸出(被標記為「SA Out」)和加法器樹604的輸出(被標記為「Col Add Out」)。在本端時鐘的每個週期期間,SA Out和Col Add Out為字線504(例如,在關於圖6描述的實例中,四條字線)的子集的記憶體單元提供輸出。例如,在本端時鐘的第一週期期間,提供用於加法器樹604 0的Col Add Out以用於由記憶體單元502 0-0到502 3-0執行的計算,在本端時鐘的第二週期期間,提供Col Add Out以用於由記憶體單元502 4-0到502 7-0執行的計算,以此類推,直到提供Col Add Out以用於由記憶體單元502 28-0到502 31-0執行的計算(此處,在本端時鐘的8個週期之後)。
如圖所示,在八個本端時鐘週期之後(例如,在單個DCIM時鐘週期之後),提供列累加器電路652的輸出(被標記為「Col Acc Latch」)和權重移位加法器樹電路512的輸出(被標記為「Weight Shift Add Out」)。啟用移位累加器電路516跨八個DCIM時鐘週期將Weight Shift Add Out累加,並且在八個DCIM時鐘週期結束時,提供輸出(被標記為「Acc Out」)。
在一些態樣中,與啟用輸入及/或權重相關聯的位元的數量可以是可配置的。位元列加法器樹電路650允許用於權重的位元的數量低至單個位元的可配置性。例如,為了實現4位元權重,與列506 4、506 5、506 6、506 7相關聯的電路系統可以被停用,如本文更詳細地描述的。
圖8A、圖8B和圖8C是圖示根據本案內容的某些態樣的具有權重的可配置位元大小的CIM電路系統的方塊圖。例如,如圖8A所示,8位元權重可以被儲存在記憶體單元502中,並且使用位元列加法器樹電路650、列累加器電路652、權重移位加法器樹電路512和啟用移位累加器電路516進行處理,如本文描述的。
如圖所示,時鐘產生器電路870可以包括被配置為產生DCIM時鐘的時鐘產生器871。時鐘產生器871可以使用諸如鎖相迴路(PLL)或環形振盪器之類的任何合適的時鐘產生電路來實現。權重移位加法器樹電路512可以接收關於圖7描述的DCIM時鐘並且在其上操作。對於某些態樣,時鐘產生器電路870可以包括可以用於產生本端時鐘的倍頻器802,啟用電路系統590、位元列加法器樹電路650和列累加器電路652基於該本端時鐘進行操作。儘管倍頻器802被示為時鐘產生器電路870的一部分,但是在一些實現中,倍頻器802可以與時鐘產生器871分離。倍頻器通常是指接收具有第一頻率的時鐘信號並且產生具有不同的第二頻率的第二時鐘信號的任何電路,其中第二頻率是第一頻率的倍數。
一些態樣提供了使用翼串列操作的計算技術,如關於圖8B和圖8C所描述的。如本文所使用的,在CIM電路的情況下,「翼串列操作」通常是指在一個翼(CIM電路的一個處理路徑)上操作,並且隨後在另一翼(CIM電路的另一處理路徑)上操作。例如,四位元權重可以被儲存在四列(例如,列506 4、506 5、506 6、506 7)的集合上的記憶體單元中以用於執行第一4位元權重計算,並且四位元權重可以被儲存在四列(例如,列506 0、506 1、506 2、506 3)的另一集合上的記憶體單元中以用於執行第二4位元權重計算。四列的該兩個集合可以是不相交的集合。儘管在所提供的實例中,在針對列506 0、506 1、506 2、506 3執行4位元權重計算之前針對列506 4、506 5、506 6、506 7執行4位元權重計算,但是可以以相反的次序執行計算。例如,可以在針對列506 4、506 5、506 6、506 7執行4位元權重計算之前針對列506 0、506 1、506 2、506 3執行4位元權重計算。
圖8B圖示在其期間執行第一4位元權重計算的第一週期。在第一週期期間,用於處理用於列506 4、506 5、506 6、506 7的信號的位元列加法器樹電路650和列累加器電路652的電路系統被停用。例如,時鐘閘控電路804可以用於在第一週期期間停用被提供給累加器606 4、606 5、606 6、606 7的時鐘以降低功耗。如本文所使用的,時鐘閘控電路通常是指接收時鐘信號(例如,具有接收時鐘信號的第一輸入的AND閘)並且回應於控制信號將時鐘信號提供給電路的輸出(例如,被提供給AND閘的第二輸入的控制信號為邏輯高位準)的任何電路。在第一週期結束時,啟用移位累加器電路516提供針對第一4位元權重計算的結果。
圖8C圖示在其期間執行第二4位元權重計算的第二週期。在第二週期期間,用於處理列506 0、506 1、506 2、506 3的信號的位元列加法器樹電路650和列累加器電路652的電路系統被停用。例如,時鐘閘控電路804可以用於在第二週期期間停用被提供給累加器606 0、606 1、606 2、606 3的時鐘,以降低功耗。儘管為了促進理解,僅針對列累加器電路652的時鐘信號圖示時鐘閘控技術,但是時鐘閘控技術可以用於停用未被使用的其他電路(諸如位元列加法器樹的電路系統)的時鐘信號。 用於數位記憶體內計算(CIM)的示例性操作
圖9是圖示根據本案內容的某些態樣的用於記憶體內計算的示例性操作900的流程圖。操作900可以由用於CIM的電路來執行,諸如關於圖5A描述的電路500或關於圖6描述的電路600。
操作900在方塊905處經由以下操作開始:電路經由多個加法電路(例如,加法器樹510或累加器606)之每一者加法電路將記憶體的多個列(例如,列506)中的相應一列上的輸出信號相加。複數個記憶體單元位於多個列中的每一列上,並且複數個記憶體單元儲存表示神經網路的權重(例如,在圖5A中所示的w(0,0)到w(31,7))的多個位元。多個列中的每一列上的複數個記憶體單元位於記憶體的不同字線(例如,字線504)上。
在方塊910處,電路經由第一加法器電路(例如,權重移位加法器樹電路512)將多個加法電路中的至少兩個加法電路的輸出信號相加。在方塊915處,電路經由累加器(例如,累加器520或啟用移位累加器電路516)將第一加法器電路的輸出信號累加。在一些態樣中,電路基於與權重之每一者權重相關聯的位元的數量來選擇性地禁用第一加法器電路的一或多個部分及/或多個加法電路中的一或多個加法電路。
在一些態樣中,將多個列中的相應一列上的輸出信號相加可以包括在字線中的兩條或更多條字線被順序地啟用之後將多個列中的相應一列上的記憶體單元的輸出信號累加(例如,經由累加器606)。在一些態樣中,電路經由耦合在多個加法電路之每一者加法電路與多個列中的相應一列之間的第二加法器電路(例如,加法器樹604之每一者加法器樹)將在多個列中的相應一列以及字線中的兩條或更多條字線上的記憶體單元的輸出信號相加。在一些態樣中,電路經由耦合在第二加法器電路與多個列中的相應一列之間的感測放大器(例如,感測放大器602)來感測在多個列中的相應一列以及字線中的兩條或更多條字線上的記憶體單元的輸出信號。在此種情況下,經由第二加法器電路進行相加是基於感測到的輸出信號的。
在一些態樣,電路在第一計算週期期間禁用第一加法器電路的第一部分及/或加法電路中的至少一個加法電路,並且在第二計算週期期間禁用第一加法器電路的第二部分和加法電路中的至少另一加法電路。
在一些態樣中,電路順序地啟用字線中的兩條或更多條字線。在此種情況下,經由多個加法電路之每一者加法電路將多個列中的相應一列上的輸出信號相加包括:在字線中的兩條或更多條字線被順序地啟用之後,經由多個加法電路之每一者加法電路(例如,累加器606)將多個列中的相應一列上的記憶體單元的輸出信號累加。
在一些態樣中,將多個加法電路中的至少兩個加法電路的輸出信號相加包括:對多個加法電路中的至少兩個加法電路執行位元移位和加法運算。在一些態樣中,電路產生第一時鐘信號,其中多個加法電路基於第一時鐘信號(例如,在圖7中所示的本端時鐘)進行操作,並且電路產生第二時鐘信號,其中第一加法器電路基於第二時鐘信號(例如,在圖7所示的DCIM時鐘)進行操作,第二時鐘信號具有與第一時鐘信號不同的頻率。在一些態樣中,電路經由倍頻器(例如,倍頻器802)來基於第一時鐘信號產生第二時鐘信號。
在一些態樣中,電路基於不同的啟用輸入來順序地啟用複數個記憶體單元,並且對第一加法器電路的輸出信號的累加發生在複數個記憶體單元被順序地啟用之後。例如,順序地啟用複數個記憶體單元可以包括在第一啟用週期期間接收第一啟用輸入集合(例如,啟用輸入a(0,0)到a(31,0)),在第二啟用週期期間接收第二啟用輸入集合(例如,啟用輸入a(0,1)到a(31,1)),其中對第一加法器電路的輸出信號的累加發生在第一啟用週期和第二啟用週期之後。
在一些態樣中,多個列包括多個列的第一子集(例如,列506 0到506 3)和多個列的第二子集(例如,列506 4到506 7)。第一子集可以是在第一計算週期(例如,在圖8B中所示的週期1)期間啟用的。第二子集可以是在第二計算週期(例如,在圖8C中所示的週期2)期間啟用的,第二計算週期在第一計算週期之後。
在一些態樣中,字線中的每條字線上的記憶體單元被配置為儲存神經網路的權重中的一個權重,以及多個列的第一子集的數量(例如,在圖8B所示的實例中為四個)與權重中的一個權重的位元的數量相關聯。在一些態樣中,電路經由時鐘閘控電路(例如,時鐘閘控電路804)來停用與處理來自多列的第二子集的信號相關聯的時鐘信號。 用於記憶體內計算的示例性處理系統
圖10圖示示例性電子設備1000。電子設備1000可以被配置為執行本文描述的方法,包括關於圖9描述的操作900。
電子設備1000包括中央處理單元(CPU)1002,其在一些態樣中可以是多核CPU。在CPU 1002處執行的指令可以例如是從與CPU 1002相關聯的程式記憶體中載入的或者可以是從記憶體1024中載入的。
電子設備1000亦包括針對特定功能定制的額外處理區塊,諸如圖形處理單元(GPU)1004、數位信號處理器(DSP)1006、神經處理單元(NPU)1008、多媒體處理區塊1010、多媒體處理區塊1010和無線連接處理區塊1012。在一種實現中,NPU 1008是在CPU 1002、GPU 1004及/或DSP 1006中的一者或多者中實現的。
在一些態樣中,無線連接處理區塊1012可以包括例如用於第三代(3G)連接、第四代(4G)連接(例如,4G LTE)、第五代連接(例如,5G或NR)、Wi-Fi連接、藍芽連接和無線資料傳輸標準的元件。無線連接處理區塊1012進一步連接到一或多個天線1014以促進無線通訊。
電子設備1000亦可以包括與任何方式的感測器相關聯的一或多個感測器處理器1016、與任何方式的圖像感測器相關聯的一或多個圖像信號處理器(ISP)1018,及/或導航處理器1020,導航處理器1020可以包括基於衛星的定位系統元件(例如,GPS或GLONASS)以及慣性定位系統元件。
電子設備1000亦可以包括一或多個輸入及/或輸出設備1022,諸如螢幕、觸摸敏感表面(包括觸摸敏感顯示器)、實體按鈕、揚聲器、麥克風等。在一些態樣中,電子設備1000的處理器中的一或多個處理器可以是基於ARM指令集的。
電子設備1000亦包括記憶體1024,其代表一或多個靜態及/或動態記憶體,諸如動態隨機存取記憶體、基於快閃記憶體的靜態記憶體等。在該實例中,記憶體1024包括電腦可執行元件,其可以由電子設備1000的前述處理器中的一或多個處理器或CIM控制器1032(亦被稱為控制電路系統)來執行。例如,電子設備1000可以包括CIM電路1026(諸如電路500),如本文所描述的。CIM電路1026可以經由CIM控制器1032來控制。例如,在一些態樣中,記憶體1024可以包括用於儲存(例如,將權重儲存在記憶體單元中)的代碼1024A、用於計算(例如,經由應用啟用輸入來執行神經網路計算)的代碼1024B。如圖所示,CIM控制器1032可以包括用於儲存(例如,將權重儲存在記憶體單元中)的電路1028A和用於計算(例如,經由應用啟用輸入來執行神經網路計算)的電路1028B。所圖示的元件和未圖示的其他元件可以被配置為執行本文描述的方法的各個態樣。
在一些態樣中(諸如在電子設備1000是伺服器設備的情況下),可以從在圖10中圖示的實例中省略各個態樣,諸如多媒體處理區塊1010、無線連接處理區塊1012、天線1014、感測器處理器1016、ISP 1018或導航處理器1020中的一者或多者。 示例性條款
條款1、一種用於記憶體內計算的電路,包括:記憶體的多個列中的每一列上的複數個記憶體單元,該複數個記憶體單元被配置為儲存表示神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上;多個加法電路,每個加法電路耦合到該多個列中的相應一列;第一加法器電路,其耦合到該多個加法電路中的至少兩個加法電路的輸出;及累加器,其耦合到該第一加法器電路的輸出。
條款2、根據條款1之電路,其中該第一加法器電路的一或多個部分被配置為被選擇性地禁用。
條款3、根據條款1-2中任一項之電路,其中該多個加法電路之每一者加法電路包括加法器樹,該加法器樹耦合到該多個列中的該相應一列上的該複數個記憶體單元。
條款4、根據條款1-3中任一項之電路,其中該多個加法電路之每一者加法電路包括另一累加器。
條款5、根據條款1-4中任一項之電路,其中該第一加法器電路的第一部分被配置為在第一計算週期期間被選擇性地禁用,並且其中該第一加法器電路的第二部分被配置為在第二計算週期期間被選擇性地禁用。
條款6、根據條款1-5中任一項之電路,亦包括:第二加法器電路,其耦合在該多個加法電路之每一者加法電路與該多個列中的該相應一列之間。
條款7、根據條款6之電路,其中該第二加法器電路包括耦合到該等字線中的兩條或更多條字線的加法器樹。
條款8、根據條款7之電路,其中該加法器樹被配置為將在該多個列中的該相應一列以及該等字線中的該兩條或更多條字線上的該等記憶體單元的輸出信號相加。
條款9、根據條款6之電路,亦包括:感測放大器,其耦合在該第二加法器電路與該多個列中的相應一列之間。
條款10、根據條款1-9中任一項之電路,其中該第一加法器電路包括加法器樹,該加法器樹被配置為將該多個加法電路中的該至少兩個加法電路的輸出信號相加。
條款11、根據條款10之電路,其中該加法器樹的一或多個加法器包括位元移位和加法電路。
條款12、根據條款1-11中任一項之電路,亦包括:時鐘產生器電路,其具有被配置為輸出第一時鐘信號的第一輸出並且具有被配置為輸出第二時鐘信號的第二輸出,其中:該多個加法電路耦合到該時鐘產生器的該第一輸出並且被配置為基於該第一時鐘信號進行操作;並且該第一加法器電路耦合到該時鐘產生器的該第二輸出並且被配置為基於該第二時鐘信號進行操作,該第二時鐘信號具有與該第一時鐘信號不同的頻率。
條款13、根據條款12之電路,其中該時鐘產生器電路包括倍頻器,該倍頻器被配置為基於該第一時鐘信號來產生該第二時鐘信號。
條款14、根據條款1-13中任一項的電路,亦包括:複數個半鎖存器電路,每個半鎖存器電路耦合在該第一加法器電路與該多個加法電路中的一個加法電路之間。
條款15、根據條款1-14中任一項之電路,其中:該複數個記憶體單元被配置為基於不同的啟用輸入而被順序地啟用;並且該累加器被配置為在該複數個記憶體單元被順序地啟用之後將該第一加法器電路的輸出信號累加。
條款16、根據條款1-15中任一項之電路,其中該累加器是耦合到該第一加法器電路的輸出的唯一累加器。
條款17、根據條款1-16中任一項之電路,其中:該多個列包括該多個列的第一子集和該多個列的第二子集;並且該第一子集是在第一計算週期期間啟用的。
條款18、根據條款17之電路,其中該第二子集是在第二計算週期期間啟用的,該第二計算週期在該第一計算週期之後。
條款19、根據條款17-18中任一項之電路,其中:該等字線中的每條字線上的該等記憶體單元中的至少一些記憶體單元被配置為儲存該神經網路的該等權重中的一個權重;並且該多個列的該第一子集的數量與該等權重中的該一個權重的位元的數量相關聯。
條款20、根據條款17-19中任一項之電路,亦包括:時鐘閘控電路,其具有耦合到該多個加法電路的輸出並且被配置為停用與處理來自該多個列的該第二子集的信號相關聯的時鐘信號。
條款21、一種用於記憶體內計算的方法,包括以下步驟:經由多個加法電路之每一者加法電路,將記憶體的多個列中的相應一列上的輸出信號相加,其中複數個記憶體單元在該多個列中的每一列上,該複數個記憶體單元儲存表示神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上;經由第一加法器電路將該多個加法電路中的至少兩個加法電路的輸出信號相加;及經由累加器將該第一加法器電路的輸出信號累加。
條款22、根據條款21之方法,亦包括以下步驟:基於與該等權重之每一者權重相關聯的位元的數量來選擇性地禁用該第一加法器電路的一或多個部分。
條款23、根據條款21-22中任一項之方法,其中將該多個列中的相應一列上的該等輸出信號相加包括:在該等字線中的兩條或更多條字線被順序地啟用之後將該多個列中的該相應一列上的該等記憶體單元的輸出信號累加。
條款24、根據條款23之方法,亦包括以下步驟:經由耦合在該多個加法電路之每一者加法電路與該多個列中的該相應一列之間的第二加法器電路,將在該多個列中的該相應一列以及該等字線中的該兩條或更多條字線上的該等記憶體單元的輸出信號相加。
條款25、根據條款24之方法,亦包括以下步驟:經由耦合在該第二加法器電路與該多個列中的該相應一列之間的感測放大器,感測在該多個列中的該相應一列以及該等字線中的該兩條或更多條字線上的該等記憶體單元的該等輸出信號,其中經由該第二加法器電路進行相加是基於感測到的輸出信號的。
條款26、根據條款21-25中任一項之方法,其中將該多個加法電路中的該至少兩個加法電路的該等輸出信號相加包括:對該多個加法電路中的該至少兩個加法電路執行位元移位和加法運算。
條款27、根據條款21-26中任一項之方法,亦包括以下步驟:產生第一時鐘信號,其中該多個加法電路基於該第一時鐘信號進行操作;及產生第二時鐘信號,其中該第一加法器電路基於該第二時鐘信號進行操作,該第二時鐘信號具有與該第一時鐘信號不同的頻率。
條款28、根據條款21-27中任一項之方法,亦包括以下步驟:基於不同的啟用輸入來順序地啟用該複數個記憶體單元,其中將該第一加法器電路的該等輸出信號累加發生在該複數個記憶體單元被順序地啟用之後。
條款29、根據條款28之方法,其中順序地啟用該複數個記憶體單元包括:在第一啟用週期期間接收第一啟用輸入集合;及在第二啟用週期期間接收第二啟用輸入集合,其中將該第一加法器電路的該等輸出信號累加發生在該第一啟用週期和該第二啟用週期之後。
條款30、一種用於記憶體內計算的裝置,包括:用於將記憶體的多個列中的相應一列上的輸出信號相加的第一構件,其中複數個記憶體單元在該多個列中的每一列上,該複數個記憶體單元儲存表示神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上;用於將用於相加的該第一構件中的至少兩者的輸出信號相加的第二構件;及用於將用於相加的該第二構件的輸出信號累加的構件。 額外考慮
提供先前描述,以使得熟習此項技術者能夠實施本文描述的各個態樣。本文論述的實例不對在請求項中闡述的範疇、適用性或態樣進行限制。對於熟習此項技術者而言,對該等態樣的各種修改將是顯而易見的,並且本文定義的通用原理可以應用於其他態樣。例如,可以在不脫離本案內容的範疇的情況下,在論述的元素的功能和佈置態樣進行改變。各個實例可以酌情省略、替換或添加各種程序或元件。例如,所描述的方法可以以與所描述的次序不同的次序來執行,並且可以添加、省略或組合各個步驟。此外,可以將關於一些實例描述的特徵組合到一些其他實例中。例如,使用本文所闡述的任何數量的態樣,可以實現一種裝置或可以實施一種方法。此外,本案內容的範疇意欲涵蓋使用除了本文所闡述的揭示內容的各個態樣以外或與其不同的其他結構、功能,或者結構和功能來實施的此種裝置或方法。應當理解的是,本文所揭示的揭示內容的任何態樣可以由請求項的一或多個元素來體現。
如本文所使用的,「示例性的」一詞意指「用作示例、實例或說明」。本文中被描述為「示例性的」任何態樣未必被解釋為比其他態樣更佳或具有優勢。
如本文中使用的,提及項目列表「中的至少一個」的短語指代彼等項目的任何組合,包括單一成員。作為一個實例,「a、b或c中的至少一個」意欲涵蓋a、b、c、a-b、a-c、b-c和a-b-c,以及與相同元素的倍數的任意組合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c和c-c-c或者a、b和c的任何其他排序)。
如本文所使用的,術語「決定」包括多種多樣的動作。例如,「決定」可以包括計算、運算、處理、推導、調查、檢視(例如,在表、資料庫或另一資料結構中檢視)、查明等等。此外,「決定」可以包括接收(例如,接收資訊)、存取(例如,存取記憶體中的資料)等等。此外,「決定」可以包括解析、選定、選擇、建立等等。
本文所揭示的方法包括用於實現方法的一或多個步驟或動作。在不脫離請求項的範疇的情況下,該等方法步驟及/或動作可以彼此互換。換言之,除非指定了步驟或動作的特定次序,否則,在不脫離請求項的範疇的情況下,可以對特定步驟及/或動作的次序及/或使用進行修改。此外,上述方法的各種操作可以由能夠執行相應功能的任何適當的構件來執行。該等構件可以包括各種硬體及/或軟體元件及/或模組,包括但不限於:電路、特殊應用積體電路(ASIC)或處理器。通常,在存在圖中圖示的操作的情況下,彼等操作可以具有帶有類似編號的相應的配對構件加功能元件。例如,用於相加的構件可以包括加法器樹(諸如加法器樹510或權重移位加法器樹512)或累加器(諸如累加器606)。用於累加的構件可以包括累加器(諸如啟用移位累加器516)。用於感測的構件可以包括SA(諸如SA 602)。
跟隨的請求項並不意欲限於本文展示的態樣,而是被賦予與請求項的語言相一致的全部範疇。在請求項內,除非明確地聲明如此,否則提及單數形式的元素並不意欲意指「一個且僅僅一個」,而是「一或多個」。除非另有明確聲明,否則術語「一些」指代一或多個。沒有請求項元素要根據專利法施行細則第18條第8項的規定來解釋,除非該元素是明確地使用短語「用於……的構件」來記載的,或者在方法請求項的情況下,該元素是使用短語「用於……的步驟」來記載的。將貫穿本案內容描述的各個態樣的元素的全部結構和功能均等物以引用方式明確地併入本文中,以及意欲由申請專利範圍所涵蓋,該等結構和功能均等物對於一般技術者而言是已知的或者稍後將是已知的。此外,本文中沒有任何揭示的內容是想要奉獻給公眾的,不管此種揭示內容是否明確記載在請求項中。
30:元素 50:元素 60:數值 70:元素 80:元素 90:元素 100:DCN 102:全連接神經網路 104:局部連接神經網路 106:迴旋神經網路 108:局部區域 110:局部區域 112:局部區域 114:局部區域 116:局部區域 118:第一特徵圖集合 120:第二特徵圖集合 122:輸出 124:全連接層 126:圖像 128:輸出特徵向量 130:圖像擷取設備 132:迴旋層 204:迴旋核心 206:特徵圖 302:輸入圖像 304A-C:核心 306:特徵圖 308:核心 310:特徵圖 400:記憶體單元 402:傳輸閘電晶體 404:WWL 406:WBL 408:RWL 410:電晶體 412:電晶體 414:輸出 416:輸出 418:傳輸閘電晶體 420:WBLB 422:RBL 424:反相器對 500:電路 501:CIM陣列 511:加法器電路 512:權重移位加法器樹電路 514:權重移位加法器 516:啟用移位累加器電路 518:位元移位電路 520:累加器 522:觸發器(FF) 570:輸入 571:輸入 572:Cin信號 573:XOR閘 574:XOR閘 575:AND閘 576:AND閘 578:OR閘 580:加法器電路 581:暫存器 582:輸出 585:加法器電路 587:累加器 590:啟用電路系統 591:FF 599:第一啟用輸入集合 600:用於CIM的電路 650:位元列加法器樹電路 652:列累加器電路 700:時序圖 802:倍頻器 804:時鐘閘控電路 870:時鐘產生器電路 871:時鐘產生器 900:操作 905:方塊 910:方塊 915:方塊 1000:電子設備 1002:CPU 1004:GPU 1006:DSP 1008:神經處理單元(NPU) 1010:多媒體處理區塊 1012:無線連接處理區塊 1014:天線 1016:感測器處理器 1018:圖像信號處理器(ISP) 1020:導航處理器 1022:輸入及/或輸出設備 1024:記憶體 1024A:代碼 1024B:代碼 1026:CIM電路 1028A:電路 1028B:電路 1032:CIM控制器 502 0-0:記憶體單元 502 0-1:記憶體單元 502 0-7:記憶體單元 502 1-0:記憶體單元 502 1-1:記憶體單元 502 1-7:記憶體單元 502 3-0:記憶體單元 502 3-1:記憶體單元 502 31-0:記憶體單元 502 31-7:記憶體單元 502 3-7:記憶體單元 504 0:字線 504 1:字線 504 3:字線 504 31:字線 506 0:列 506 1:列 506 7:列 510 0:加法器樹 510 7:加法器樹 602 0:感測放大器 602 1:感測放大器 602 7:感測放大器 604 0:加法器樹 604 1:加法器樹 604 7:加法器樹 606 0:累加器 606 1:累加器 606 7:累加器 608 0:半鎖存器電路 608 1:半鎖存器電路 608 7:半鎖存器電路 C in:進位輸入 RBL:讀位元線 RWL:讀字線 SUM:加法器電路的輸出 WBL:寫位元線 WBLB:寫位元線 WWL:寫字線
為了可以詳盡地理解本案內容的上述特徵,經由參照各態樣(其中一些態樣在附圖中圖示),可以獲得對上文簡要概述的發明內容的更加具體的描述。然而,要注意的是,附圖僅圖示本案內容的某些典型的態樣並且因此不被認為是限制本案內容的範疇,因為該描述可以容許其他同等有效的態樣。
圖1A-圖1D圖示了可以由本案內容的各態樣實現的各種類型的神經網路的實例。
圖2圖示了可以由本案內容的各態樣實現的傳統迴旋運算的實例。
圖3A和圖3B圖示了可以由本案內容的各態樣實現的逐深度可分離迴旋運算的實例。
圖4圖示用於記憶體內計算(CIM)電路(circuit)的被實現為八電晶體(8T)靜態隨機存取記憶體(SRAM)單元的示例性記憶體單元。
圖5A圖示根據本案內容的某些態樣的用於CIM的電路。
圖5B圖示加法器電路的示例性實現。
圖5C圖示累加器的示例性實現。
圖6圖示根據本案內容的某些態樣的使用位元列加法器樹實現的用於CIM的電路。
圖7是圖示根據本案內容的某些態樣的與圖6的電路相關聯的信號的時序圖。
圖8A、圖8B和圖8C是圖示根據本案內容的某些態樣的具有權重的可配置位元大小的CIM電路系統(circuitry)的方塊圖。
圖9是圖示根據本案內容的某些態樣的用於記憶體內計算的示例性操作的流程圖。
圖10圖示根據本案內容的某些態樣的被配置為在神經網路中執行用於信號處理的操作的示例性電子設備。
為了促進理解,在可能的情況下,已經使用了相同的元件符號來指定對於附圖而言共同的相同元素。預期的是,在一個態樣中揭示的元素和特徵可以有益地併入其他態樣中,而不需要進一步記載。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
500:電路
501:CIM陣列
5020-0~50231-7:記憶體單元
5040~50431:字線
5060~5067:列
5100~5107:加法器樹
511:加法器電路
512:權重移位加法器樹電路
514:權重移位加法器
516:啟用移位累加器電路
518:位元移位電路
520:累加器
522:觸發器(FF)
590:啟用電路系統
591:FF
599:第一啟用輸入集合

Claims (30)

  1. 一種用於記憶體內計算的電路,包括: 一記憶體的多個列中的每一列上的複數個記憶體單元,該複數個記憶體單元被配置為儲存表示一神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上; 多個加法電路,每個加法電路耦合到該多個列中的相應一列; 一第一加法器電路,其耦合到該多個加法電路中的至少兩個加法電路的輸出;及 一累加器,其耦合到該第一加法器電路的一輸出。
  2. 根據請求項1之電路,其中該第一加法器電路的一或多個部分被配置為被選擇性地禁用。
  3. 根據請求項1之電路,其中該多個加法電路之每一者加法電路包括一加法器樹,該加法器樹耦合到該多個列中的該相應一列上的該複數個記憶體單元。
  4. 根據請求項1之電路,其中該多個加法電路之每一者加法電路包括另一累加器。
  5. 根據請求項1之電路,其中該第一加法器電路的一第一部分被配置為在一第一計算週期期間被選擇性地禁用,並且其中該第一加法器電路的一第二部分被配置為在一第二計算週期期間被選擇性地禁用。
  6. 根據請求項1之電路,亦包括:一第二加法器電路,其耦合在該多個加法電路之每一者加法電路與該多個列中的該相應一列之間。
  7. 根據請求項6之電路,其中該第二加法器電路包括耦合到該等字線中的兩條或更多條字線的一加法器樹。
  8. 根據請求項7之電路,其中該加法器樹被配置為將在該多個列中的該相應一列以及該等字線中的該兩條或更多條字線上的該等記憶體單元的輸出信號相加。
  9. 根據請求項6之電路,亦包括:一感測放大器,其耦合在該第二加法器電路與該多個列中的該相應一列之間。
  10. 根據請求項1之電路,其中該第一加法器電路包括一加法器樹,該加法器樹被配置為將該多個加法電路中的該至少兩個加法電路的輸出信號相加。
  11. 根據請求項10之電路,其中該加法器樹的一或多個加法器包括一位元移位和加法電路。
  12. 根據請求項1之電路,亦包括:一時鐘產生器電路,其具有被配置為輸出一第一時鐘信號的一第一輸出並且具有被配置為輸出一第二時鐘信號的一第二輸出,其中: 該多個加法電路耦合到該時鐘產生器的該第一輸出並且被配置為基於該第一時鐘信號進行操作;並且 該第一加法器電路耦合到該時鐘產生器的該第二輸出並且被配置為基於該第二時鐘信號進行操作,該第二時鐘信號具有與該第一時鐘信號不同的一頻率。
  13. 根據請求項12之電路,其中該時鐘產生器電路包括一倍頻器,該倍頻器被配置為基於該第一時鐘信號來產生該第二時鐘信號。
  14. 根據請求項1之電路,亦包括:複數個半鎖存器電路,每個半鎖存器電路耦合在該第一加法器電路與該多個加法電路中的一個加法電路之間。
  15. 根據請求項1之電路,其中: 該複數個記憶體單元被配置為基於不同的啟用輸入而被順序地啟用;並且 該累加器被配置為在該複數個記憶體單元被順序地啟用之後將該第一加法器電路的輸出信號累加。
  16. 根據請求項1之電路,其中該累加器是耦合到該第一加法器電路的該輸出的唯一累加器。
  17. 根據請求項1之電路,其中: 該多個列包括該多個列的一第一子集和該多個列的一第二子集;並且 該第一子集是在一第一計算週期期間啟用的。
  18. 根據請求項17之電路,其中該第二子集是在一第二計算週期期間啟用的,該第二計算週期在該第一計算週期之後。
  19. 根據請求項17之電路,其中: 該等字線中的每條字線上的該等記憶體單元中的至少一些記憶體單元被配置為儲存該神經網路的該等權重中的一個權重;並且 該多個列的該第一子集的一數量與該等權重中的該一個權重的位元的一數量相關聯。
  20. 根據請求項17之電路,亦包括:一時鐘閘控電路,其具有耦合到該多個加法電路的輸出並且被配置為停用與處理來自該多個列的該第二子集的信號相關聯的一時鐘信號。
  21. 一種用於記憶體內計算的方法,包括以下步驟: 經由多個加法電路之每一者加法電路,將一記憶體的多個列中的一相應一列上的輸出信號相加,其中複數個記憶體單元在該多個列中的每一列上,該複數個記憶體單元儲存表示一神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上; 經由一第一加法器電路將該多個加法電路中的至少兩個加法電路的輸出信號相加;及 經由一累加器將該第一加法器電路的輸出信號累加。
  22. 根據請求項21之方法,亦包括以下步驟:基於與該等權重之每一者權重相關聯的位元的一數量來選擇性地禁用該第一加法器電路的一或多個部分。
  23. 根據請求項21之方法,其中將該多個列中的該相應一列上的該等輸出信號相加之步驟包括以下步驟:在該等字線中的兩條或更多條字線被順序地啟用之後將該多個列中的該相應一列上的該等記憶體單元的輸出信號累加。
  24. 根據請求項23之方法,亦包括以下步驟:經由耦合在該多個加法電路之每一者加法電路與該多個列中的該相應一列之間的一第二加法器電路,將在該多個列中的該相應一列以及該等字線中的該兩條或更多條字線上的該等記憶體單元的輸出信號相加。
  25. 根據請求項24之方法,亦包括以下步驟:經由耦合在該第二加法器電路與該多個列中的該相應一列之間的一感測放大器,感測在該多個列中的該相應一列以及該等字線中的該兩條或更多條字線上的該等記憶體單元的該等輸出信號,其中經由該第二加法器電路進行相加是基於該等感測到的輸出信號的。
  26. 根據請求項21之方法,其中將該多個加法電路中的該至少兩個加法電路的該等輸出信號相加之步驟包括以下步驟:對該多個加法電路中的該至少兩個加法電路執行一位元移位和加法運算。
  27. 根據請求項21之方法,亦包括以下步驟: 產生一第一時鐘信號,其中該多個加法電路基於該第一時鐘信號進行操作;及 產生一第二時鐘信號,其中該第一加法器電路基於該第二時鐘信號進行操作,該第二時鐘信號具有與該第一時鐘信號不同的一頻率。
  28. 根據請求項21之方法,亦包括以下步驟:基於不同的啟用輸入來順序地啟用該複數個記憶體單元,其中將該第一加法器電路的該等輸出信號累加發生在該複數個記憶體單元被順序地啟用之後。
  29. 根據請求項28之方法,其中順序地啟用該複數個記憶體單元之步驟包括以下步驟: 在一第一啟用週期期間接收一第一啟用輸入集合;及 在一第二啟用週期期間接收一第二啟用輸入集合,其中將該第一加法器電路的該等輸出信號累加發生在該第一啟用週期和該第二啟用週期之後。
  30. 一種用於記憶體內計算的裝置,包括: 用於將一記憶體的多個列中的一相應一列上的輸出信號相加的第一構件,其中複數個記憶體單元在該多個列中的每一列上,該複數個記憶體單元儲存表示一神經網路的權重的多個位元,其中該多個列中的每一列上的該複數個記憶體單元在該記憶體的不同字線上; 用於將用於相加的該第一構件中的至少兩者的輸出信號相加的第二構件;及 用於將用於相加的該第二構件的輸出信號累加的構件。
TW111128554A 2021-08-02 2022-07-29 折疊用於數位記憶體內計算的列加法器架構 TW202324075A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/391,718 US20230031841A1 (en) 2021-08-02 2021-08-02 Folding column adder architecture for digital compute in memory
US17/391,718 2021-08-02

Publications (1)

Publication Number Publication Date
TW202324075A true TW202324075A (zh) 2023-06-16

Family

ID=82932405

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111128554A TW202324075A (zh) 2021-08-02 2022-07-29 折疊用於數位記憶體內計算的列加法器架構

Country Status (7)

Country Link
US (1) US20230031841A1 (zh)
EP (1) EP4381376A1 (zh)
JP (1) JP2024530610A (zh)
KR (1) KR20240035492A (zh)
CN (1) CN117751346A (zh)
TW (1) TW202324075A (zh)
WO (1) WO2023015105A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11942185B2 (en) * 2021-11-22 2024-03-26 Taiwan Semiconductor Manufacturing Company, Ltd. Memory device and method
US20230161557A1 (en) * 2021-11-24 2023-05-25 Taiwan Semiconductor Manufacturing Company, Ltd. Compute-in-memory devices and methods of operating the same
US20240144998A1 (en) * 2022-11-02 2024-05-02 Arizona Board Of Regents On Behalf Of Arizona State University Method and system for a programmable and generic processing-in-sram accelerator
CN118394300B (zh) * 2024-05-27 2025-02-21 北京航空航天大学合肥创新研究院 近似加法器树设计方法、加法器树电路结构以及芯片

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10867239B2 (en) * 2017-12-29 2020-12-15 Spero Devices, Inc. Digital architecture supporting analog co-processor
US11157237B2 (en) * 2018-11-13 2021-10-26 Hewlett Packard Enterprise Development Lp Memristive dot product circuit based floating point computations
US12182577B2 (en) * 2019-05-01 2024-12-31 Samsung Electronics Co., Ltd. Neural-processing unit tile for shuffling queued nibbles for multiplication with non-zero weight nibbles
US12079733B2 (en) * 2020-06-23 2024-09-03 Sandisk Technologies Llc Multi-precision digital compute-in-memory deep neural network engine for flexible and energy efficient inferencing
US11221827B1 (en) * 2020-08-28 2022-01-11 Macronix International Co., Ltd. In-memory computation device
US12147784B2 (en) * 2021-01-29 2024-11-19 Taiwan Semiconductor Manufacturing Company, Ltd. Compute in memory
US11581037B2 (en) * 2021-06-08 2023-02-14 Qualcomm Incorporated Digital compute-in-memory (DCIM) bit cell circuit layouts and DCIM arrays for multiple operations per column
US12340304B2 (en) * 2021-08-10 2025-06-24 Qualcomm Incorporated Partial sum management and reconfigurable systolic flow architectures for in-memory computation
US20230115373A1 (en) * 2021-10-13 2023-04-13 Qualcomm Incorporated Accumulator for digital computation-in-memory architectures

Also Published As

Publication number Publication date
CN117751346A (zh) 2024-03-22
US20230031841A1 (en) 2023-02-02
JP2024530610A (ja) 2024-08-23
WO2023015105A1 (en) 2023-02-09
EP4381376A1 (en) 2024-06-12
KR20240035492A (ko) 2024-03-15

Similar Documents

Publication Publication Date Title
TW202324075A (zh) 折疊用於數位記憶體內計算的列加法器架構
US20220414443A1 (en) Compute in memory-based machine learning accelerator architecture
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US12056459B2 (en) Compute in memory architecture and dataflows for depth-wise separable convolution
EP4416585B1 (en) Accumulator for digital computation-in-memory architectures
US20250124284A1 (en) Partial sum management and reconfigurable systolic flow architectures for in-memory computation
TW202324210A (zh) 支援深度式迴旋神經網路(cnn)的記憶體內計算(cim)架構和資料串流
US12019905B2 (en) Digital compute in memory
TW202324205A (zh) 用於分階段逐深度迴旋的記憶體內計算架構
WO2023015167A1 (en) Digital compute in memory
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements