TW202303421A - 一種矩陣乘法電路模組及方法 - Google Patents

一種矩陣乘法電路模組及方法 Download PDF

Info

Publication number
TW202303421A
TW202303421A TW111116729A TW111116729A TW202303421A TW 202303421 A TW202303421 A TW 202303421A TW 111116729 A TW111116729 A TW 111116729A TW 111116729 A TW111116729 A TW 111116729A TW 202303421 A TW202303421 A TW 202303421A
Authority
TW
Taiwan
Prior art keywords
column
row
matrix
multiplication
unit
Prior art date
Application number
TW111116729A
Other languages
English (en)
Other versions
TWI847132B (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 TW202303421A publication Critical patent/TW202303421A/zh
Application granted granted Critical
Publication of TWI847132B publication Critical patent/TWI847132B/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • 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
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/16Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
    • G06G7/163Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division using a variable impedance controlled by one of the input signals, variable amplification or transfer function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G06N3/065Analogue means

Landscapes

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

Abstract

本發明實施例揭露了矩陣乘法電路模組、方法。該模組包括:實現列行乘法計算的列行計算單元;所述列行計算單元包括一個乘法單元和一個加法單元;乘法單元用於實現第一矩陣的列矩陣元素與第二矩陣的行矩陣元素的乘法計算;乘法單元的輸入端接收在多個設定時序內依序輸入的至少一個電信號;電信號用於代表第一矩陣中列矩陣元素;所述加法單元用於對各電信號輸入到所述乘法單元得到的乘積進行累加,以實現列行乘法計算。减少了實現矩陣乘法電路所占用的空間。

Description

一種矩陣乘法電路模組及方法
本發明涉及神經網路技術領域,尤其涉及一種使用硬體來實現矩陣乘法的電路模組及方法。
隨著科學技術的發展,産生了大量的資料處理需求。上述資料處理可以包括矩陣乘法的實現。矩陣乘法是兩個矩陣相乘。可以使用軟體程式來實現矩陣乘法。另外,在一些應用場景中,可以使用硬體來實現矩陣乘法。
提供本發明內容部分以便以簡要的形式介紹構思,這些構思將在後面的實施方式部分被詳細描述。本發明內容部分並不旨在標識要求保護的技術方案的關鍵特徵或必要特徵,也不旨在用于限制所要求的保護的技術方案的範圍。
本發明提供了一種矩陣乘法電路模組及方法。
第一方面,本發明的矩陣乘法電路模組,實現列行乘法計算的列行計算單元;列行計算單元包括一個乘法單元和一個加法單元;乘法單元用於實現第一矩陣的列矩陣元素與第二矩陣的行矩陣元素的乘法計算;乘法單元的輸入端接收在多個設定時序內依序輸入的至少一個電信號;電信號用於代表第一矩陣中列矩陣元素;加法單元用於對各電信號輸入到所述乘法單元得到的輸出信號進行累加,以實現列行乘法計算。
第二方面,本發明的矩陣乘法實現方法,應用於上述矩陣乘法電路模組,包括:獲取第一矩陣的列的列矩陣元素,以及第二矩陣中與該列對應行的行矩陣元素,其中列矩陣元素由電信號代表;確定各列矩陣元素對應的計算時序;對於每一個列矩陣元素,在列矩陣元素對應的計算時序內,將列矩陣元素輸入到列行計算單元的乘法單元,由乘法單元實現列矩陣元素與第二矩陣中的對應行的行矩陣元素的乘積,並將乘積輸入到加法單元;利用加法單元累加列對應的各列矩陣元素的乘積,得到列行乘法計算結果。
第三方面,本發明還提供了一種積體電路,積體電路包括上述的矩陣乘法電路模組。
基於上述,本發明實施例提供的矩陣乘法電路模組、矩陣乘法實現方法,通過在列行計算單元中設置一個乘法單元和一個加法單元,根據各列矩陣元素對應的時序,向乘法單元輸入各列矩陣元素分別對應的電信號,由乘法單元實現列矩陣元素與列矩陣元素對應的行矩陣元素的乘積,由加法單元對各列矩陣元素對應的乘積進行累加,實現列行乘法計算,减少了列行計算單元所包括的乘法單元的數量,一方面可以减少實現矩陣乘法的電路的複雜度,另一方面可以减少實現矩陣乘法電路所占用的空間,有利於矩陣乘法電路在體積較小的硬體電路上的應用。
下面將參照附圖更詳細地描述本發明的實施例。雖然附圖中顯示了本發明的某些實施例,然而應當理解的是,本發明可以通過各種形式來實現,而且不應該被解釋爲限於這裏闡述的實施例,相反提供這些實施例是爲了更加透徹和完整地理解本發明。應當理解的是,本發明的附圖及實施例僅用於示例性作用,並非用於限制本發明的保護範圍。
應當理解,本發明的方法實施方式中記載的各個步驟可以按照不同的順序執行,和/或並行執行。此外,方法實施方式可以包括附加的步驟和/或省略執行示出的步驟。本發明的範圍在此方面不受限制。
本文使用的術語「包括」及其變形是開放性包括,即「包括但不限於」。術語「基於」是「至少部分地基於」。術語「一個實施例」表示“至少一個實施例」;術語「另一實施例」表示「至少一個另外的實施例」;術語「一些實施例」表示「至少一些實施例」。其他術語的相關定義將在下文描述中給出。
需要注意,本發明中提及的「第一」、「第二」等概念僅用於對不同的裝置、模組或單元進行區分,並非用於限定這些裝置、模組或單元所執行的功能的順序或者相互依存關係。
需要注意,本發明中提及的「一個」、「多個」的修飾是示意性而非限制性的,本領域技術人員應當理解,除非在上下文另有明確指出,否則應該理解爲「一個或多個」。
本發明實施方式中的多個裝置之間所交互的訊息或者信號的名稱僅用於於說明性的目的,而並不是用於於對這些訊息或信號的範圍進行限制。
請參考圖1,其示出了根據本發明的矩陣乘法電路模組的一些實施例的結構示意圖。如圖1所示,該矩陣乘法電路模組,包括:
一個實現列行乘法計算的列行計算單元10。列行計算單元10包括乘法單元11和加法單元12。乘法單元11的輸出端與加法單元12的輸入端連接。
乘法單元11用於實現第一矩陣的列矩陣元素與第二矩陣的行矩陣元素的乘法計算。
加法單元12用於對各電信號輸入到所述乘法單元11得到的乘積進行累加,以實現列行乘法計算。
矩陣乘法可以是第一矩陣與第二矩陣的矩陣乘法。矩陣乘法可以通常包括多個列行乘法計算。矩陣乘法中,第一矩陣的每一列,該列可以與第二矩陣的各個行進行列行乘法計算。每一列與行之間的乘法計算可以爲列與行的列行乘法計算。對於每個列行乘法計算可以包括:第一,先計算第一矩陣的列的各列矩陣元素分別與第二矩陣的行的行矩陣元素的乘積。第二,將各乘積進行累加,得到上述列行乘法計算結果。
對於每一個列行乘法計算過程,可以設置多個設定時序。
上述乘法單元11的輸入端,接收在多個設定時序內依序輸入至少一個電信號。上述電信號用於代表第一矩陣中的列矩陣元素。上述電信號可以爲電壓信號,也可以爲電流信號,本發明中以電壓信號爲例進行說明。基於相似的原理,本發明可以應用於電信號爲電流信號的場景中。
以電信號爲電壓信號爲例,電壓信號的大小可以與第一矩陣中列矩陣元素的大小成比。也可以預先設置電壓信號與列矩陣元素之間的轉換關係,通過上述轉換關係,可以由電壓信號來代表矩陣元素。
以上述圖1所示的電信號S1…SN爲例,可以預先設置電信號S1~SN各自對應的時序。在每一個時序內,可以將該時序對應的電信號輸入到乘法單元中。
上述電信號S1~SN可以是同一列的列矩陣元素。
對於每一個電信號S1…SN,將該電信號輸入到乘法單元後,乘法單元可以實現該電信號對應的行矩陣元素的乘法計算。
在一些可選的實現方式中,所述乘法單元包括用於實現行矩陣元素的第一負載。如圖4所示,乘法單元11包括第一負載R。第一負載R的負載值的大小可以代表行矩陣元素。
當電信號S作用到上述第一負載R時,第一負載R輸出的響應信號可以代表上述列矩陣元素與行矩陣元素的乘法計算得到的乘積。
進一步地,上述第一負載R可以包括電阻,上述第一負載R的負載值可以爲電阻的電導值。上述加法單元可以包括電容。
實踐中,當代表一個列矩陣元素的電信號作用到負載(也即上述電阻,該負載的負載值的大小代表行矩陣元素)時,由負載對電信號産生的響應信號(電壓信號與電導的乘積)可以代表該列矩陣元素與行矩陣元素的乘積。
在一些應用場景中,爲了使得第一負載R可以代表不同大小的行矩陣元素,第一負載R的負載值大小可調。
實踐中,對於用於代表第一矩陣的每一個列矩陣元素的電信號,在將電信號輸入到上述乘法單元之前,且在該電信號對應的時序內,由用於調節負載的負載值的調節信號調節負載值的大小,使得大小調節後的負載的負載值可以代表該電信號對應的行矩陣元素。
在這些應用場景中,對於一個行矩陣元素,可以通過時序控制電路,確定與該行矩陣元素對應的列矩陣元素輸入的時序。在該列矩陣元素對應的電信號輸入到乘法單元的時序內,且在該列矩元素輸入到乘法單元的同時或之前,可以通過邏輯電路産生控制負載值調整的控制信號。在與該控制信號對應開關電路的作用下,將上述控制信號作用到負載值可調的負載上。調節後的負載值可以代表行矩陣元素。
在這些應用場景中,通過在各列矩陣元素對應時序時,調整負載的負載值的大小,使得調節後的負載值代表該列矩陣元素對應的行矩陣元素。將代表列矩陣元素的電信號作用到代表行矩陣元素的負載時,負載的響應信號代表列矩陣元素與行矩陣元素的乘積。進一步地,由加法單元對各乘積進行累加,從而實現列行的乘法計算。
在另外一些應用場景中,如圖5所示,乘法單元11可以包括電信號調節子單元13和第二負載R’。第二負載R’的負載值不變。上述電信號調節子單元13用於調節輸入的電信號S的大小。由上述電信號調節子單元13對電信號S的調節比例與上述負載的負載值的共同作用,實現與矩陣元素的匹配。
上述第二負載可以爲電阻,上述加法單元可以包括電容。
在這些應用場景中,上述電信號可以爲電壓信號,上述電信號調節子單元包括電壓信號工作週期調節單元。上述電信號調節子單元可以調節輸入的電壓信號的工作週期。通過調節電壓信號的工作週期,調節作用到上述負載上的電壓信號的大小。
上述電壓信號工作週期調節單元可以包括:開關電路和脉衝寬度調變(Pulse width modulation,PWM)電路。電壓信號輸入到開關電路的信號輸入端。開關電路的信號輸出端與第二負載(電阻)連接。開關電路的控制端與PWM電路的輸出端連接。PWM電路輸出的信號爲控制電信號調節子單元的控制信號。開關電路在PWM電路輸出的信號的控制下導通和關閉。開關電路導通時,電壓信號作用到上述第二負載上。開關電路斷開時,電壓信號不再作用到第二負載上。通過上述控制信號的調節,調節作用到上述第二負載上的電壓信號的時長,從而調節作用的第二負載上的電壓信號的工作週期。通過調節作用到第二負載上的電壓信號的工作週期的方式,來調節作用到第二負載的電壓信號的大小。從而通過控制PWM電路輸出的控制信號,來實現不同的行矩陣元素。
在這些應用場景中,對於每一個列矩陣元素,可以在該列矩陣元素對應的時序內,在開關電路的作用下,將用於控制電信號調節子單元的控制信號輸入到電信號調節子單元的控制輸入端。上述控制信號可以和與該列矩陣元素對應的行矩陣元素的大小相關。
電信號調節子單元在上述控制信號的控制作用下,將輸入到乘法單元的電信號進行大小調節。通過大小調節後的電信號作用到第二負載上,由第二負載産生響應信號。上述響應信號可以代表該列矩陣元素和與該列矩陣元素對應的行矩陣元素的乘積。
在這些應用場景中,通過保持第二負載的負載值不變,調節輸入到乘法單元的電信號的大小,由第二負載與電信號的調節比例來代表行矩陣元素。從而乘法單元的輸出信號可以代表列矩陣元素與行矩陣元素的乘積。
進一步地,加法單元將各時序內的乘法單元的輸出信號進行累加,得到第一矩陣的列與第二矩陣元素對應行的列行乘法計算結果。
本實施例提供的矩陣乘法電路模組,通過在列行計算單元中設置一個乘法單元和一個加法單元,根據各列矩陣元素對應的時序,向乘法單元輸入各列矩陣元素分別對應的電信號,由乘法單元實現列矩陣元素與列矩陣元素對應的行矩陣元素的乘積,由加法單元對各列矩陣元素對應的乘積進行累加,實現列行乘法計算,减少了列行計算單元所所包括的乘法單元的數量,一方面可以减少實現矩陣乘法的電路的複雜度,另一方面可以减少實現矩陣乘法電路所占用的空間,有利於矩陣乘法電路在體積較小的硬體單路上的應用。
請繼續參考圖2,其示出了本申請提供的一些實施例的矩陣乘法電路模組的結構示意圖。
如圖2所示,該矩陣乘法電路模組包括一個列行計算單元10。列行計算單元包括一個乘法單元11和一個加法單元12。 所述列行計算單元依序實現第一矩陣各列對應的列行乘法計算。
第一矩陣爲MⅹN矩陣,也即第一矩陣包括M列,每一列包括N個矩陣元素。第二矩陣可以爲NⅹP矩陣。也即第二矩陣包括N列,每一列包括P個矩陣元素。這裏的M、N、P分別爲大於等於1的正整數。
在一次矩陣乘法中,可以設置M個列時序。分別爲第一矩陣的M列元素分配對應的列時序。例如,爲第一列元素分配第一個列時序。爲第M列元素分配第M個列時序。
進一步地,將每一個列時序進一步拆分爲多個行時序。例如第i列的列時序Ti可以拆分爲P個行時序。其中,i大於等於1,小於等於M的正整數。
Ti列時序可以對應P次列行乘法計算。
對於第Ti列時序的第j個行時序Tij內,可以將第i列的N個列矩陣元素按照各自的矩陣元素時序依序輸入到列行計算單元進列行乘法計算。j爲大於等於1,小於等於P的整數。
具體地,第i列時序可以包括N+1個子時序。在前N個子時序內,依序將第i列的N個列矩陣元素依序輸入到乘法單元。例如圖2所示與第1列的N個列矩陣元素所對應的N個電信號S11…S1N依序輸入到乘法單元11,…直到第M列的N個列矩陣元素所對應的N個電信號SM1…SMN依序輸入到乘法單元11。對於第i列的N個列矩陣元素中的每一個列矩陣元素,上述乘法單元可以實現該列矩陣元素與該列矩陣元素對應的第二矩陣中第j行的行矩陣元素的乘積。在第N+1個子時序,從加法單元讀取與第一矩陣的第i列元素與第二矩陣的第j行對應的列行乘法計算結果。
進一步地,通過多個行時序的加法單元的輸出信號,確定第一矩陣與第二矩陣的乘法計算結果。
圖2所示的矩陣乘法電路模組,適於對矩陣乘法計算結果時效性不高,且産品的體積較小的應用場景中。
請繼續參考圖3,其示出了本申請提供的另外一些實施例的矩陣乘法電路模組的結構示意圖。
如圖3所示,該矩陣乘法電路模組所包括的列行計算單元10的數量與第一矩陣的列的數量相等。
每一個列行計算單元10包括一個乘法單元11和一個加法單元12。
對於第一矩陣中的每一列,由該列對應的列行計算單元實現該列對應的至少一個列行乘法計算。
以第一矩陣爲MⅹN矩陣,第二矩陣爲NⅹP矩陣爲例。可以設置M個列行計算單元10。每一個列行計算單元與第一矩陣的一列元素與第二矩陣的一行元素對應。如圖3所示,與第1列的N個列矩陣元素所對應的N個電信號S11…S1N依序輸入到第1個列行計算單元10;…;與第M列的N個列矩陣元素所對應的N個電信號SM1…SMN依序輸入到第M個列行計算單元10。
在執行第一矩陣與第二矩陣的乘法計算時,對於第一矩陣的每一個列元素,需要將該列元素與第二矩陣的各行元素分別進行列行乘法計算。可以設置第二矩陣各行分別對應的行時序。在每一個行對應的行時序內,將第一矩陣的該列元素中的各個列矩陣元素,按照各自對應的時序,依序輸入到與該列對應的列行計算單元。該列元素將與第二矩陣中該行元素中的各行矩陣元素進行乘法計算。然後在行時序結束時,從加法單元獲取該列元素與該行元素對應的列行計算結果。
仍以第一矩陣爲MⅹN矩陣,第二矩陣爲NⅹP矩陣爲例進行說明。這裏的M、N、P分別爲大於等於1的正整數。
可以將矩陣乘法計算分類爲P個行時序。每一列元素均對應P個行時序。對於第k個行時序Rk,每一行元素均由其對應的列行計算單元計算該列元素與第k行元素進行列行計算。k爲大於等於1小於等於P的整數。
對於每一列元素與第k行元素進行列行計算的說明,可以參考圖1所示實施例的說明,此處不贅述。
由圖3各列行計算單元10分別對應的加法單元輸出信號out11,…,out1P,…,outM1,…,outMP,確定第一矩陣和第二矩陣的乘法計算結果。
圖3所示的矩陣乘法電路模組,在電路模組所占用的空間比較小的前提下,可以加快對矩陣乘法實現的速度。
本發明實施例還提供了一種積體電路。該積體電路包括如圖1~圖3所示實施例提供的矩陣乘法電路模組。上述積體電路可以是實現各種功能的積體電路。
下面參考圖6,其示出了根據本發明的矩陣乘法實現方法的一些實施例的流程示意圖。該矩陣乘法實現方法用於圖1所示的矩陣乘法電路模組。
如圖6所示,矩陣乘法實現方法包括由列行計算單元實現列行乘法計算的步驟。列行計算單元包括一個乘法單元和一個加法單元。列行乘法計算的步驟包括:
步驟601,獲取第一矩陣的目標列的列矩陣元素,以及第二矩陣中目標行的行矩陣元素,其中所述列矩陣元素由電信號代表。
在本實施例中,上述目標列可以爲第一矩陣中的任一列。上述目標行可以爲第二矩陣中的任一行。
在目標列與目標行進行列行計算的時序內,可以獲取第一矩陣的目標列的列矩陣元素,以及第二矩陣的目標行的行矩陣元素。
第一矩陣中的矩陣元素可以代表爲電信號。也即,上述電信號的大小可以用於代表矩陣元素的大小。這裏的電信號可以包括電壓信號或電流信號。本發明以電信號爲電壓信號爲例進行說明。
在一些應用場景中,上述第一矩陣爲神經網路的神經元輸出的特徵矩陣。在這些應用場景中,第一矩陣中的一個矩陣元素,可以視爲神經元輸出的特徵值。上述第二矩陣可以爲權值矩陣。上述權值矩陣中的權值與特徵值一一對應。
步驟602,將用於代表目標列的各列矩陣元素的電信號依序輸入到列行計算單元的乘法單元,由乘法單元實現各列矩陣元素與各自對應的目標行的行矩陣元素的乘積,並將所述乘積輸入到加法單元。
步驟603,利用所述加法單元對目標列的各列矩陣元素分別對應的乘積進行累加,基於累加結果確定目標列與目標行的列行乘法計算結果。
具體地,可以設置與各列矩陣元素分別對應的列矩陣元素時序。也即,一個列矩陣元素與一個列矩陣元素時序一一對應。對於每一列矩陣元素時序,在該列矩陣元素時序內,將與該列矩陣元素時序對應的列矩陣元素輸入到乘法單元,由乘法單元實現該列矩陣元素與對應的目標行中的行矩陣元素的乘積。
乘法單元將列矩陣元素時序對應的乘積輸入到加法單元。
在一些應用場景中,上述乘法單元中可以包括第一負載。由上述第一負載實現目標行的行矩陣元素的大小。上述第一負載可以是可變電阻。上述負載的負載值的大小可調。
上述電阻的負載值可以是電導(電導爲電阻的倒數)。上述電阻的負載值大小可調,也即電阻的電導可調。
在這些應用場景中,上述步驟602可以包括如下步驟:
首先,確定各列矩陣元素分別對應的列矩陣元素時序。
其次,對於每一個列矩陣元素時序,根據與該列矩陣元素時序對應的列矩陣元素的大小,調節第一負載的負載值。
再次,將所述列矩陣元素時序對應的代表列矩陣元素的電信號作用在負載值調節後的第一負載上所得到的第一響應信號,作爲所述乘積。
對於不同的列矩陣元素時序,可以調整乘法單元中的電阻的電導值,調整後的電導值可以代表該列矩陣元素時序對應的目標行的行矩陣元素大小。
在該列矩陣元素時序內,將代表該列矩陣元素時序對應的列矩陣元素的電信號輸入到上述乘法單元。上述電信號作用到電導值調整後的電阻上。由上述電阻生成對上述電信號的響應信號,可以保證上述該列矩陣元素與對應的行矩陣元素的乘積。
上述加法單元包括電容。上述第一響應信號可以爲電流信號。上述步驟603可以包括:利用所述電容對代表各列矩陣元素分別對應的乘積的電流信號進行累加,得到累加電荷,並根據所述累加電荷確定所述列行乘法計算結果。
可以根據電容上累加的電荷的數量確定出列行乘法計算結果。例如根據上述電信號與列矩陣元素之間的轉換關係,將上述累加電荷轉換爲乘法計算結果。
在另外一些應用場景中,上述乘法單元包括電信號調節子單元和第二負載,電信號調節子單元用於調節電信號大小,第二負載的負載值不變。第二負載可以爲電阻。
在這些應用場景中,上述步驟602可以包括如下子步驟:
首先,確定各列矩陣元素分別對應的列矩陣元素時序。
其次,對於每一列矩陣元素時序,根據與該列矩陣元素時序對應的行矩陣元素的大小,確定用於控制電信號調節子單元的控制信號。
再次,將所述電信號輸入到所述乘法單元,在所述乘法單元內,所述電信號調節子單元在所述控制信號的控制下,對所述電信號的大小進行調整,並將大小調整後的電信號作用到所述第二負載,得到代表所述乘積的第二響應信號。
上述電信號可以爲電壓信號。上電信號調節子單元用於對電信號的工作週期進行調整。通過調整電壓信號的工作週期,來調整作用到上述第二負載的電壓信號的大小。
上述電信號調節子單元可以包括開關電路,以及産生用於控制開關電路的控制信號的控制信號發生器。上述控制信號用於控制開關電路的導通與斷開。在開關電路導通時,上述電壓信號可以直接作用在第二負載上。當開關電路斷開時,上述電壓信號與第二負載隔絕。上述控制信號發生器可以包括脉衝寬度調變(Pulse width modulation,PWM)電路。由上述PWM電路生成上述控制信號。具體地,對於每一個列矩陣元素時序,可以確定與該列矩陣元素時序對應的行矩陣元素的大小,然後根據行矩陣元素的大小,確定控制信號中用於控制開關電路導通信號的時長。根據上述時長來控制作用在第二負載上的電信號的工作週期。從而實現對作用在第二負載上的電壓信號的大小的調整。
將經過電信號調節子單元調節後的電信號作用的上述負載值不變的第二負載上,可以得到第二響應信號。上述第二響應信號可以代表上述列矩陣元素時序對應的列矩陣元素與行矩陣元素的乘積。
本實施例提供的矩陣乘法實現方法中,在實現列行乘法計算的列行計算單元中設置一個乘法單元和一個加法單元,通過將列元素中的各列矩陣元素分時段輸入到乘法單元,由乘法單元實現各列矩陣元素與各自對應的行矩陣元素的乘積,由加法單元對各乘積進行累加,從而得到列元素與行元素的列行乘法計算,减少了列行計算單元所所包括的乘法單元的數量,一方面可以减少實現矩陣乘法的電路的複雜度,另一方面可以减少實現矩陣乘法電路所占用的空間,有利於矩陣乘法電路在體積較小的硬體單路上的應用。
在一些可選的實現方式中,矩陣乘法電路模組包括一個列行計算單元。上述矩陣乘法實現方法還包括如圖7所示的如下步驟:
步驟604,確定第一矩陣各列分別對應的列時序。
步驟605,在每一個列時序內,確定第二矩陣各行分別對應的行時序。
步驟606,對於每一個列時序內的每一個行時序,由該列行計算單元執行所述列行乘法計算的步驟,並基於加法單元的輸出確定各列行乘法計算的結果;其中
所述列行乘法計算的步驟中的目標列爲該列時序對應的第一矩陣的列元素,所述目標行與該行時序對應的第二矩陣中的行元素。
由於只有一個列行計算單元,各行元素分別對應的多個列行乘法計算均由該列行計算單元完成。因此,需要對每一個列行計算確定對應的時序。
可以先確定第一矩陣各列元素對應的列時序。在確定了每一列的列時序之後,可爲每一列時序確定在該列時序內的多個行時序。每一行時序對應第二矩陣的一行元素。
對於一個確定的列時序以及該列時序內的行時序,可以確定列時序對應的列元素爲目標列,行時序對應的行爲目標行。
在上述列時序以及該列時序內行時序的時序內,可以根據步驟601~603來計算目標列與目標行的列行乘法計算。
可以對於每一個行時序,可以在該行時序結束時,從加法單元讀取累加結果。然後根據累加結果確定該行時序對應的列行乘法計算結果。
需要說明的是,上述步驟604~605可以在上述步驟601~步驟603之前。
上述方法適於對矩陣乘法計算結果時效性不高,且産品的體積較小的應用場景中。
在一些可選的實現方式中,矩陣乘法單元包括與第一矩陣的列的數量相等的列行計算單元。上述矩陣乘法實現方法還包括如圖8所示的如下步驟:
步驟607,確定第二矩陣各行分別對應的行時序。
步驟608,在每一個行時序內,由與各列元素分別對應的列行計算單元分別執行所述列行乘法計算的步驟,其中,所述列行乘法計算的步驟中的目標行爲所述行時序對應的第二矩陣的行元素。
步驟609,從各列行計算單元的加法單元,依序獲取所述第一矩陣各列分別對應的多個列行乘法的計算結果。
在這些可選的實現方式中,上述列行計算單元的數量可以與第一矩陣的列的數量相當。也即,每一列對應一個列行計算單元。
由於第一矩陣的每一列對應一個列行計算單元,對於第一矩陣的每一列,與該列對應的多個列行乘法計算可以由該列對應的列行計算單元完成。
可以根據第二矩陣的行的數量,確定行時序。
在每一個行時序內,可以將各列元素輸入到各自對應的列行計算單元。由多個列行計算單元同時計算各列元素與上述行時序對應的行元素的列行乘法計算。
在該行時序結束時,可以從各列行計算單元的加法單元中讀取用於代表第一矩陣每一列元素與該時序對應行的列行乘法結果的信號。
對與每一個列行計算單元中的列行乘法計算的實現,可以參考步驟601~603的說明,此處不贅述。
上述步驟607~608可以在步驟601~603之前。
綜上所述,本發明在這些可選的實現方式中,可以在矩陣乘法電路模組所占用的空間比較下的前提下,可以加快對矩陣乘法實現的速度。
以上描述僅爲本發明的較佳實施例以及對所運用技術原理的說明。本領域技術人員應當理解,本發明中所涉及的公開範圍,並不限於上述技術特徵的特定組合而成的技術方案,同時也應涵蓋在不脫離上述公開構思的情况下,由上述技術特徵或其等同特徵進行任意組合而形成的其它技術方案。例如上述特徵與本發明中公開的(但不限於)具有類似功能的技術特徵進行互相替換而形成的技術方案。
此外,雖然採用特定次序描繪了各操作,但是這不應當理解爲要求這些操作以所示出的特定次序或以順序次序執行來執行。在一定環境下,多任務和並行處理可能是有利的。同樣地,雖然在上面論述中包含了若干具體實現細節,但是這些不應當被解釋爲對本發明的範圍的限制。在單獨的實施例的上下文中描述的某些特徵還可以組合地實現在單個實施例中。相反地,在單個實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合的方式實現在多個實施例中。
儘管已經採用特定於結構特徵及/或方法邏輯動作的語言描述了本主題,但是應當理解所附申請專利範圍中所限定的主題未必局限於上面描述的特定特徵或動作。相反,上面所描述的特定特徵和動作僅僅是實現申請專利範圍的示例形式。
10:列行計算單元 11:乘法單元 12:加法單元 13:電信號調節子單元 601~609:步驟 out11、out1P、outM1、outMP:加法單元輸出信號 R:第一負載 R’:第二負載 S、S1、SN、S11、S1N、SM1、SMN:電信號
結合圖式並參考以下具體實施方式,本公開各實施例的上述和其他特徵、優點及方面將變得更加明顯。貫穿圖式中,相同或相似的圖式標記表示相同或相似的元素。應當理解附圖式示意性的,元件和元素不一定按照比例繪製。 圖1是根據本發明提供的矩陣乘法電路模組的一些實施例的結構示意圖。 圖2是根據本發明提供的矩陣乘法電路模組的一些實施例的結構示意圖。 圖3是根據本發明提供的矩陣乘法電路模組的另一些實施例的結構示意圖。 圖4是根據本發明提供的乘法單元的一些實施例的結構示意圖。 圖5是根據本發明提供的乘法單元的另一些實施例的結構示意圖。 圖6是根據本發明提供的矩陣乘法實現方法的一些實施例的流程示意圖。 圖7是根據本發明提供的矩陣乘法實現方法的另一些實施例的流程示意圖。 圖8是根據本發明提供的矩陣乘法實現方法的另一些實施例的流程示意圖。
10:列行計算單元
11:乘法單元
12:加法單元
S1、SN:電信號

Claims (17)

  1. 一種矩陣乘法電路模組,包括:實現一列行乘法計算的一列行計算單元; 所述列行計算單元包括一個乘法單元和一個加法單元;所述乘法單元的輸出端與所述加法單元的輸入端連接; 所述乘法單元用於實現一第一矩陣的列矩陣元素與一第二矩陣的行矩陣元素的一乘法計算;所述乘法單元的輸入端接收在多個設定時序內依序輸入的至少一個電信號;所述電信號用於代表所述第一矩陣的列矩陣元素; 所述加法單元用於對各所述電信號輸入到所述乘法單元得到的一乘積進行累加,以實現所述列行乘法計算。
  2. 根據請求項1所述的電路模組,其特徵在於,所述電路模組包括一個所述列行計算單元,其中 所述列行計算單元依序實現所述第一矩陣各列對應的所述列行乘法計算。
  3. 根據請求項1所述的電路模組,其特徵在於,所述電路模組包括的所述列行計算單元的數量與所述第一矩陣的列數相等; 對於所述第一矩陣中的每一列,由該列對應的所述列行計算單元實現該列對應的所述列行乘法計算。
  4. 根據請求項1所述的電路模組,其特徵在於,所述乘法單元包括用於實現行矩陣元素的一第一負載。
  5. 根據請求項4所述的電路模組,其特徵在於,所述第一負載包括一電阻,所述加法單元包括一電容。
  6. 根據請求項4或5所述的電路模組,其特徵在於,所述第一負載的負載值大小可調。
  7. 根據請求項4或5所述的電路模組,其特徵在於,所述乘法單元包括一電信號調節子單元和一第二負載,所述電信號調節子單元用於調節所述電信號大小;所述第二負載的負載值不變。
  8. 根據請求項7所述的電路模組,其特徵在於,所述電信號包括一電壓信號,所述電信號調節子單元包括:一電壓信號工作週期調節單元。
  9. 根據請求項1所述的電路模組,其特徵在於,所述電路模組用於實現一神經網路中神經元輸出的一特徵矩陣與一權值矩陣的一卷積計算。
  10. 一種矩陣乘法實現方法,用於如請求項1-9之一所述的矩陣乘法電路模組,包括由所述列行計算單元實現所述列行乘法計算的步驟,所述列行計算單元包括一個所述乘法單元和一個所述加法單元,所述列行乘法計算的步驟包括: 獲取所述第一矩陣的目標列的列矩陣元素,以及所述第二矩陣中目標行的行矩陣元素,其中所述列矩陣元素由所述電信號代表; 將用於代表所述目標列的各列矩陣元素的所述電信號依序輸入到所述列行計算單元的所述乘法單元,由所述乘法單元實現各所述列矩陣元素與各自對應的所述目標行的行矩陣元素的乘積,並將所述乘積輸入到所述加法單元; 利用所述加法單元對所述目標列的各列矩陣元素分別對應的乘積進行累加,基於累加結果確定所述目標列與所述目標行的列行乘法計算結果。
  11. 根據請求項10所述的方法,其特徵在於,所述矩陣乘法電路模組包括一個所述列行計算單元;所述方法還包括: 確定所述第一矩陣各列分別對應的列時序; 在每一個所述列時序內,確定所述第二矩陣各行分別對應的行時序;以及 對於每一個所述列時序內的每一個所述行時序,由該列行計算單元執行所述列行乘法計算的步驟,並基於所述加法單元的輸出確定各所述列行乘法計算的結果;其中 所述列行乘法計算的步驟中的所述目標列與該列時序對應,所述目標行與該列時序中的該行時序對應。
  12. 根據請求項10所述的方法,其特徵在於,所述矩陣乘法電路模組包括與所述第一矩陣的列的數量相等的所述列行計算單元,所述方法還包括: 確定所述第二矩陣各行分別對應的行時序; 在每一個所述行時序內,由與各列元素分別對應的所述列行計算單元分別執行所述列行乘法計算的步驟,其中,所述列行乘法計算的步驟中的所述目標行爲所述行時序對應的所述第二矩陣的行元素; 從各所述列行計算單元的所述加法單元,依序獲取所述第一矩陣各列分別對應的多個所述列行乘法的計算結果。
  13. 根據請求項11或12所述的方法,其特徵在於,所述乘法單元包括用於實現所述第二矩陣的行矩陣元素的一第一負載,所述第一負載的負載值可調,以及 所述將所述目標列的各列矩陣元素依序輸入到所述列行計算單元的所述乘法單元,由所述乘法單元實現各列矩陣元素與各自對應的所述目標行的行矩陣元素的乘積,並將所述乘積輸入到所述加法單元,包括: 確定各所述列矩陣元素分別對應的列矩陣元素時序; 對於每一個所述列矩陣元素時序,根據與該列矩陣元素時序對應的行矩陣元素的大小,調節所述第一負載的負載值; 將所述列矩陣元素時序對應的代表列矩陣元素的所述電信號作用在負載值調節後的所述第一負載上所得到的一第一響應信號,作爲所述乘積。
  14. 根據請求項13所述的方法,其特徵在於,所述第一負載包括一可變電阻,所述加法單元包括一電容,所述第一響應信號爲一電流信號,以及 所述利用所述加法單元對所述目標列的各列矩陣元素分別對應的乘積進行累加,基於累加結果確定所述目標列與所述目標行的所述列行乘法計算結果,包括: 利用所述電容對代表各列矩陣元素分別對應的乘積的電流信號進行累加,得到累加電荷,並根據所述累加電荷確定所述列行乘法計算結果。
  15. 根據請求項11或12所述的方法,其特徵在於,所述乘法單元包括一電信號調節子單元和一第二負載,所述電信號調節子單元用於調節所述電信號大小;所述第二負載的負載值不變;以及 所述將用於代表所述目標列的各列矩陣元素的所述電信號依序輸入到所述列行計算單元的所述乘法單元,由所述乘法單元實現各列矩陣元素與各自對應的所述目標行的行矩陣元素的乘積,並將所述乘積輸入到所述加法單元,包括: 確定各列矩陣元素分別對應的列矩陣元素時序; 對於每一所述列矩陣元素時序,根據與該列矩陣元素時序對應的行矩陣元素的大小,確定用於控制所述電信號調節子單元的控制信號; 將所述電信號輸入到所述乘法單元,在所述乘法單元內,所述電信號調節子單元在所述控制信號的控制下,對所述電信號的大小進行調整,並將大小調整後的電信號作用到所述第二負載,得到代表所述乘積的一第二響應信號。
  16. 根據請求項10-12以及14之一所述的方法,其特徵在於,所述第一矩陣爲神經網路的一神經元輸出的一特徵矩陣,所述第二矩陣爲一權值矩陣。
  17. 一種積體電路,包括至少一個如請求項1-9所述的矩陣乘法電路模組。
TW111116729A 2021-05-07 2022-05-03 一種矩陣乘法電路模組及方法 TWI847132B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110496102.7A CN115310030A (zh) 2021-05-07 2021-05-07 一种矩阵乘法电路模块及方法
CN202110496102.7 2021-05-07

Publications (2)

Publication Number Publication Date
TW202303421A true TW202303421A (zh) 2023-01-16
TWI847132B TWI847132B (zh) 2024-07-01

Family

ID=

Also Published As

Publication number Publication date
CN115310030A (zh) 2022-11-08
WO2022235213A1 (zh) 2022-11-10
US20220357924A1 (en) 2022-11-10

Similar Documents

Publication Publication Date Title
KR20190029406A (ko) 아날로그 복소 벡터 매트릭스 곱셈을 수행하는 방법 및 시스템
CN111460365B (zh) 一种基于忆阻线性神经网络的方程组求解器及其操作方法
JP7119109B2 (ja) 重み更新回路および推論回路を別個に有する抵抗型処理ユニット・アーキテクチャ
EP3564867A1 (en) Peripheral circuit and system for supporting rram-based neural network training
JP2022533539A (ja) ビットオーダバイナリ加重乗算器/積算器
CN111125616B (zh) 一种二维离散傅里叶变换运算电路及运算方法
CN109816096B (zh) 一种基于忆阻器的感知器神经网络电路及其调节方法
KR102313796B1 (ko) 뉴로모픽 연산 장치
Lepri et al. Modeling and compensation of IR drop in crosspoint accelerators of neural networks
TW202303421A (zh) 一種矩陣乘法電路模組及方法
CN111428857A (zh) 一种基于忆阻器的卷积运算装置及方法
US20220358184A1 (en) Matrix multiplication circuit module and matrix multiplication method
CN110298435B (zh) 一种忆阻器型全域值bp神经网络电路
TWI828138B (zh) 一種矩陣乘法電路模組及方法
CN114282164A (zh) 一种模拟计算矩阵乘法电路及其在dft/idft中的应用
TW202141301A (zh) 計算乘積和值之裝置
Zivasatienraj et al. An experimentally validated, universal memristor model enabling temporal neuromorphic computation
Li et al. Self-adaptive matrix equation solving in analog memory array 1
CN111844049A (zh) 灵巧手抓取控制方法、装置及终端设备
JPH0547870B2 (zh)
Park et al. Neurons With Captive Synaptic Devices for Temperature Robust Spiking Neural Networks
US20230244919A1 (en) Reservoir computing apparatus and data processing method
TWI814618B (zh) 矩陣運算裝置及其操作方法
Petropoulos et al. Accurate PCM crosspoint emulator and its use on eigenvalues calculation
Khan et al. Accelerated simulation across multiple resolutions for power electronic circuits