TWI784879B - 計算方法及電子裝置 - Google Patents

計算方法及電子裝置 Download PDF

Info

Publication number
TWI784879B
TWI784879B TW111104682A TW111104682A TWI784879B TW I784879 B TWI784879 B TW I784879B TW 111104682 A TW111104682 A TW 111104682A TW 111104682 A TW111104682 A TW 111104682A TW I784879 B TWI784879 B TW I784879B
Authority
TW
Taiwan
Prior art keywords
bit
input
partial
sum
signal
Prior art date
Application number
TW111104682A
Other languages
English (en)
Other versions
TW202234298A (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 TW202234298A publication Critical patent/TW202234298A/zh
Application granted granted Critical
Publication of TWI784879B publication Critical patent/TWI784879B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/498Computations with decimal numbers radix 12 or 20. using counter-type accumulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; 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
    • G06F7/525Multiplying only in serial-serial fashion, i.e. both operands being entered serially
    • 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
    • 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/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
    • 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/418Address circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Monitoring And Testing Of Nuclear Reactors (AREA)

Abstract

一種記憶體內計算(CIM)裝置被配置成根據應用的類型確定至少一個輸入,並根據訓練結果或使用者的配置確定至少一個權重。CIM裝置基於輸入及權重自輸入的最高有效位元(MSB)至輸入的最低有效位元(LSB)執行位元串列乘法,以獲得根據多個部分積的結果。所述輸入的第一位元的第一部分積被左移一個位元,且然後與所述輸入的第二位元的第二部分積相加,以獲得所述第二位元的第一部分和。所述第二位元在所述第一位元之後一個位元,且由所述CIM裝置輸出所述結果。

Description

計算方法及電子裝置
在本發明的實施例中闡述的技術涉及計算方法及裝置。
本揭露大體而言是有關於記憶體內計算(in-memory computing)或者記憶體內計算(compute-in-memory,「CIM」),並且還有關於在例如乘法累加(multiply-accumulate,「MAC」)運算等資料處理中使用的記憶體陣列。記憶體內計算(compute-in-memory)或記憶體內計算(in-memory computing)系統將資訊儲存在電腦的主隨機存取記憶體(random-access memory,RAM)中,並在記憶體胞元層面上執行計算,而非為每個計算步驟在主RAM與資料儲存之間移動大量資料。由於所儲存的資料在儲存於RAM中時被快得多地存取,因此記憶體內計算允許即時分析資料,從而在業務及機器學習應用中實現更快的報告及決策。記憶體內計算系統的效能正在努力提高。
本發明實施例提供一種計算方法,被配置成在記憶體內計算(CIM)裝置中執行位元串列乘法,所述計算方法包括:根據應用的類型,確定至少一個輸入;根據訓練結果或使用者的配置,確定至少一個權重;經由所述記憶體內計算裝置,基於所述輸入及所述權重,自所述輸入的最高有效位元(MSB)至所述輸入的最低有效位元(LSB),執行所述位元串列乘法,以根據多個部分積的獲得結果,其中所述輸入的第一位元的第一部分積被左移一個位元,且然後與所述輸入的第二位元的第二部分積相加,以獲得所述第二位元的第一部分和,所述第二位元在所述第一位元之後一個位元;以及經由所述記憶體內計算裝置,輸出所述結果。
本發明實施例提供一種電子裝置,包括:加法器;移位器,其輸出端可操作地連接至所述加法器的第一輸入端,所述移位器被配置成左移一個位元;第一暫存器,其輸出端可操作地連接至所述移位器的輸入端;第二暫存器,其輸出端可操作地連接至所述加法器的第二輸入端;乘法器,被配置成基於輸入訊號及權重訊號執行位元串列乘法,以獲得多個部分積;其中所述第二暫存器的輸入端可操作以基於所述輸入訊號的最高有效位元(MSB)接收所述多個部分積中的第一部分積;且其中所述第一暫存器的輸入端可操作以接收所述加法器的輸出。
本發明實施例提供一種電子裝置,包括:記憶體陣列,儲存權重訊號;輸入驅動器,被配置成輸出輸入訊號;乘法器,被配置成自所述輸入訊號的最高有效位元(MSB)至所述輸入訊 號的最低有效位元(LSB)執行所述輸入訊號及所述權重訊號的位元串列乘法,以確定多個部分積;移位器,被配置成將所述輸入訊號的第一位元的第一部分積左移一個位元;加法器,被配置成將經左移的所述第一部分積與所述輸入訊號的第二位元的第二部分積相加,以獲得所述第二位元的第一部分和,其中所述第二位元在所述第一位元之後一個位元。
100:CIM裝置
102:輸入激活驅動器
104:WL驅動器
110:記憶體陣列
112:記憶體胞元
114:乘法電路
120:記憶體控制器
122:SRAM讀取/寫入電路
124:累加器
214:反或閘
215:及閘
240:加法器
242:第一暫存器
244:移位器
246:第二暫存器
300:乘法週期
310:第一部分積/部分積
312:第二部分積/部分積
314:第N+1部分積/部分積
400:方法
410、412、420、422、424、426:操作
BL:位元線
BLB:互補位元線/位元線
I、I1、I2、In:輸入訊號
I[0]:LSB
I[N-1]:下一位元/下一輸入位元
I[N]:MSB
LSB:最低有效位元
M1、M2、M3、M4:NMOS/PMOS電晶體對/電晶體
M5、M6:傳輸閘電晶體/存取電晶體/傳輸閘
MSB:最高有效位元
P:乘積
Q、QB:節點
SEL:選擇訊號
SELB:反相選擇訊號
VDD:電源
VSS:參考電壓
W:權重訊號
WL:字元線
藉由結合附圖閱讀以下詳細說明,會最佳地理解本揭露的各態樣。應注意,根據行業中的標準慣例,各種特徵並非按比例繪製。事實上,為論述清晰起見,可任意增大或減小各種特徵的尺寸。此外,附圖作為本發明實施例的實例為說明性的,而非旨在為限制性的。
圖1是示出根據一些實施例的記憶體內計算(CIM)裝置的實例的方塊圖。
圖2是示出根據一些實施例在圖1的CIM裝置中使用的靜態隨機存取記憶體(static random access memory,SRAM)記憶體胞元的實例的示意圖。
圖3是示出根據一些實施例在圖1的CIM裝置中使用的記憶體胞元及反或閘(NOR gate)的實例的示意圖。
圖4是示出根據一些實施例耦合至圖1的CIM裝置中的記憶體胞元的SRAM記憶體胞元及反或閘的實例的示意圖。
圖5是示出根據一些實施例在圖1的CIM裝置中使用的記憶體胞元及及閘(AND gate)的實例的示意圖。
圖6是示出根據一些實施例耦合至圖1的CIM裝置中的記憶體胞元的SRAM記憶體胞元及及閘的實例的示意圖。
圖7是示出根據一些實施例的位元串列乘法運算的方塊圖。
圖8是示出根據一些實施例的圖7所示的位元串列乘法運算的另一些態樣的方塊圖。
圖9是示出根據一些實施例的方法的實例的流程圖。
圖10是示出根據一些實施例的圖1所示的CIM裝置的另一些態樣的方塊圖。
圖11是示出根據一些實施例的位元串列乘法運算的方塊圖。
圖12是示出根據一些實施例的圖1所示的CIM裝置的另一些態樣的方塊圖。
以下揭露內容提供用於實施所提供標的的不同特徵的許多不同實施例或實例。以下闡述組件及排列的具體實例以簡化本揭露。當然,該些僅為實例且不旨在進行限制。舉例而言,以下說明中將第一特徵形成於第二特徵「上方」或第二特徵「上」可包括其中第一特徵與第二特徵被形成為直接接觸的實施例,且亦可包括其中第一特徵與第二特徵之間可形成有附加特徵進而使得第一特徵與第二特徵可不直接接觸的實施例。另外,本揭露可能 在各種實例中重複使用參考編號及/或字母。此種重複使用是出於簡潔及清晰的目的,而不是自身表示所論述的各種實施例及/或配置之間的關係。
此外,為易於說明,本文中可能使用例如「位於...之下(beneath)」、「位於...下方(below)」、「下部的(lower)」、「位於...上方(above)」、「上部的(upper)」及類似用語等空間相對性用語來闡述圖中所示的一個元件或特徵與另一(其他)元件或特徵的關係。所述空間相對性用語旨在除圖中所繪示的定向外亦囊括元件在使用或操作中的不同定向。裝置可具有其他定向(旋轉90度或處於其他定向),且本文中所使用的空間相對性描述語可同樣相應地進行解釋。
本揭露大體而言是有關於記憶體內計算(「CIM」)。CIM的應用的一個實例是乘法累加(「MAC」)運算。電腦人工智慧(artificial intelligence,「AI」)使用深度學習技術,其中計算系統可被組織為神經網路。舉例而言,神經網路指的是能夠分析資料的多個互連的處理節點。神經網路計算「權重」,以對新的輸入資料執行計算。神經網路使用多層計算節點,其中較深層基於由較高層執行的計算結果來執行計算。
機器學習(machine learning,ML)涉及電腦演算法,所述電腦演算法可藉由經驗及資料的使用自動改善。其被視為人工智慧的一部分。機器學習演算法基於樣本資料(稱為「訓練資料」)構建模型,以便在未被明確程式化進行此種操作的情況下進行預 測或決策。
神經網路可包括多個互連的處理節點,該等處理節點使得資料分析能夠將輸入與此種「經訓練的」資料進行比較。經訓練的資料是指對已知資料的性質進行計算分析,以開發用於比較輸入資料的模型。在對象識別中發現AI及資料訓練的應用的實例,其中系統分析諸多(例如,數千或大於數千)影像的性質,以確定可用於執行統計分析以辨識輸入對象的模式。
如上所述,神經網路計算權重以對輸入資料執行計算。神經網路使用多層計算節點,其中較深層基於由較高層執行的計算結果來執行計算。機器學習目前依賴於向量的點積(dot-product)及絕對差的計算,通常是藉由對參數、輸入資料及權重執行的MAC運算來計算的。大而深的神經網路的計算通常涉及如此多的資料元素,以至於將其儲存在處理器快取中是不切實際的,且因此其通常儲存在記憶體中。
因此,機器學習在計算及比較諸多不同的資料元素時計算量極大。處理器內運算的計算比處理器與主記憶體資源之間的資料傳輸快幾個數量級。由於儲存資料所需的記憶體大小,將所有資料放置成更靠近快取中的處理器對於大多數實際系統而言是過於昂貴的。因此,資料傳輸成為AI計算的主要瓶頸。隨著資料集的增加,計算系統用於四處移動資料的時間及功率/能量最終可能是實際執行計算所用時間及功率的數倍。
因此,CIM電路在記憶體中本地執行操作,而不必向主 機處理器發送資料。此可減少在記憶體與主機處理器之間傳輸的資料量,因此實現更高的吞吐量及效能。資料移動的減少亦減少了計算裝置內整體資料移動的能耗。
根據一些揭露的實施例,CIM裝置包括具有以列及行排列的記憶體胞元的記憶體陣列。記憶體胞元被配置成儲存權重訊號,並且輸入驅動器提供輸入訊號。乘法及累加(或乘法器-累加器)電路執行MAC運算,其中每一MAC運算計算兩個數字的乘積,並將所述乘積加至累加器(或加法器)。在一些實施例中,處理裝置或專用MAC單元或裝置可含有MAC計算硬體邏輯,所述MAC計算硬體邏輯包括以組合邏輯實施的乘法器,其後是加法器及儲存結果的累加器。累加器的輸出可回饋至加法器的輸入,使得在每一時脈週期上,乘法器的輸出被加至累加器。示例性處理裝置包括但不限於微處理器、數位訊號處理器、應用專用積體電路及現場可程式化閘陣列。
圖1是示出根據本揭露的示例性CIM裝置100的方塊圖。CIM記憶體陣列110包括被配置成儲存權重訊號W的多個記憶體胞元。CIM記憶體陣列110可用包括靜態隨機存取記憶體(「SRAM」)在內的各種記憶體裝置來實施。在典型的SRAM裝置中,當SRAM胞元中的一或多個存取電晶體被來自一或多個字元線(「WL」)的賦能訊號激活時,資料經由一或多個位元線(「BL」)被寫入SRAM胞元及自SRAM胞元讀取。
圖2是示出根據一些實施例的實例性記憶體胞元112的 電路圖。記憶體胞元112包括但不限於六電晶體(six-transistor,6T)SRAM胞元。在一些實施例中,可使用多於或少於六個電晶體來實施記憶體胞元112。舉例而言,在一些實施例中,記憶體胞元112可使用4T、8T或10T SRAM結構,並且在其他實施例中可包括類似記憶體的位元胞元或構建單元。記憶體胞元112包括由NMOS/PMOS電晶體對M1及M2形成的第一反相器、以及由NMOS/PMOS電晶體對M3及M4以及存取電晶體/傳輸閘M5及M6形成的第二反相器。
向反相器中的每一者供電,例如,電晶體M2及M4中的每一者的第一端子耦合至電源VDD,而電晶體M1及M3中的每一者的第一端子耦合至參考電壓VSS,例如地。一個位元的資料作為節點Q處的電壓位準儲存在記憶體胞元112中,並且可由電路系統經由位元線BL讀取。對節點Q的存取由傳輸閘電晶體M5控制。節點Qbar(QB)儲存Q處的值的補碼,例如,若Q為「高」,則QB將為「低」,並且可由電路系統經由位元線BLbar(BLB)讀取。對QB的存取由傳輸閘電晶體M6控制。
傳輸閘電晶體M5的閘極耦合至字元線WL。傳輸閘電晶體M5的第一源極/汲極(S/D)端子耦合至位元線BL,且傳輸閘電晶體M5的第二S/D端子在節點Q處耦合至電晶體M1及M2的第二端子。類似地,傳輸閘電晶體M6的閘極耦合至字元線WL。傳輸閘電晶體M6的第一S/D端子耦合至互補位元線BLB,且傳輸閘電晶體M6的第二S/D端子在節點QB處耦合至電晶體M3及 M4的第二端子。
返回至圖1,CIM裝置100更包括輸入激活驅動器102及SRAM WL驅動器104。輸入激活驅動器102驅動由乘法電路114乘以儲存在記憶體陣列110中的權重訊號W的輸入訊號I。SRAM WL驅動器104輸出WL訊號以激活記憶體胞元112的所需列。記憶體控制器120接收控制輸入,並向連接至記憶體陣列110的位元線BL、BLB的SRAM讀取/寫入電路122提供控制訊號,以便選擇對應於儲存的權重訊號W的適當的位元線BL、BLB(即行)。來自乘法電路114的輸出訊號被提供至累加器124,所述累加器124將乘法電路114輸出的部分和相加,如以下將進一步論述。
乘法電路114被配置成將輸入訊號I與權重訊號W相乘。圖3示出一個實例,其中乘法電路114為反或閘214,其接收來自記憶體陣列110的權重訊號W以及呈反相選擇訊號SELB形式的輸入訊號I,以輸出權重訊號W與反相選擇訊號SELB的乘積P。圖4示出所揭露實施例的另一些態樣,其中記憶體胞元112是如圖2所示並在以上論述的6T SRAM胞元,並且乘法電路114包括兩個輸入反或閘214。反或閘214的一個輸入耦合至記憶體胞元112的節點QB以接收反相的權重訊號,而反或閘214的另一輸入接收反相選擇訊號SELB。
圖5示出另一實例,其中乘法電路114是及閘215,其接收來自記憶體陣列110的權重訊號W以及呈選擇訊號SEL形式的 輸入訊號I,以輸出權重訊號W與選擇訊號SEL的乘積P。圖6示出所揭露實施例的另一些態樣,其中記憶體胞元112是如圖2所示並在以上論述的6T SRAM胞元,並且乘法電路114包括兩個輸入及閘215。及閘215的一個輸入耦合至記憶體胞元112的節點Q以接收權重訊號W,而及閘215的另一個輸入接收選擇訊號SEL。
在一些實例中,乘法電路114被配置成自輸入的最高有效位元至輸入的最低有效位元執行輸入訊號I及權重訊號W的位元串列乘法,因此產生多個部分積。部分積被輸出至累加器124,在累加器124處,對應於輸入訊號I的第一位元的第一部分積左移一個位元,且然後與輸入訊號I的第二位元的第二部分積相加,其中第二位元在第一位元之後一個位元。此產生第二位元的第一部分和。
相比之下,傳統的MAC運算自最低有效位元(LSB)開始實施乘法運算。因此,會產生輸入訊號I的LSB的部分積,且所述部分積然後被左移以累加部分和。此需要大的晶片面積來為每一輸入位元提供移位電路。此外,輸入的長度可能受到移位電路的限制。
根據所揭露的實施例,累加器124接收自乘法電路114輸入的部分積,其中第一個所接收的輸入是輸入的最高有效位元(MSB)乘以權重訊號W的部分積。舉例而言,輸入訊號I可由位元0-N(即,N+1位元輸入,N>1)表示,其中權重訊號W由位 元0-X(即,X+1位元權重,X>1)表示。位元串列MAC運算自輸入訊號I的MSB I[N]開始。因此,根據I[N]x W[X:0]產生第一部分積。根據I[N-1]x W[X:0]產生第二部分積。在此類實施例中,實施方式為:
第一週期I[N]xW[X:0]
第二週期I[N-1]xW[X:0]
第三週期I[N-2]xW[X:0]
N+1週期I[0]xW[X:0]
此種實施方式的實例示出於圖7中,圖7示出輸入訊號I[N:0]及權重訊號W[X:0],其中乘法週期300對應於輸入位元I[N:0]。輸入訊號I的每一位元I[N:0]串列乘以權重訊號W[X:0],自輸入訊號I的MSB(例如I[N])開始,且一直持續至輸入LSB I[0]。因此,如圖8所示,在第一週期期間,輸入的MSB I[N]乘以權重訊號W[X:0]以產生第一部分積310,在第二週期期間,下一位元I[N-1]乘以權重訊號W[X:0]以產生第二部分積312,以此類推,直至第N+1週期,在第N+1週期中,輸入的LSB I[0]乘以權重訊號W[X:0]以產生第N+1部分積314。如下文將進一步論述,然後累加器124將部分積310至314相加或累加。
圖9是示出根據所揭露實施例的方法400的流程圖。在操作410處,例如基於諸如機器學習、神經網路等AI應用來確定輸入訊號I。舉例而言,根據訓練資料或使用者的配置,在操作 412處確定權重訊號W。輸入與權重相乘,如在圖7及圖8的實例中所示。如上所述,執行位元串列乘法,其中輸入訊號I的每一位元乘以權重訊號W,從而產生部分積。更具體而言,自輸入訊號I的最高有效位元MSB至輸入訊號I的最低有效位元LSB執行輸入訊號I及權重訊號W的位元串列乘法,藉此產生多個部分積。
如同以上論述的實例,圖9假定在操作410處確定的輸入資料I由位元0-N表示,即I[N:0],並且在操作412處確定的權重訊號W由位元0-X表示,即W[X:0]。最初,將乘法週期i設置為等於N。因此,位元串列MAC運算自輸入訊號I[i]的MSB開始。在操作420處,根據I[i]x W[X:0]產生第一部分積[i]。在操作422處,藉由將先前的部分和左移一個位元(即,部分和I[i+1]x 21)並將經左移的先前部分和加至根據I[i]x W[X:0]確定的第二部分積,來確定部分和[i]。
i>0,則i減1(即i=i-1),並且方法400循環回至操作420。因此,在操作420處,為下一輸入位元I[i-1]確定部分積。在操作422處,藉由將在操作420處確定的先前部分積左移一個位元並將經左移的部分和加至根據I[i]x W[X:0]確定的部分積,再次確定部分和[i-1]。重複操作420及422,直至i=0,即在操作420處確定輸入訊號I的LSB的部分積,並在操作422處確定對應的部分和。
當在操作422中已經確定了LSB(i=0)的部分和時,在 操作424中,將對應於輸入訊號I的LSB的部分和轉換為總和Total-Sum[N],並且在操作426中輸出。
圖10是示出CIM裝置100的累加器124的實施例的方塊圖。累加器124接收先MSB的乘法電路114輸出的部分積,且累加器124實施圖9所示的操作422的左移及部分和的確定。累加器124包括加法器240以及移位器244,移位器244的輸出可操作地連接至加法器240的第一輸入。移位器被配置成實施圖9的操作424的左移。第一暫存器242的輸出可操作地連接至移位器244的輸入,且第二暫存器246的輸出可操作地連接至加法器240的第二輸入。
第二暫存器246接收乘法電路114輸出的部分積。如上所述,乘法電路114被配置成自輸入訊號I的MSB至LSB執行輸入訊號I及權重訊號W的位元串列乘法,以輸出由第二暫存器246接收的部分積。因此,在第一乘法週期i(i=N)期間,第二暫存器246最初接收對應於輸入訊號I的MSB乘以權重訊號W的部分積(即,如圖9所示,i=N)。初始部分積(部分積[i]=I[i]x W[X:0];i=N)自第二暫存器246輸出至加法器240,加法器240將輸入訊號I的MSB的部分積輸出至第一暫存器242。移位器244將部分和左移一個位元(即,部分和[i]=部分和[i+1]x2+I[i]x W),並且移位器244將經左移的部分和輸出至加法器240。
在下一週期i-1期間,加法器240藉由將由移位器244輸出的經左移的部分和與部分積I[i]x W[X:0]相加來確定部分和,如 圖9的操作422所示。如圖7及圖8所示,對N+1個乘法週期重複此過程。因此,當如圖9所示i=0時,加法器240根據圖9的操作424及426依據總和[N]=部分和[0]而輸出總和。
因此,對於輸入訊號I的每一位元的乘積I[N:0]x W[X:0](即每一部分積),對於在與自輸入訊號I的MSB至LSB的下一位元的部分積(即I[i-1]x W[X:0])相加之前的部分和,每一部分和被左移一個位元。此根據以下有效地計算總和:總和=ΣI[i]x W x 2 i i=N~0
然而,藉由首先確定輸入訊號I的MSB的部分積,移位器244能夠完成用於總和計算的移位操作。相比之下,依據輸入的長度,確定自輸入的LSB至MSB的部分積的傳統MAC實施方式可能需要多個移位器及用於對應的多個移位操作的相關電路。此繼而使電路設計變得複雜,需要額外的晶片空間,消耗額外的功率等,並且可能導致有限的輸入長度。
圖7及圖8示出累加器124累加單個輸入訊號I的部分積的實例。在其他實施方式中,輸入激活驅動器102可產生多個輸入訊號I。圖11示出其中多個輸入訊號I1至In各自乘以權重訊號W[X:0]的此種實施例。
在圖11中,多個輸入訊號I1[N:0]...In[N:0]中的每一者乘以權重訊號W1[X:0]...Wn[X:0]。乘法週期300對應於相應輸入訊號I1...In的每一位元[N:0]。每一輸入訊號I1...In的每一位元[N:0]串列乘以權重訊號W1[X:0]...Wn[X:0],自每一輸入訊號 I1...In的MSB開始,且一直持續至輸入LSB I[0]。因此,在第一週期期間,每一輸入訊號I1...In的MSB乘以權重訊號W1[X:0]...Wn[X:0]以產生相應的部分積。在第二週期期間,每一輸入訊號I1...In的下一輸入位元I[N-1]乘以對應的權重訊號W1[X:0]...Wn[X:0]以產生第二部分積,以此類推,直至第N+1個週期,在第N+1個週期中,輸入的LSB I[0]乘以權重訊號W[X:0]以產生第N+1部分積。
圖12示出累加器124及乘法電路114的實例。在圖11及圖12的實例中,乘法電路114對在每一乘法週期期間產生的部分積求和。乘法電路114可包括例如加法器電路,用於對每一輸入的部分積求和。然後,乘法電路114將每一部分積的和輸出至累加器124。如同圖10的實例,圖12中所示的累加器124,自對應於輸入訊號I1...In的MSB的經求和的部分積開始接收乘法電路114輸出的經求和的部分積。累加器124被配置成實施圖9所示的操作422的左移及部分和的確定。
移位器244的輸出可操作地連接至加法器240的第一輸入,並且移位器被配置成實施圖9的操作424的左移。第一暫存器242的輸出可操作地連接至移位器244的輸入,且第二暫存器246的輸出可操作地連接至加法器240的第二輸入。第二暫存器246接收乘法電路114輸出的經求和的部分積。如上所述,乘法電路114被配置成自輸入的MSB至LSB對每一輸入訊號I1...In及權重訊號W執行位元串列乘法,以輸出由第二暫存器246接收的 經求和的部分積。因此,在第一乘法週期i(i=N)期間,第二暫存器246最初接收對應於輸入訊號I1...In的MSB乘以權重訊號W的經求和的部分積(即,如圖9所示,i=N)。初始部分積(部分積[i]=I[i]x W[X:0];i=N)自第二暫存器246輸出至加法器240,加法器240將輸入訊號I MSB的部分積輸出至第一暫存器242。移位器244將部分積左移一個位元(即,部分積[i]=I[i]x W[X:0]x 21),並且移位器244將經左移的部分積輸出至加法器240。
在下一週期i-1期間,加法器240藉由將由移位器244輸出的經左移的部分積與部分積I[i+1]x W[X:0]相加來確定部分和,如圖9的操作422所示。如圖11所示,對N+1個乘法週期重複此過程。因此,當如圖9所示i=0時,加法器240根據圖9的操作424及426依據總和[N]=部分和[0]而輸出總和。
因此,所揭露的實施例包括一種計算方法,所述計算方法被配置成在記憶體內計算(CIM)裝置中執行位元串列乘法。CIM裝置根據應用的類型接收至少一個輸入,並根據訓練結果或使用者的配置接收至少一個權重。CIM裝置基於輸入及權重,自輸入的最高有效位元(MSB)至輸入的最低有效位元(LSB)執行位元串列乘法,以獲得根據多個部分積的結果。輸入的第一位元的第一部分積被左移一個位元,且然後與輸入的第二位元的第二部分積相加,以獲得第二位元的第一部分和。第二位元在第一位元之後一個位元,且經由CIM裝置輸出結果。
在相關實施例中,其中執行所述位元串列乘法包括:由 乘法電路將所述輸入的最高有效位元I[N](N>0)乘以所述權重的每一位元來確定所述第一位元的所述第一部分積。
在相關實施例中,所述輸入包括多個輸入,並且其中執行所述位元串列乘法包括:由乘法電路將所述輸入中的每一者的所述最高有效位元乘以所述權重的每一位元來確定所述第一位元的多個所述第一部分積;以及對所述多個所述第一部分積求和。
在相關實施例中,其中執行所述位元串列乘法包括:由累加器電路將所述第一部分積左移一個位元;由所述乘法電路將所述輸入的下一位元I[N-1]乘以所述權重的每一位元來確定所述第二位元的所述第二部分積。
在相關實施例中,其中執行所述位元串列乘法包括:由所述累加器電路將經左移的所述第一部分積與所述第二部分積相加,以獲得所述下一位元I[N-1]的所述第一部分和。
在相關實施例中,其中執行所述位元串列乘法包括:由所述累加器電路將所述下一位元I[N-1]的所獲得的所述第一部分和左移一個位元;由所述乘法電路將所述輸入的第二下一位元I[N-2]乘以所述權重的每一位元來確定所述第二下一位元I[N-2]的所述第二部分積;以及由所述累加器電路將所述下一位元I[N-1]的所獲得的經左移的所述第一部分和與所述第二下一位元I[N-2]的所述第二部分積相加,以獲得所述第二下一位元I[N-2]的所述第一部分和。
在相關實施例中,其中執行所述位元串列乘法包括:由 所述累加器電路將所述下一位元I[N-1]的所獲得的所述第一部分和左移一個位元;由所述乘法電路將所述輸入的最低有效位元I[0]乘以所述權重的每一位元來確定所述最低有效位元I[0]的所述第二部分積;以及由所述累加器電路將所述下一位元I[N-1]的所獲得的經左移的所述第一部分和與所述最低有效位元I[0]的所述第二部分積相加,以獲得總和。
根據另一些態樣,一種電子裝置包括:加法器;以及移位器,其輸出端可操作地連接至所述加法器的第一輸入端。移位器被配置成左移一個位元。第一暫存器的輸出端可操作地連接至移位器的輸入端。第二暫存器的輸出端可操作地連接至加法器的第二輸入端。乘法器被配置成基於輸入訊號及權重訊號執行位元串列乘法,以獲得多個部分積。第二暫存器的輸入端可操作以基於輸入訊號的最高有效位元(MSB)接收所述多個部分積中的第一部分積。第一暫存器的輸入端可操作以接收加法器的輸出。
在相關實施例中,所述的電子裝置更包括第三暫存器。所述第三暫存器的輸入端可操作地連接至所述加法器的所述輸出。
在相關實施例中,所述乘法器包括反或閘。
在相關實施例中,所述乘法器包括及閘。
在相關實施例中,所述的電子裝置更包括被配置成儲存所述權重訊號的記憶體陣列。
在相關實施例中,所述記憶體陣列包括多個靜態隨機存 取記憶體胞元。
在相關實施例中,所述的電子裝置更包括被配置成儲存所述權重訊號的記憶體陣列。
在相關實施例中,所述乘法器被配置成藉由將所述輸入訊號的最高有效位元I[N](N>0)乘以所述權重訊號的每一位元來確定所述部分積中的第一個。
在相關實施例中,所述移位器被配置成基於所述部分積中的第一個,將第一部分和左移一個位元;所述乘法器被配置成藉由將所述輸入訊號的下一位元I[N-1]乘以所述權重訊號的每一位元來確定所述部分積中的第二個;且所述加法器被配置成將經左移的所述第一部分和與所述部分積中的所述第二個相加,以獲得所述下一位元I[N-1]的第一部分和。
在相關實施例中,所述移位器被配置成將所述下一位元I[N-1]的所獲得的所述第一部分和左移一個位元;所述乘法器被配置成藉由將所述輸入訊號的最低有效位元I[0]乘以所述權重訊號的每一位元來確定所述輸入訊號的所述最低有效位元I[0]的所述部分積中的下一個;且所述加法器被配置成將所述下一位元I[N-1]的所獲得的經左移的所述第一部分和與所述最低有效位元I[0]的所述部分積中的所述下一個相加,以獲得總和。
根據再一些所揭露的態樣,一種電子裝置包括儲存權重訊號的記憶體陣列。輸入驅動器被配置成輸出輸入訊號。乘法器被配置成自輸入訊號的MSB至輸入訊號的LSB執行輸入訊號及權 重訊號的位元串列乘法,以確定多個部分積。移位器被配置成將輸入訊號的第一位元的第一部分積左移一個位元。加法器被配置成將經左移的第一部分積與輸入訊號的第二位元的第二部分積相加,以獲得第二位元的第一部分和,所述第二位元在所述第一位元之後一個位元。
在相關實施例中,所述的電子裝置更包括:第一暫存器以及第二暫存器。第一暫存器的輸出端可操作地連接至所述移位器的輸入端,且輸入端可操作地連接至所述加法器的輸出。第二暫存器的其輸出端可操作地連接至所述加法器的第二輸入端,其中所述第二暫存器的輸入端可操作地連接至所述乘法器的輸出端。
在相關實施例中,所述的電子裝置更包括第三暫存器。所述第三暫存器的輸入端可操作地連接至所述加法器的所述輸出。
本揭露概述了各種實施例,以使熟習此項技術者可更佳地理解本揭露的各個態樣。熟習此項技術者應理解,他們可容易地使用本揭露作為設計或修改其他製程及結構的基礎來施行與本文中所介紹的實施例相同的目的及/或達成與本文中所介紹的實施例相同的優點。熟習此項技術者亦應認識到,該些等效構造並不背離本揭露的精神及範圍,而且他們可在不背離本揭露的精神及範圍的條件下對其作出各種改變、代替及變更。
100:CIM裝置 102:輸入激活驅動器 104:WL驅動器 110:記憶體陣列 114:乘法電路 120:記憶體控制器 122:SRAM讀取/寫入電路 124:累加器 W:權重訊號 WL:字元線

Claims (10)

  1. 一種計算方法,被配置成在記憶體內計算(CIM)裝置中執行位元串列乘法,所述計算方法包括:根據應用的類型,確定至少一個輸入;根據訓練結果或使用者的配置,確定至少一個權重;經由所述記憶體內計算裝置,基於所述輸入及所述權重,自所述輸入的最高有效位元(MSB)至所述輸入的最低有效位元(LSB),執行所述位元串列乘法,以根據多個部分積的獲得結果,其中所述輸入的第一位元的第一部分積被左移一個位元,且然後與所述輸入的第二位元的第二部分積相加,以獲得所述第二位元的第一部分和,所述第二位元在所述第一位元之後一個位元;以及經由所述記憶體內計算裝置,輸出所述結果。
  2. 如請求項1所述的計算方法,其中執行所述位元串列乘法包括:由乘法電路將所述輸入的最高有效位元I[N](N>0)乘以所述權重的每一位元來確定所述第一位元的所述第一部分積。
  3. 如請求項2所述的計算方法,其中執行所述位元串列乘法包括:由累加器電路將所述第一部分積左移一個位元;由所述乘法電路將所述輸入的下一位元I[N-1]乘以所述權重的每一位元來確定所述第二位元的所述第二部分積。
  4. 如請求項3所述的計算方法,其中執行所述位元串列乘法包括:由所述累加器電路將經左移的所述第一部分積與所述第二部分積相加,以獲得所述下一位元I[N-1]的所述第一部分和。
  5. 如請求項4所述的計算方法,其中執行所述位元串列乘法包括:由所述累加器電路將所述下一位元I[N-1]的所獲得的所述第一部分和左移一個位元;由所述乘法電路將所述輸入的第二下一位元I[N-2]乘以所述權重的每一位元來確定所述第二下一位元I[N-2]的所述第二部分積;以及由所述累加器電路將所述下一位元I[N-1]的所獲得的經左移的所述第一部分和與所述第二下一位元I[N-2]的所述第二部分積相加,以獲得所述第二下一位元I[N-2]的所述第一部分和。
  6. 如請求項4所述的計算方法,其中執行所述位元串列乘法包括:由所述累加器電路將所述下一位元I[N-1]的所獲得的所述第一部分和左移一個位元;由所述乘法電路將所述輸入的最低有效位元I[0]乘以所述權重的每一位元來確定所述最低有效位元I[0]的所述第二部分積;以及由所述累加器電路將所述下一位元I[N-1]的所獲得的經左移 的所述第一部分和與所述最低有效位元I[0]的所述第二部分積相加,以獲得總和。
  7. 一種電子裝置,包括:加法器;移位器,其輸出端可操作地連接至所述加法器的第一輸入端,所述移位器被配置成左移一個位元;第一暫存器,其輸出端可操作地連接至所述移位器的輸入端;第二暫存器,其輸出端可操作地連接至所述加法器的第二輸入端;乘法器,被配置成基於輸入訊號及權重訊號執行位元串列乘法,以獲得多個部分積;其中所述第二暫存器的輸入端可操作以基於所述輸入訊號的最高有效位元(MSB)接收所述多個部分積中的第一部分積;且其中所述第一暫存器的輸入端可操作以接收所述加法器的輸出。
  8. 如請求項7所述的電子裝置,其中所述乘法器被配置成藉由將所述輸入訊號的最高有效位元I[N](N>0)乘以所述權重訊號的每一位元來確定所述部分積中的第一個。
  9. 如請求項8所述的電子裝置,其中:所述移位器被配置成基於所述部分積中的第一個,將第一部分和左移一個位元;所述乘法器被配置成藉由將所述輸入訊號的下一位元I[N-1] 乘以所述權重訊號的每一位元來確定所述部分積中的第二個;且所述加法器被配置成將經左移的所述第一部分和與所述部分積中的所述第二個相加,以獲得所述下一位元I[N-1]的第一部分和。
  10. 一種電子裝置,包括:記憶體陣列,儲存權重訊號;輸入驅動器,被配置成輸出輸入訊號;乘法器,被配置成自所述輸入訊號的最高有效位元(MSB)至所述輸入訊號的最低有效位元(LSB)執行所述輸入訊號及所述權重訊號的位元串列乘法,以確定多個部分積;移位器,被配置成將所述輸入訊號的第一位元的第一部分積左移一個位元;加法器,被配置成將經左移的所述第一部分積與所述輸入訊號的第二位元的第二部分積相加,以獲得所述第二位元的第一部分和,其中所述第二位元在所述第一位元之後一個位元。
TW111104682A 2021-02-19 2022-02-09 計算方法及電子裝置 TWI784879B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163151328P 2021-02-19 2021-02-19
US63/151,328 2021-02-19
US202163162818P 2021-03-18 2021-03-18
US63/162,818 2021-03-18
US17/558,105 US20220269483A1 (en) 2021-02-19 2021-12-21 Compute in memory accumulator
US17/558,105 2021-12-21

Publications (2)

Publication Number Publication Date
TW202234298A TW202234298A (zh) 2022-09-01
TWI784879B true TWI784879B (zh) 2022-11-21

Family

ID=82071444

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111104682A TWI784879B (zh) 2021-02-19 2022-02-09 計算方法及電子裝置

Country Status (5)

Country Link
US (1) US20220269483A1 (zh)
KR (1) KR20220118924A (zh)
CN (1) CN114675805A (zh)
DE (1) DE102022100920A1 (zh)
TW (1) TWI784879B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220244916A1 (en) * 2021-01-29 2022-08-04 Taiwan Semiconductor Manufacturing Company, Ltd. Compute in memory
US12131775B2 (en) * 2022-02-23 2024-10-29 Nvidia Corp. Keeper-free volatile memory system
KR20240041036A (ko) * 2022-09-22 2024-03-29 삼성전자주식회사 메모리 프로세서 연산 방법 및 장치
US20240119562A1 (en) * 2022-10-11 2024-04-11 Samsung Electronics Co., Ltd. Least significant bit (lsb) information preserved signal interpolation with low bit resolution processors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190042160A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with time-to-digital computation
US10748603B2 (en) * 2018-09-28 2020-08-18 Intel Corporation In-memory multiply and accumulate with global charge-sharing
US20200381027A1 (en) * 2019-05-31 2020-12-03 Taiwan Semiconductor Manufacturing Company, Ltd. Dac/adc architecture for ai in memory
US10877752B2 (en) * 2018-09-28 2020-12-29 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190042160A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Compute in memory circuits with time-to-digital computation
US10748603B2 (en) * 2018-09-28 2020-08-18 Intel Corporation In-memory multiply and accumulate with global charge-sharing
US10877752B2 (en) * 2018-09-28 2020-12-29 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory
US20200381027A1 (en) * 2019-05-31 2020-12-03 Taiwan Semiconductor Manufacturing Company, Ltd. Dac/adc architecture for ai in memory

Also Published As

Publication number Publication date
DE102022100920A1 (de) 2022-08-25
CN114675805A (zh) 2022-06-28
US20220269483A1 (en) 2022-08-25
KR20220118924A (ko) 2022-08-26
TW202234298A (zh) 2022-09-01

Similar Documents

Publication Publication Date Title
TWI784879B (zh) 計算方法及電子裝置
US11966714B2 (en) Ternary in-memory accelerator
US20220244916A1 (en) Compute in memory
TWI815312B (zh) 記憶體裝置、記憶體內計算裝置及方法
US20220019407A1 (en) In-memory computation circuit and method
US20240231758A1 (en) Performing Multiple Bit Computation and Convolution in Memory
Luo et al. AILC: Accelerate on-chip incremental learning with compute-in-memory technology
JP2024530610A (ja) デジタルコンピュートインメモリのための折り畳み列加算器アーキテクチャ
Chen et al. BP-SCIM: A reconfigurable 8T SRAM macro for bit-parallel searching and computing in-memory
Lin et al. A fully digital SRAM-based four-layer in-memory computing unit achieving multiplication operations and results store
US20220108203A1 (en) Machine learning hardware accelerator
TWI858359B (zh) 記憶體裝置、計算裝置及用於記憶體內計算的方法
KR102726631B1 (ko) 컴퓨트 인 메모리 (cim) 메모리 어레이
US20230161557A1 (en) Compute-in-memory devices and methods of operating the same
TW202318427A (zh) 記憶體裝置、計算裝置及用於記憶體內計算的方法
KR20190114208A (ko) 저전력 및 고속 연산을 위한 dram용 비트와이즈 컨볼루션 회로
US20220398067A1 (en) Multiply-accumlate device
US12032959B2 (en) Non-volatile memory die with latch-based multiply-accumulate components
US20230115373A1 (en) Accumulator for digital computation-in-memory architectures
CN115394337A (zh) 一种存内计算电路及方法