CN116384246A - 用于矩阵运算的存算一体装置及其操作方法 - Google Patents
用于矩阵运算的存算一体装置及其操作方法 Download PDFInfo
- Publication number
- CN116384246A CN116384246A CN202310379335.8A CN202310379335A CN116384246A CN 116384246 A CN116384246 A CN 116384246A CN 202310379335 A CN202310379335 A CN 202310379335A CN 116384246 A CN116384246 A CN 116384246A
- Authority
- CN
- China
- Prior art keywords
- data
- integrated
- quantized
- quantization
- unit
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 147
- 239000011159 matrix material Substances 0.000 title claims abstract description 123
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000013139 quantization Methods 0.000 claims abstract description 178
- 230000008569 process Effects 0.000 claims abstract description 38
- 238000003860 storage Methods 0.000 claims abstract description 25
- 230000009467 reduction Effects 0.000 claims abstract description 12
- 238000006243 chemical reaction Methods 0.000 claims description 60
- 238000012545 processing Methods 0.000 abstract description 13
- 230000000875 corresponding effect Effects 0.000 description 58
- 238000013528 artificial neural network Methods 0.000 description 17
- 239000013598 vector Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 210000004027 cell Anatomy 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 7
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 6
- 101150064138 MAP1 gene Proteins 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005669 field effect Effects 0.000 description 2
- 238000011065 in-situ storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Medical Informatics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
Abstract
一种用于矩阵运算的存算一体装置及其操作方法。该存算一体装置包括存算一体计算单元、量化系数追踪单元和输出单元。存算一体计算单元配置为接收输入数据且根据存储的权重矩阵对输入数据进行矩阵运算,以得到输出数据;量化系数追踪单元配置为获取输入数据对应的第一量化系数以及存算一体计算单元对输入数据进行矩阵运算过程中产生的中间量化系数,以及获得与输出数据对应的累积量化系数;输出单元配置为提供输出数据以及累积量化系数。该存算一体装置能够实时获取和记录矩阵运算过程中产生的中间量化系数,为计算结果的后续处理提供了还原基础,能够有效提高计算结果的准确性,减少计算开销。
Description
技术领域
本公开的实施例涉及一种用于矩阵运算的存算一体装置及其操作方法。
背景技术
存算一体交叉阵列(简称存算一体阵列)是一种高效的模拟运算器件,可用于实现大规模的矩阵-向量乘加运算,通常在人工智能(AI)与神经网络的计算中有大量应用。存算一体阵列电路的基本运算单元通常为一个电导或电荷可调制的存算一体器件,例如忆阻器(RRAM)、相变存储器(PCM)、磁性存储器(MRAM)、浮栅晶体管(例如闪存(Flash))、动态随机存储器(DRAM)、静态随机存储器(SRAM)等。
存算一体器件作为一种新型信息处理器件,具有存算融合的功能,可在存储的数据上原位实现计算操作,从而消除数据搬移的巨大开销。此外,存算一体器件通过行列开关的选通,可以直接在模拟域上做运算(例如,可以基于欧姆定律完成乘法运算,基于基尔霍夫电流定律完成加法运算),从而一步实现高效的矩阵向量乘法运算,在运算过程中无需数模转换的开销。
发明内容
本公开至少一实施例提供一种用于矩阵运算的存算一体装置,该存算一体装置包括:存算一体计算单元,配置为接收输入数据且根据存储的权重矩阵对所述输入数据进行矩阵运算,以得到输出数据;量化系数追踪单元,配置为获取所述输入数据对应的第一量化系数以及所述存算一体计算单元对所述输入数据进行所述矩阵运算过程中产生的中间量化系数,以及获得与所述输出数据对应的累积量化系数;输出单元,配置为提供所述输出数据以及所述累积量化系数。
例如,在本公开至少一实施例提供的存算一体装置中,所述量化系数追踪单元包括运算单元,所述运算单元配置为使用所述第一量化系数和所述中间量化系数进行运算,以获得与所述输出数据对应的所述累积量化系数。
例如,在本公开至少一实施例提供的存算一体装置中,所述存算一体计算单元包括存算一体阵列和权重写入电路,所述权重写入电路配置为将所述权重矩阵的权重值写入所述存算一体阵列;所述存算一体阵列配置为接收量化后的所述输入数据,并根据存储的所述权重矩阵对量化后的所述输入数据进行所述矩阵运算,以得到所述输出数据。
例如,在本公开至少一实施例提供的存算一体装置中,所述中间量化系数包括转换量化子系数、输入量化子系数、输出量化子系数、权重量化子系数中的至少一个,其中,所述存算一体计算单元还包括第一量化控制电路和第二量化控制电路中的至少一个,所述第一量化控制电路配置为对所述输入数据进行量化,得到所述输入量化子系数;或所述第二量化控制电路配置为对所述输出数据进行量化,得到所述输出量化子系数。
例如,在本公开至少一实施例提供的存算一体装置中,所述存算一体计算单元还包括数模转换电路、模数转换电路和累加器,所述数模转换电路配置为将所述输入数据转换成模拟输入信号并输入到所述存算一体阵列中进行所述矩阵运算;所述模数转换电路配置为将从所述存算一体阵列输出的模拟输出信号转换成数字输出信号;累加器配置为将所述数字输出信号累加以用于得到所述输出数据。
例如,在本公开至少一实施例提供的存算一体装置中,所述存算一体计算单元还包括:量化系数存储单元,配置为存储所述存算一体计算单元对所述输入数据进行所述矩阵运算过程中产生的所述中间量化系数。
例如,本公开至少一实施例提供的存算一体装置还包括:数据还原单元,配置为根据所述累积量化系数将所述输出数据还原成第一数据,且对所述第一数据和获取的第二数据进行运算以得到运算后的第三数据。
例如,在本公开至少一实施例提供的存算一体装置中,所述数据还原单元还包括:第三量化控制电路,配置为基于所述累积量化系数和所述第二数据对应的第二量化系数,得到对应于所述第三数据的第三量化系数。
本公开至少一实施例还提供一种存算一体装置的操作方法,该操作方法包括:通过所述存算一体计算单元接收所述输入数据,并根据所述存算一体计算单元存储的权重矩阵对所述输入数据进行矩阵运算,以得到所述输出数据;通过所述量化系数追踪单元获取所述输入数据对应的所述第一量化系数以及所述存算一体计算单元对所述输入数据进行所述矩阵运算过程中产生的中间量化系数,以及获得与所述输出数据对应的累积量化系数;通过所述输出单元提供所述输出数据以及所述累积量化系数。
例如,本公开至少一实施例提供的操作方法还包括:通过所述量化系数追踪单元包括的运算单元使用所述第一量化系数和所述中间量化系数进行运算,以获得与所述输出数据对应的所述累积量化系数。
例如,本公开至少一实施例提供的操作方法还包括:通过所述存算一体计算单元包括的权重写入电路将所述权重矩阵的权重值写入所述存算一体计算单元包括的存算一体阵列;通过所述存算一体阵列接收量化后的所述输入数据,并根据存储的所述权重矩阵对量化后的所述输入数据进行所述矩阵运算,以得到所述输出数据。
例如,本公开至少一实施例提供的操作方法还包括:从与所述存算一体阵列连接的模数转换器处获取所述存算一体阵列对所述输入数据进行所述矩阵运算的模拟域计算结果;根据所述输入数据和所述权重矩阵获取数字域计算结果;根据所述模拟域计算结果和所述数字域计算结果确定对应于模数转换器的转换量化子系数。
例如,本公开至少一实施例提供的操作方法还包括:调整所述模数转换器的增益系数以获取对应于所述模数转换器的多个增益系数的多个所述转换量化子系数。
例如,本公开至少一实施例提供的操作方法还包括:根据所述累积量化系数将所述输出数据还原成第一数据;获取用于与所述第一数据进行运算的所述第二数据;对所述第一数据和所述第二数据进行运算以得到运算后的第三数据。
例如,本公开至少一实施例提供的操作方法还包括:将所述第三数据作为所述输入数据发送给所述存算一体计算单元进行矩阵运算。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种存算一体阵列的结构示意图;
图2为本公开至少一实施例提供的存算一体装置的示意框图;
图3为本公开至少一实施例提供的一种存算一体计算单元的结构示意图;
图4为本公开至少一实施例提供的一种量化系数追踪单元的结构示意图;
图5为本公开至少一实施例提供的一种数据还原单元的结构示意图;
图6为本公开至少一实施例提供的另一种数据还原单元的结构示意图;
图7为本公开至少一实施例提供的存算一体装置的操作方法的流程图;
图8为本公开至少一实施例提供的转换量化子系数的标定方法的流程图;
图9为本公开至少一实施例提供的用于计算转换量化子系数的存算一体装置的结构示意图;
图10为本公开至少一实施例提供的转换量化子系数的计算过程的示意图;以及
图11为本公开至少一实施例提供的转换量化子系数和模数转换器的增益系数的关系曲线图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部(元)件的详细说明。当本公开实施例的任一部(元)件在一个以上的附图中出现时,该部(元)件在每个附图中由相同或类似的参考标号表示。
存算一体阵列通常包括阵列布置的多个存算一体器件,存算一体器件是一种可以通过施加外部激励,调节其电导或电荷状态的器件,既可以作为存储单元用于存储不同的数据信息,也可以作为计算单元完成矩阵运算。由于能够实现存储和计算一体化的矩阵乘法计算,存算一体阵列已经被广泛应用于人工智能、神经网络运算等领域。
图1示出了一种存算一体阵列的结构示意图。为了便于描述,下文以忆阻器阵列为例介绍存算一体阵列的结构,然而这并不构成对本公开的限制。在本公开的实施例中,存算一体阵列的组成器件并不限制于忆阻器(例如,阻变存储器RRAM),还可以是SRAM、DRAM、MRAM、PCM、Flash等其他存算一体器件。
如图1的上半部分所示,该忆阻器阵列包括多个忆阻器单元,该多个忆阻器单元构成一个M行N列的阵列,M和N均为正整数。每个忆阻器单元包括开关元件和一个或多个忆阻器。在图1中,WL1、WL2……WLm分别表示第一行、第二行……第M行的字线,每一行中的忆阻器单元电路中的开关元件的控制极(例如晶体管的栅极)和该行对应的字线连接;BL1、BL2……BLn分别表示第一列、第二列……第N列的位线,每列的忆阻器单元电路中的忆阻器和该列对应的位线连接;SL1、SL2……SLm分别表示第一行、第二行……第M行的源线,例如每一行的忆阻器单元电路中的晶体管的源极和该行对应的源线连接。第一行、第二行……第M行的源线SL1、SL2……SLm分别与模数转换器(ADC)连接,模数转换器将忆阻器阵列从每一行源线输出的电流模拟信号转换成数字信号。
例如,忆阻器阵列可以包括阵列布置的多个忆阻器、多条字线、多条位线和多条源线,每个忆阻器阵列可以采用图1所示的排布结构,例如字线和源线平行,也可以采用其他能够执行矩阵乘法计算的排布结构,例如位线和源线平行,本公开的实施例对阵列布置方式不作限制。
例如,图1的忆阻器阵列中的忆阻器单元可以为1T1R结构、2T2R结构或其他可能实现的结构,其中,1T1R结构的忆阻器单元包括一个开关晶体管(T)和一个忆阻器(R),2T2R结构的忆阻器单元包括两个开关晶体管和两个忆阻器。本公开的实施例对于忆阻器单元和忆阻器器件的类型、结构等没有限制。
需要说明的是,本公开的实施例中采用的晶体管均可以为薄膜晶体管或场效应晶体管(例如MOS场效应晶体管)或其他特性相同的开关器件。这里采用的晶体管的源极、漏极在结构上可以是对称的,所以其源极、漏极在结构上可以是没有区别的。本公开的实施例对采用的晶体管的类型不作限定。
例如,在存算一体阵列用于矩阵向量乘法运算时,可以先将存算一体阵列中的多个存算一体器件作为存储单元,将矩阵向量乘法运算的其中一个乘数(例如向量或矩阵)的多个元素映射为多个存算一体器件的电导值,而后再将多个存算一体器件作为计算单元,将施加到多个存算一体器件上的外部激励(例如输入电压)作为矩阵乘法运算中的另一个乘数,从而使得该存算一体阵列基于欧姆定律和基尔霍夫电流定律并行地完成乘累加运算。
下面以神经网络推理运算为例介绍存算一体阵列的矩阵乘法运算。
图1还示出了存算一体阵列的第M行进行矩阵乘法运算的过程。
如图1的下半部分所示,首先将神经网络的权重值量化为例如整数后保存在第M行的n个忆阻器单元中,例如可以将量化后的权重值以电导的形式保存在多个忆阻器中。例如,可以将某个权重参数映射为忆阻器阵列中的一个忆阻器(例如1T1R结构中的忆阻器)的电导值,也可以将该权重参数映射为忆阻器阵列中两个忆阻器(例如2T2R结构中的忆阻器)的电导差值,例如,多个忆阻器的电导值为G1、G2……Gn,本公开的实施例对映射方式不作限制。然后,通过WL线控制该行电路中所有的晶体管开关打开,将神经网络的网络层的输入值映射为不同幅值或脉宽的输入电压V1、V2……Vn,并施加到对应忆阻器单元的输入端,例如分别施加到第一列、第二列……第N列的位线BL1、BL2……BLn上。例如,该输入电压可以是量化为例如整数后的神经元或特征图。
根据基尔霍夫电流定律,通过每个忆阻器的电流大小为V×G,所有流经忆阻器的电流将汇聚在源线SL上,并经过后端的ADC采样为数字信号,完成一次模拟域的乘加运算。模拟域中的乘加计算公式如下:
Itot=V1×G1+V2×G2+…+Vn×Gn (1)
其中,Itot[A]为总电流,Vi(i=12,...,n)[V]为加在每个忆阻器上的输入电压,Gi(i=12,...,n)[S]为每个忆阻器的电导值,方括号内为对应的量纲。
根据基尔霍夫定律和欧姆定律,忆阻器阵列可以实现高效的矩阵向量乘操作,例如可以在源线(SL)端收集累加的总电流Itot。通过测量所有行的输出电流值即可得到神经网络的网络层的输出结果,例如,忆阻器阵列的M行的输出电流I1、I2……Im分别等于输入电压值V1、V2……Vn乘以M行的N个忆阻器的电导值后的累加结果,由此可以并行地获得多组向量的乘加运算的结果,提高矩阵运算效率。
在进行矩阵乘法运算时,需要分别将输入数据X与权重值W映射为输入电压V与忆阻器的电导值G。由于存算一体阵列采用模拟域的运算实现数字层面的乘加运算,因此需要先使用数模转换器(DAC)对输入数据进行从数字域到模拟域的转换,该输入数据以模拟信号的形式输入到存算一体阵列中进行计算,存算一体阵列直接输出的计算后的计算结果仍是模拟信号,因此需要再使用模数转换器(ADC)对其进行从模拟域到数字域的转换,以得到方便进行后续处理的数字信号。在这个过程中,将会引入数模转换器和模数转换器的增益误差。
例如,在只写入一个权重值(将一个权重值映射成忆阻器的电导值)的情况下,设量化后的权重值为整数的wq(数字量),当输入信号为1时,完成一次乘法运算后,ADC的输出结果应该刚好为wq,满足如下公式:
1[1]×FDAC(w)[V]×G[S]×FADc(w)[A-1]=ωq[1] (2)
其中,方括号内为对应的量纲,1为输入信号(数字量),FDAC(w)为写入一个权重值时DAC的增益系数,G为电导值,FADC(w)为写入一个权重值时ADC的增益系数,wq为权重值(数字量)。
考虑进行矩阵乘法运算的情况,设量化后的输入信号为xq(数字量),权重值依旧为上述的wq(数字量),也即,对应的忆阻器的电导值为G。此时,满足如下公式:
xq[1]×FDAc(c)[V]×G[S]×FADC(c)[A-1]=Y[1] (3)
其中,方括号内为对应的量纲,FDAC(c)为矩阵乘法运算时DAC的增益系数,FADC(c)为矩阵乘法运算时ADC的增益系数,Y为模拟运算后ADC采样的结果(数字量)。
由公式(2)和(3)可知,Y可进一步写为:
Y[1]=γxqwq[1] (4)其中,γ为存算一体阵列的等效计算量化系数(本公开中的转换量化子系数)。
由上述推导可知:
其中,方括号内为对应的量纲,FDAC(c)为矩阵乘法运算时DAC的增益系数,FADC(c)为矩阵乘法运算时ADC的增益系数,FDAC(w)为写入权重值时DAC的增益系数,FADC(w)为写入权重值时ADC的增益系数。
在存算一体的计算过程中,除了上述转换量化子系数γ外还会引入其他多种量化系数,例如在神经网络权重部署时产生的量化系数、输入数据(例如图像)的量化系数、中间数据流的量化系数等。
这些量化系数在计算过程中需要被实时追踪并与每层的神经元(例如特征图)绑定,以便于在需要时能够随时通过这些量化系数将矩阵还原。
例如,当神经网络中存在跳层时(例如密集连接的卷积网络(DenseNet)、残差网络(ResNet)等AI网络),中间层经过模拟域计算后产生了新的量化系数,导致这层的计算结果无法直接与另一层的结果进行累加或矩阵拼接。只有当两个待相加的矩阵根据量化系数还原,才能够将原始的矩阵相加。
例如,当执行回归类任务时(例如YOLO、RetinaFace等包含定位框的任务),需要神经网络返回不含任何量化系数的原始值(即与CPU计算一致的结果)以确保最终结果的准确性。
因此,如何实时追踪或获取矩阵运算过程中产生的量化系数,并将这些量化系数记录下来成为亟待解决的问题。
本公开至少一实施例提供一种用于矩阵运算的存算一体装置及其操作方法。该存算一体装置包括存算一体计算单元、量化系数追踪单元和输出单元。存算一体计算单元配置为接收输入数据且根据存储的权重矩阵对输入数据进行矩阵运算,以得到输出数据;量化系数追踪单元配置为获取输入数据对应的第一量化系数以及存算一体计算单元对输入数据进行矩阵运算过程中产生的中间量化系数,以及获得与输出数据对应的累积量化系数;输出单元配置为提供输出数据以及累积量化系数。本公开的上述实施例提供的存算一体装置及其操作方法可以实时获取和记录矩阵运算过程中产生的中间量化系数,为计算结果的后续处理提供了还原基础,能够有效提高计算结果的准确性,减少计算开销。
下面结合附图对本公开的实施例进行详细说明。
本公开的一些实施例提供一种存算一体装置,图2为本公开至少一实施例提供的存算一体装置的示意框图。如图2所示,该存算一体装置100包括存算一体计算单元、量化系数追踪单元和输出单元。
例如,存算一体计算单元被配置为接收输入数据且根据存储的权重矩阵对所述输入数据进行矩阵运算,以得到输出数据。
例如,矩阵运算包括矩阵乘法运算,输入数据可以理解为矩阵乘法运算的其中一个乘数,权重矩阵可以理解为矩阵乘法运算的另一个乘数。例如,该输入数据可以是神经网络中的输入图像或输入特征图,该输入数据可以经过量化、数模转换后作为输入电压施加到存算一体计算单元中的多个存算一体器件上。例如,该权重矩阵可以经过量化后作为电导矩阵,权重矩阵的多个权重值被映射为多个存算一体器件的电导值。
例如,在本公开的一些实施例中,存算一体计算单元包括存算一体阵列和权重写入电路,权重写入电路配置为将权重矩阵的权重值写入存算一体阵列。
图3为本公开至少一实施例提供的一种存算一体计算单元的结构示意图。例如,该存算一体计算单元包括存算一体阵列和权重写入电路。
例如,存算一体阵列可以是如图1所示的阵列结构,存算一体阵列包括行列布置的多个存算一体器件以及多条字线、多条位线和多条源线,通过控制多条字线、多条位线和多条源线上的电压可以实现对存算一体器件的读操作、写操作或计算操作。
需要指出的是,在本公开中行、列的方向不限于图中的情形,而是可以根据需要进行确定的,本公开的实施例对此不作限定。
例如,对存算一体器件的写操作可以通过权重写入电路实现。例如,权重写入电路包括字线驱动电路、位线驱动电路和源线驱动电路。例如,字线驱动电路包括多个多路选择器(Multiplexer,简称Mux),用于切换施加在字线上的控制电压;位线驱动电路包括多个多路选择器(Mux),用于切换位线输入电压;源线驱动电路也包括多个多路选择器(Mux),用于切换源线输入电压。
例如,当需要对存算一体器件进行写操作时,通过字线驱动电路的多路选择器选中一行或多行存算一体器件(例如令施加到字线上的控制电压大于开关元件的开启电压),通过位线驱动电路和源线驱动电路的多路选择器选中需要进行写操作的存算一体器件,然后将位线输入电压和源线输入电压切换至对应的预设电压区间,例如置位电压(Set电压)或者复位电压(Reset电压),使得该存算一体器件的电导值随着置位电压或复位电压变大或变小。经过上述写操作后,存算一体器件被编程为权重矩阵中对应的权重值。
例如,在存算一体阵列存储了对应的权重矩阵后,存算一体阵列可以接收输入数据,并根据存储的权重矩阵对输入数据进行矩阵乘法运算,以得到输出数据。
例如,量化系数追踪单元配置为获取输入数据对应的第一量化系数以及存算一体计算单元对输入数据进行矩阵运算过程中产生的中间量化系数,以及获得与输出数据对应的累积量化系数。
例如,该输入数据可以是矩阵乘法运算中的一个乘数的原始值或量化值,输入数据对应的第一量化系数表示该输入数据与其原始值之间的比例系数。例如,当输入数据未经过任何缩放操作就被直接输入到存算一体计算单元中时,此时的输入数据就是该乘数的原始值,因此输入数据对应的第一量化系数等于1;例如,当输入数据经过缩小的量化操作后输入到存算一体计算单元中,此时的输入数据就是该乘数的量化值,该量化值小于乘数的原始值,因此输入数据对应的第一量化系数小于1;例如,当输入数据经过放大的量化操作后,此时的输入数据就是该乘数的量化值,该量化值大于乘数的原始值,因此输入数据对应的第一量化系数大于1。
例如,在一个示例中,该存算一体装置被用于神经网络的矩阵运算,该输入数据例如可以是神经网络上一层的特征图的量化值,也即,该输入数据可以是经由另一存算一体阵列计算得到的、经过量化或缩放后的特征图,该输入数据包括对应特征图的第一量化系数,该第一量化系数为特征图的量化值与原始值之间的比例系数。
例如,量化系数追踪单元除了能够获取上述第一量化系数之外,还能够获取存算一体计算单元对输入数据进行矩阵运算过程中产生的中间量化系数,该中间量化系数表示存算一体计算单元的中间数据流的量化系数。
例如,在本公开的一些实施例中,中间量化系数包括转换量化子系数、输入量化子系数、输出量化子系数、权重量化子系数中的至少一个。该转换量化子系数是指由于数模转换器和模数转换器的增益系数变化导致的量化系数,该输入量化子系数是指对输入数据进行缩放或量化得到的量化系数,该输出量化子系数是指对存算一体阵列的输出数据进行缩放或量化得到的量化系数,该权重量化子系数是指在神经网络权重部署时产生的量化系数。
例如,在进行矩阵乘法运算之前,权重写入电路需要将神经网络中训练好的权重值进行缩放,从而将浮点数的权重值缩放为整数的量化权重值,在此缩放过程中将会产生权重量化子系数α。该权重量化子系数α为量化权重值与权重值之间的比例系数,也就是说,量化权重值与权重值的比值为权重量化子系数α。
例如,在本公开的一些实施例中,存算一体计算单元还包括第一量化控制电路和第二量化控制电路中的至少一个。第一量化控制电路配置为对输入数据进行量化,得到输入量化子系数;或第二量化控制电路配置为对输出数据进行量化,得到输出量化子系数。
例如,如图3所示,存算一体计算单元还包括第一量化控制电路和第二量化控制电路。
例如,在进行矩阵乘法运算时,存算一体计算单元需要接收输入数据,并根据实际需要对该输入数据进行缩放处理。例如,可以通过第一量化控制电路对输入数据进行缩放,得到新的量化后的输入数据,在此缩放过程中产生输入量化子系数δ。
例如,量化后的输入数据可以发送给存算一体阵列,存算一体阵列根据存储的权重矩阵对量化后的输入数据进行矩阵运算,以得到输出数据。
例如,在本公开的一些实施例中,存算一体计算单元还包括数模转换电路和模数转换电路。
例如,该数模转换电路包括多个数模转换器,多个数模转换器与存算一体阵列的多条位线连接,并配置为将输入数据转换成模拟输入信号并输入到存算一体阵列中进行矩阵运算。
例如,该模数转换电路包括多个模数转换器,多个模数转换器与存算一体阵列的多条源线连接,并配置为将从存算一体阵列输出的模拟输出信号转换成数字输出信号。
如图3所示,数模转换电路将量化后的输入数据转换成模拟输入信号,输入到存算一体阵列中进行模拟域的矩阵运算。在存算一体阵列完成模拟域的乘加运算后,可以从存算一体阵列的源线获取电流信号,该电流信号就是此次模拟域的计算结果。该电流信号作为模拟输出信号,需要通过模数转换器转换成数字输出信号,在此过程中会产生转换量化子系数γ。
例如,在本公开的一些实施例中,存算一体计算单元还包括累加器,累加器配置为例如将多次计算得到的数字输出信号缓存并累加以用于得到输出数据。例如,由存算一体阵列计算出的数据可以根据需要在累加器中进行累加,以得到累加后的输出向量。例如,累加器可以用于对输入数据进行高低位展开或等权脉冲展开。
例如,在完成矩阵乘法运算后,可以根据实际需要对累加后的输出向量进行缩放处理。例如,可以通过第二量化控制电路对输出向量进行缩放,得到最终的输出数据,在此缩放过程中会产生输出量化子系数β。
例如,在本公开的一些实施例中,存算一体计算单元还包括量化系数存储单元,配置为存储存算一体计算单元对输入数据进行矩阵运算过程中产生的中间量化系数。
例如,如图3所示,量化系数存储单元包括与第一量化控制电路连接的量化系数寄存器、与第二量化控制电路连接的量化系数寄存器和与模数转换电路连接的ADC量化系数寄存器。例如,与第一量化控制电路连接的量化系数寄存器用于存储第一量化控制电路对输入数据进行缩放处理时产生的输入量化子系数δ,与第二量化控制电路连接的量化系数寄存器用于存储第二量化控制电路对输出数据进行缩放处理时产生的输出量化子系数β,ADC量化系数寄存器用于存储由于数模转换器或模数转换器的增益系数变化而导致的转换量化子系数γ。
在本公开至少一些实施例中,量化系数追踪单元可以根据实际需要选择获取中间量化系数的方式。例如,量化系数追踪单元可以在存算一体计算单元产生中间量化系数的时候,实时地从存算一体计算单元中获取并记录这些中间量化系数,例如量化系数追踪单元可以从量化系数存储单元中获取这些中间量化系数。
例如,量化系数追踪单元也可以通过其他途径获取这些中间量化系数。例如,在存算一体阵列的实际计算过程中,如果不需要实时调整某些中间量化系数,也即,某些中间量化系数没有参与电路的实际运算,那么量化系数追踪单元可以提前从编译环节获取这些中间量化系数。例如,如果数模转换电路和模数转换电路的增益系数在存算一体计算单元进行计算时保持不变,则量化系数追踪单元无需实时追踪转换量化子系数,该转换量化子系数例如可以通过中央处理器(CPU)计算获得并存储在存储器中,量化系数追踪单元可以直接从存储器中获取该转换量化子系数。
需要说明的是,如果不需要实时调整某些中间量化系数,则可以根据实际需要设置存算一体计算单元中的量化控制电路和寄存器的数量,从而节省成本。例如,如果该存算一体装置只用于整数的矩阵运算,不需要对输入数据、输出数据进行量化,则不需要设置上述第一量化控制电路、第二量化控制电路和对应的量化系数寄存器。
例如,如图4所示,量化系数追踪单元能够获取输入数据对应的第一量化系数σ,例如,该输入数据为整数,该第一量化系数σ为浮点数。例如,量化系数追踪单元还能获取权重量化子系数α、输入量化子系数δ、转换量化子系数γ和输出量化子系数β。在获取了上述第一量化系数以及中间量化系数后,量化系数追踪单元可以根据第一量化系数和中间量化系数获得与存算一体计算单元的输出数据对应的累积量化系数。
例如,在本公开的一些实施例中,量化系数追踪单元包括运算单元。该运算单元配置为使用第一量化系数和中间量化系数进行运算,以获得与输出数据对应的累积量化系数。例如,该运算单元可以将第一量化系数和中间量化系数相乘以得到累积量化系数。
例如,该运算单元可以将对应输入数据的第一量化系数σ和存算一体计算单元产生的权重量化子系数α、输入量化子系数δ、转换量化子系数γ、输出量化子系数β累乘起来,以得到对应于输出数据的累积量化系数σ'。
例如,该运算单元对上述量化系数的累乘操作可以在产生上述量化系数的同时进行,从而实现并行运算,提高计算效率。例如,如果所有量化系数在存算一体阵列进行矩阵乘加运算之前就已经被量化系数追踪单元获取,那么可以对这些量化系数进行累乘,以提前确定输出向量的累积量化系数。
例如,该运算单元为各种适当的运算单元,例如浮点运算单元(FPU)或移位寄存器(可以高效地进行2n倍的系数缩放),还可以是定点运算单元等,例如,该运算单元可以设置于量化系数追踪单元中,也可以设置于中央处理器(CPU)中,本公开的实施例对此不作限制。
例如,在本公开的一些实施例中,输出单元被配置为提供输出数据以及累积量化系数。
例如,输出单元将存算一体计算单元计算后得到的输出数据和量化系数追踪单元获得的对应该输出数据的累积量化系数发送给其他功能电路以进行后续处理。例如,输出单元可以将输出数据和累积量化系数提供给激活函数,或者提供给下一个存算一体计算单元。例如,该输出数据可以作为下一层网络层的输入数据发送给下一层网络层的存算一体计算单元,该累积量化系数可以作为对应于下一层网络层的输入数据的第一量化系数。
例如,在本公开的一些实施例中,输出单元还被配置为将输出数据的累积量化系数与输出数据绑定对应关系。例如,可以通过在数据流中定义数据头的方式或者在软件层面实现绑定操作,从而在将输出数据提供给其他运算电路或下一个存算一体计算单元时,输出数据的累积量化系数可以一并被提供,由此可以根据实际需要随时利用该累积量化系数将输出数据还原为浮点数。
在本公开至少一实施例提供的存算一体装置中,通过量化系数追踪单元可以有效地追踪和实时记录矩阵运算过程中产生的中间量化系数,可以获取输出数据的累积量化系数,从而为计算结果的后续处理提供了还原基础,能够有效提高计算结果的准确性,减少计算开销。
本公开的发明人注意到,在神经网络的某些计算层的操作中,例如ResNet等网络中的跳层累加操作,不能直接使用由存算一体阵列计算得到的输出数据(量化值),而是需要根据特征图的真实值(原始值)进行计算。在这种情况下,需要根据累积量化系数σ'对输出数据进行还原,再利用还原后的真实值进行运算。
例如,在本公开的一些实施例中,存算一体装置还包括数据还原单元,数据还原单元配置为根据累积量化系数将输出数据还原成第一数据,且对第一数据和获取的第二数据进行运算以得到运算后的第三数据。
图5为本公开至少一实施例提供的一种数据还原单元的结构示意图。如图5所示,该数据还原单元从输出单元获取输出数据及其对应的累积量化系数,或者直接从存算一体计算单元获取输出数据,从量化系数追踪单元获取累积量化系数,并根据累积量化系数将输出数据还原成第一数据。
例如,数据还原单元包括浮点运算单元(FPU)。例如,通过浮点运算单元将输出数据除以累积量化系数,以得到还原成真实值的第一数据。例如,根据累积量化系数将整数的输出数据还原成浮点数的第一数据。
例如,该数据还原单元还可以获取第二数据,第二数据是可以与第一数据进行算术运算或拼接的数据。例如,第二数据可以是第一数据的同类型矩阵,第二数据可以和第一数据直接相加。例如,该数据换换单元可以对第一数据和获取的第二数据进行加法运算以得到运算后的第三数据。例如,通过算术逻辑单元(ALU)对第一数据和第二数据进行算术运算以得到第三数据。
图6为本公开至少一实施例提供的另一种数据还原单元的结构示意图。例如,该数据还原单元可以用于神经网络、人工智能等领域。
如图6所示,该数据还原单元获取特征图1以及与特征图1对应的累积量化系数σ1,并根据累积量化系数σ1将特征图1还原成第一数据。该数据还原单元获取特征图2以及与特征图2对应的第二量化系数σ2,并根据第二量化系数σ2将特征图2还原成第二数据。
需要说明的是,特征图2的第二量化系数σ2可以是直接从软件层面或者对应的寄存器中获取的现有量化系数,也可以是经由上述存算一体装置的量化系数追踪单元的追踪和累加操作处理后得到的累积量化系数。例如,特征图1和特征图2可以分别是两个存算一体计算单元的输出数据,也可以是同一个存算一体计算单元分别对两层网络层进行矩阵运算后得到的输出数据,本公开的实施例对此不作限制。
例如,数据还原单元将特征图1还原成第一数据的过程和将特征图2还原成第二数据的过程可以是彼此独立的,例如,可以采用两个独立的浮点运算单元执行还原操作,从而能够并行运算,提高计算效率。
例如,数据还原单元可以将第一数据和第二数据进行运算或拼接处理,以得到第三数据,该过程的详细说明可以参见图5中的相关描述,此处不再赘述。
例如,在本公开的一些实施例中,数据还原单元还包括第三量化控制电路,第三量化控制电路配置为基于累积量化系数和第二数据对应的第二量化系数,得到对应于第三数据的第三量化系数。
例如,如图6所示,第三量化控制电路将特征图1的累积量化系数σ1和特征图2的第二量化系数σ2相乘,从而生成对应于第三数据的第三量化系数σ3。例如,第三数据可以作为新的输入数据输入到上述存算一体装置的存算一体计算单元中,量化系数追踪单元可以从该数据还原单元中获取对应于第三数据的第三量化系数σ3。
在本公开至少一实施例提供的存算一体装置中,可以通过数据还原单元根据存算一体阵列进行矩阵运算过程中产生的量化系数,在必要时对模拟运算中的数据流的缩放效应进行精准还原,从而快速获取计算结果对应的真实值,能够有效减少计算开销,提高计算效率。
本公开至少一实施例还提供一种存算一体装置的操作方法,该操作方法可以用于本公开的任一实施例提供的存算一体装置。图7示出了本公开至少一实施例提供的存算一体装置的操作方法的流程图。如图7所示,该操作方法包括步骤S100~S300。
步骤S100:通过存算一体计算单元接收输入数据,并根据存算一体计算单元存储的权重矩阵对输入数据进行矩阵运算,以得到输出数据。
步骤S200:通过量化系数追踪单元获取输入数据对应的第一量化系数以及存算一体计算单元对输入数据进行矩阵运算过程中产生的中间量化系数,以及获得与输出数据对应的累积量化系数。
步骤S300:通过输出单元提供输出数据以及累积量化系数。
根据本公开上述实施例的一示例,例如,该操作方法还包括:通过量化系数追踪单元包括的运算单元使用第一量化系数和中间量化系数进行运算,以获得与输出数据对应的累积量化系数。
根据本公开上述实施例的一示例,例如,该操作方法还包括:通过存算一体计算单元包括的权重写入电路将权重矩阵的权重值写入存算一体计算单元包括的存算一体阵列;通过存算一体阵列接收量化后的输入数据,并根据存储的权重矩阵对量化后的输入数据进行矩阵运算,以得到输出数据。
根据本公开上述实施例的一示例,例如,该操作方法还包括:根据累积量化系数将输出数据还原成第一数据;获取用于与第一数据进行运算的第二数据;对第一数据和第二数据进行运算以得到运算后的第三数据。
根据本公开上述实施例的一示例,例如,该操作方法还包括:将第三数据作为输入数据发送给存算一体计算单元进行矩阵运算。
此外,其他关于存算一体阵列的权重写入过程和计算过程可以参考前述存算一体装置的相关描述,这里不再赘述。
本公开的实施例提供的存算一体装置的操作方法,通过量化系数追踪单元可以有效地追踪和实时记录矩阵运算过程中产生的中间量化系数,可以获取输出数据的累积量化系数,从而为计算结果的后续处理提供了还原基础,能够有效提高计算结果的准确性,减少计算开销。在至少一个示例中,该操作方法还可以通过数据还原单元根据存算一体阵列进行矩阵运算过程中产生的量化系数,在必要时对模拟运算中的数据流的缩放效应进行精准还原,从而快速获取计算结果对应的真实值,能够有效提高计算效率。
本公开的发明人注意到,在实际操作过程中,量化系数追踪单元难以获取准确的转换量化子系数。若无法对转换量化子系数γ进行精确标定,将难以保证计算结果的准确性。同时,转换量化子系数γ对于某些人工智能(AI)任务至关重要,若不能准确获取,将严重影响存算一体阵列在处理AI任务方面的通用性。
由于模拟运算计算流程的复杂性,电路中包含大量非理想因素引入的随机误差,导致转换量化子系数γ通常无法直接由公式获取,需要用间接手段进行测量。另外,由于转换量化子系数γ与DAC和ADC的增益系数强相关,在权重写入和矩阵乘法运算时,DAC和ADC的增益系数的变化也会导致转换量化子系数γ产生变化。
由于存算一体阵列是新型计算器件,目前针对转换量化子系数γ问题主要有如下两种实现方法。
第一种方法是直接使用ADC的硬件特性参数对转换量化子系数进行推导,推导过程如前文的公式(1)-(5)所示。这种方法较为直观,但在推导过程中的变量均使用了理想值,忽略了实际电路中可能包含的噪声与随机误差,是一种理想情况下的标定方式,在实际应用中往往不准确。
第二种方法是采用拟合系数等手段,以CPU上计算出的准确数据为参考,对ADC采样出的数据进行标定,因此需要针对数据流特别优化。当DAC或ADC的增益发送变化时需要重新拟合转换量化子系数γ,过程十分复杂并且需要不断重复。
因此,当面对ADC的增益在矩阵运算过程中发生变化,或者是需要实现多种神经网络和AI任务的情况时,如何准确地获取转换量化子系数γ成为需要解决的问题。
针对上述问题,本公开至少一实施例还提供了一种转换量化子系数的标定方法。如图8所示,该标定方法包括步骤S201~S203。
步骤S201:从与存算一体阵列连接的模数转换器处获取存算一体阵列对输入数据进行矩阵运算的模拟域计算结果。
步骤S202:根据输入数据和权重矩阵获取数字域计算结果。
步骤S203:根据模拟域计算结果和数字域计算结果确定对应于模数转换器的转换量化子系数。
图9为本公开至少一实施例提供的用于计算转换量化子系数的存算一体装置的结构示意图。下面结合图9对该标定方法的实现过程进行详细介绍。
例如,该存算一体装置包括存算一体阵列、权重写入电路、数模转换电路和模数转换电路。例如,该存算一体阵列包括n行m列存算一体器件和多条字线、多条位线和多条源线。例如,该数模转换电路包括多个数模转换器,多个数模转换器与存算一体阵列的多条位线连接,并配置为将输入数据转换成模拟输入信号并输入到存算一体阵列中进行矩阵运算。例如,该模数转换电路包括多个模数转换器,多个模数转换器与存算一体阵列的多条源线连接,并配置为将从存算一体阵列输出的模拟输出信号转换成数字输出信号。存算一体阵列、权重写入电路、数模转换电路和模数转换电路的详细说明可以参考图3中存算一体装置的相关描述,此处不再赘述。
例如,在步骤S201中,从与存算一体阵列连接的模数转换器处获取存算一体阵列对输入数据进行矩阵运算的模拟域计算结果,该模拟域计算结果是经过模数转换器转换后的数字信号,可以用于和数字域计算结果进行计算。该模拟域计算结果中实际上包含了数模转换器和模数转换器的增益系数的影响。
例如,通过权重写入电路将已知的权重值(数字量)写入待标定的存算一体阵列中,写入存算一体阵列中的权重矩阵如公式(6)所示:
其中,wqij(i∈[1,n],j∈[1,m])为量化后的权重值。
调整该存算一体阵列中的ADC的增益至待测量的目标值,然后从存算一体阵列的输入端输入已知的输入数据并计算,最终从存算一体阵列的输出端得到计算结果。该计算结果经过模数转换器转换为数字信号,也即本公开实施例中的模拟域计算结果。模拟域计算结果如公式(7)所示:
其中,[xq1 xq2 xq3 … xqn]1×n为输入向量,[γ1 γ2 … γn]1×n为每列ADC对应的计算系数,[c1 c2 c3 … cn]1×n为乘加运算后ADC每列的采样结果(模拟域计算结果),⊙为元素乘运算符。
例如,可以设置输入与输出数据的数据类型为int8,取值对称分布,范围为[-127,127]。权重值的数据类型为int4,取值对称分布,范围为[-7,7],从而使得该标定方法具有较好的可操作性。
例如,在步骤S202中,根据输入数据和权重矩阵获取数字域计算结果,从而计算出上述输入向量与权重值乘加运算的真实值,也即实际由数字量直接进行数学运算后的结果Y(不包括任何量化系数),如公式(8)所示。
需要说明的是,在本公开的实施例中,“模拟域计算结果”可以理解为由存算一体阵列经过原位计算后得到的计算结果,“数字域计算结果”可以理解为没有经过存算一体阵列的计算结果,也就是说,“模拟域计算结果”表示计算过程在模拟域时获得的计算结果,“数字域计算结果”表示计算过程在数字域时获得的计算结果。
例如,如图10所示,为了便于操作,可以将权重矩阵设置为n行m列的全1矩阵,将输入数据设为n行全1的输入向量,由此数字域计算结果(也即实际的运算结果)的累加值为n。
例如,经过存算一体阵列计算后的模拟域计算结果(也即经过ADC采样后的输出结果)为[c1 c2 c3 … cn]1×n。
根据本公开上述实施例的一示例,例如,该操作方法还包括:调整模数转换器的增益系数以获取对应于模数转换器的多个增益系数的多个转换量化子系数。
例如,调整模数转换器的增益系数,并重复上述步骤S201~S203,以获取对应于模数转换器的多个增益系数的多个转换量化子系数。例如,在调整模数转换器的增益系数时,需要保证存算一体阵列进行矩阵计算时,模数转换器工作在线性区,也即输入信号未超过模数转换器的量程。
例如,在本公开至少一实施例中,可以通过调整输入到存算一体阵列的输入向量的行数n来调整输出电流Itot的大小,从而使得输出电流在模数转换器的最佳量程之内。
例如,通过重复上述步骤S201~S203,对不同的增益系数进行扫描,可以得到模数转换器的每个增益下的转换量化子系数γ。例如,可以生成一个如图11所示的查找表(LUT),或根据LUT拟合出γ的解析函数,例如,理想模数转换器的LUT通常是过原点的直线,可用斜率k表示。例如,图11示出了模数转换器的不同增益系数下的转换量化子系数γ的标定结果(灰色散点)与LUT的拟合曲线(黑色细线)。例如,图中的拟合曲线为一条直线,斜率k=0.0188642。
例如,对于存算一体装置中的不同模数转换器,可以重复上述步骤S201~S203分别对多个模数转换器进行多次测量,从而获得每个模数转换器的转换量化子系数γ。例如,可以通过统计手段获得更为准确的标定结果,例如求平均值、取中位数等。
例如,对一个特定的存算一体装置进行一次该标定方法,就可以精确获取转换量化子系数,在实际的矩阵运算过程中无需再次进行标定,从而简化了获取转换量化子系数的过程,节约了计算开销。
通过该标定方法获取得到的转换量化子系数可以存储在寄存器中,本公开上述实施例中的存算一体装置中的量化系数追踪单元可以从该寄存器中直接获取转换量化子系数,或者,量化系数追踪单元也可以根据上述查找表或解析函数获取矩阵运算过程中产生的转换量化子系数。通过该方法获取的转换量化子系数是对应模数转换器的增益变化的精确值,有助于提高矩阵运算的精度和数据还原的准确性。
虽然上文中已经用一般性说明及具体实施方式,对本公开作了详尽的描述,但在本公开实施例基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本公开精神的基础上所做的这些修改或改进,均属于本公开要求保护的范围。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)为了清晰起见,在用于描述本公开的实施例的附图中,层或区域的厚度被放大或缩小,即这些附图并非按照实际的比例绘制。
(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种用于矩阵运算的存算一体装置,包括:
存算一体计算单元,配置为接收输入数据且根据存储的权重矩阵对所述输入数据进行矩阵运算,以得到输出数据;
量化系数追踪单元,配置为获取所述输入数据对应的第一量化系数以及所述存算一体计算单元对所述输入数据进行所述矩阵运算过程中产生的中间量化系数,以及获得与所述输出数据对应的累积量化系数;
输出单元,配置为提供所述输出数据以及所述累积量化系数。
2.根据权利要求1所述的存算一体装置,其中,所述量化系数追踪单元包括运算单元,
所述运算单元配置为使用所述第一量化系数和所述中间量化系数进行运算,以获得与所述输出数据对应的所述累积量化系数。
3.根据权利要求1所述的存算一体装置,其中,所述存算一体计算单元包括存算一体阵列和权重写入电路,
所述权重写入电路配置为将所述权重矩阵的权重值写入所述存算一体阵列;
所述存算一体阵列配置为接收量化后的所述输入数据,并根据存储的所述权重矩阵对量化后的所述输入数据进行所述矩阵运算,以得到所述输出数据。
4.根据权利要求3所述的存算一体装置,其中,所述中间量化系数包括转换量化子系数、输入量化子系数、输出量化子系数、权重量化子系数中的至少一个,
其中,所述存算一体计算单元还包括第一量化控制电路和第二量化控制电路中的至少一个,
所述第一量化控制电路配置为对所述输入数据进行量化,得到所述输入量化子系数;或
所述第二量化控制电路配置为对所述输出数据进行量化,得到所述输出量化子系数。
5.根据权利要求3或4所述的存算一体装置,其中,所述存算一体计算单元还包括数模转换电路、模数转换电路和累加器,
所述数模转换电路配置为将所述输入数据转换成模拟输入信号并输入到所述存算一体阵列中进行所述矩阵运算;
所述模数转换电路配置为将从所述存算一体阵列输出的模拟输出信号转换成数字输出信号;
累加器配置为将所述数字输出信号累加以用于得到所述输出数据。
6.根据权利要求3或4所述的存算一体装置,其中,所述存算一体计算单元还包括:
量化系数存储单元,配置为存储所述存算一体计算单元对所述输入数据进行所述矩阵运算过程中产生的所述中间量化系数。
7.根据权利要求1所述的存算一体装置,还包括:
数据还原单元,配置为根据所述累积量化系数将所述输出数据还原成第一数据,且对所述第一数据和获取的第二数据进行运算以得到运算后的第三数据。
8.根据权利要求7所述的存算一体装置,其中,所述数据还原单元还包括:
第三量化控制电路,配置为基于所述累积量化系数和所述第二数据对应的第二量化系数,得到对应于所述第三数据的第三量化系数。
9.一种如权利要求1所述的存算一体装置的操作方法,包括:
通过所述存算一体计算单元接收所述输入数据,并根据所述存算一体计算单元存储的权重矩阵对所述输入数据进行矩阵运算,以得到所述输出数据;
通过所述量化系数追踪单元获取所述输入数据对应的所述第一量化系数以及所述存算一体计算单元对所述输入数据进行所述矩阵运算过程中产生的中间量化系数,以及获得与所述输出数据对应的累积量化系数;
通过所述输出单元提供所述输出数据以及所述累积量化系数。
10.根据权利要求9所述的操作方法,还包括:
通过所述量化系数追踪单元包括的运算单元使用所述第一量化系数和所述中间量化系数进行运算,以获得与所述输出数据对应的所述累积量化系数。
11.根据权利要求9所述的操作方法,还包括:
通过所述存算一体计算单元包括的权重写入电路将所述权重矩阵的权重值写入所述存算一体计算单元包括的存算一体阵列;
通过所述存算一体阵列接收量化后的所述输入数据,并根据存储的所述权重矩阵对量化后的所述输入数据进行所述矩阵运算,以得到所述输出数据。
12.根据权利要求11所述的操作方法,还包括:
从与所述存算一体阵列连接的模数转换器处获取所述存算一体阵列对所述输入数据进行所述矩阵运算的模拟域计算结果;
根据所述输入数据和所述权重矩阵获取数字域计算结果;
根据所述模拟域计算结果和所述数字域计算结果确定对应于模数转换器的转换量化子系数。
13.根据权利要求12所述的操作方法,还包括:
调整所述模数转换器的增益系数以获取对应于所述模数转换器的多个增益系数的多个所述转换量化子系数。
14.根据权利要求9所述的操作方法,还包括:
根据所述累积量化系数将所述输出数据还原成第一数据;
获取用于与所述第一数据进行运算的所述第二数据;
对所述第一数据和所述第二数据进行运算以得到运算后的第三数据。
15.根据权利要求14所述的操作方法,还包括:
将所述第三数据作为所述输入数据发送给所述存算一体计算单元进行矩阵运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310379335.8A CN116384246A (zh) | 2023-04-11 | 2023-04-11 | 用于矩阵运算的存算一体装置及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310379335.8A CN116384246A (zh) | 2023-04-11 | 2023-04-11 | 用于矩阵运算的存算一体装置及其操作方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116384246A true CN116384246A (zh) | 2023-07-04 |
Family
ID=86980372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310379335.8A Pending CN116384246A (zh) | 2023-04-11 | 2023-04-11 | 用于矩阵运算的存算一体装置及其操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116384246A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117289896A (zh) * | 2023-11-20 | 2023-12-26 | 之江实验室 | 一种存算一体基本运算装置 |
-
2023
- 2023-04-11 CN CN202310379335.8A patent/CN116384246A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117289896A (zh) * | 2023-11-20 | 2023-12-26 | 之江实验室 | 一种存算一体基本运算装置 |
CN117289896B (zh) * | 2023-11-20 | 2024-02-20 | 之江实验室 | 一种存算一体基本运算装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800876B (zh) | 一种基于NOR Flash模块的神经网络的数据运算方法 | |
US20170228345A1 (en) | Analog Co-Processor | |
CN112558917B (zh) | 存算一体电路和基于存算一体电路的数据运算方法 | |
CN111478703B (zh) | 基于忆阻交叉阵列的处理电路及输出电流的补偿方法 | |
CN116384246A (zh) | 用于矩阵运算的存算一体装置及其操作方法 | |
CN114400031B (zh) | 一种补码映射的rram存算一体芯片及电子设备 | |
CN112215344A (zh) | 神经网络电路的校正方法以及设计方法 | |
US11461640B2 (en) | Mitigation of conductance drift in neural network resistive processing units | |
CN114282478B (zh) | 一种修正可变电阻器件阵列点乘误差的方法 | |
Pedretti et al. | Redundancy and analog slicing for precise in-memory machine learning—Part II: Applications and benchmark | |
CN111859261B (zh) | 计算电路及其操作方法 | |
US11556311B2 (en) | Reconfigurable input precision in-memory computing | |
CN115458005A (zh) | 数据处理方法和存算一体装置、电子设备 | |
CN113553028B (zh) | 基于概率比特电路的问题求解优化方法及系统 | |
JP7255068B2 (ja) | メモリデバイス及びその動作方法 | |
Kakkar | Comparative study on analog and digital neural networks | |
US20220101142A1 (en) | Neural network accelerators resilient to conductance drift | |
CN117157636A (zh) | 存算一体装置、系统及其操作方法 | |
US20240161792A1 (en) | Compensation for conductance drift in analog memory | |
CN111130544A (zh) | 基于交叉开关的计算环境中的缺陷减轻 | |
TWI771835B (zh) | 用於神經網路之推理引擎及其操作方法 | |
Crafton et al. | Statistical optimization of compute in-memory performance under device variation | |
US20230229731A1 (en) | Data processing system, operating method thereof, and computing system using the same | |
CN114121089B (zh) | 基于忆阻器阵列的数据处理方法及装置 | |
CN111722830B (zh) | 快闪存储器的非易失性计算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |