CN113537453A - 存储器内运算方法及装置 - Google Patents
存储器内运算方法及装置 Download PDFInfo
- Publication number
- CN113537453A CN113537453A CN202110369585.4A CN202110369585A CN113537453A CN 113537453 A CN113537453 A CN 113537453A CN 202110369585 A CN202110369585 A CN 202110369585A CN 113537453 A CN113537453 A CN 113537453A
- Authority
- CN
- China
- Prior art keywords
- binary data
- weights
- memory
- bits
- bit
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000015654 memory Effects 0.000 claims abstract description 38
- 230000003247 decreasing effect Effects 0.000 claims abstract description 3
- 238000013528 artificial neural network Methods 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 20
- 230000000295 complement effect Effects 0.000 claims description 18
- 238000009826 distribution Methods 0.000 claims description 16
- 238000012549 training Methods 0.000 claims description 12
- 230000009467 reduction Effects 0.000 claims description 8
- 230000001131 transforming effect Effects 0.000 claims 2
- 238000013139 quantization Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000007634 remodeling Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/768—Data position reversal, e.g. bit reversal, byte swapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/02—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
- H03M7/04—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being two
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Semiconductor Memories (AREA)
- Advance Control (AREA)
- Information Transfer Systems (AREA)
- Dram (AREA)
- Complex Calculations (AREA)
- Nonlinear Science (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种存储器内运算方法及装置,适于由处理器对存储器执行MAC运算。在所述方法中,通过截断权重的二进制数据的至少一部分分数位及计算剩余位的补码,将二进制数据的格式自浮点格式变换成量化格式,且将经过变换的二进制数据编程至存储器的单元中。通过将输入信号的二进制数据迭代地输入至存储器中、对存储器的输出进行整合以及基于整合的输出来调整编程至单元的权重来执行调整程序。基于减少每一权重的二进制数据中值为一的位的几率来重塑权重的二进制数据。重复调整程序,直至满足结束条件为止。
Description
技术领域
本发明是关于计算方法及计算装置,且更特定而言,是关于一种存储 器内运算方法及装置。
背景技术
相较于传统机器学习方法,循环神经网络(Recurrent neural network; 简称RNN)已展示其在诸如图像识别及语音增强的若干领域上达成较大 准确度的能力。然而,在当前范纽曼(Von-Neumann)架构上进行RNN 时已出现若干挑战。举例而言,在全连接状神经网络中,在进行RNN时 处理单元与芯片外存储器单元之间的过度数据移动,将引发效能限制及高 功率消耗。
为桥接计算单元与存储器单元之间的隔阂,存储器内计算的概念被广 泛地提出,且具有电阻性随机存取存储器(Resistive Random-Access Memory;ReRAM)的忆阻器为最密集研究的解决方案之一。ReRAM(新 兴的非易失性存储器(non-volatile memory;简称NVM)之一)通过改变 单元的电阻来存储数据,且经过证明拥有计算及存储的两种能力。具体而 言,忆阻器通过设定不同输入电压及电阻值以分别表示输入值及权重值, 而对模拟态样进行数字RNN运算,亦即乘加(Multiply-and-Accumulate; 简称MAC)运算。
举例而言,图1绘示通过使用忆阻器进行MAC运算的计算的实例, 此实例旨在计算∑(Vn×Gn)的结果。在此实例中,每一字线通过位在3D 空间中交叉点处的ReRAM单元连接至每一位线。通过克希荷夫电流定律 (Kirchhoffs current law;简称KCL),在给定对应字线的电压V1及V2的 情况下,每一ReRAM单元的通过电导G1、G2、G3、G4感应的出现的电 流I1、I2、I3、I4瞬时地与对应位在线的电流I5及I6相加。通过感测每 一位在线的电流同时撷取MAC运算的结果,其中I5的值等于V1×G1+ V2×G2且I6的值等于V1×G3+V2×G4。
然而,归因于忆阻器中总电流的重叠分布,RNN的准确度显著降低。
举例而言,图2绘示忆阻器中的所有单元的输出电流的分布。当将预 定义电压施加至输入线时,所有单元的输出电流的可能分布所绘示的x轴 指示电流且y轴指示频率的图2中。当更多单元用于MAC运算时,分布 变得更宽。如图2中所绘示,当16个单元用于MAC运算时,如图2中所 绘示的分布,将呈现输入值的17个可能组合,其中绘示于图2左侧的分 布22可代表零值,此分布在总电流变得更大时会变得更宽。因此,重叠 变化误差的几率变得更高。
发明内容
鉴于上述内容,本发明提供一种能够减少重叠变化误差且增大计算的 准确度的存储器内运算方法及存储器内运算装置。
本发明提供一种存储器内运算方法,适于处理器对具有交叉开关架构 的存储器进行乘加(MAC)运算。所述存储器包括彼此交叉的多个输入线 及多个输出线,多个单元分别配置于输入线及输出线的相交点处,且多个 感测放大器分别连接至输出线。在所述方法中,通过截断多个权重的二进 制数据的分数位的至少一部分及计算二进制数据的剩余位的补码,将二进 制数据的格式自浮点格式变换成量化格式,且将多个权重的经过变换的二进制数据编程至多个单元中。接着执行调整程序,其中包括将多个输入信 号的二进制数据迭代地输入至多个输入线中,对由感测放大器感测到的输 出进行整合,以及基于整合的输出来调整编程至单元中的多个权重的二进 制数据,持续多个迭代。在多个迭代之后,基于减少每一权重的二进制数 据中值为一的位的几率来重塑(reshaping)多个权重的二进制数据,且重 复调整程序直至满足结束条件为止。
在本发明的一实施例中,计算二进制数据的剩余位的补码的步骤包括 计算剩余位的2的补码且反转所计算出的2的补码的值。
在本发明的一实施例中,基于所整合的输出来调整编程至单元中的多 个权重的二进制数据的步骤包括计算所整合的输出与输入信号的参考信 号之间的差,且根据所述差来调整待编程至单元中的多个权重的经过变换 的二进制数据。
在本发明的一实施例中,基于减少每一权重的二进制数据中值为一的 位的几率来重塑多个权重的二进制数据的步骤包括根据所整合的输出与 输入信号的参考信号之间的差来计算准确度,并响应于所计算出的准确度 大于第一阈值而提前重塑。
在本发明的一实施例中,基于减少每一权重的二进制数据中值为一的 位的几率来重塑多个权重的二进制数据的步骤包括计算多个权重的二进 制数据中值为一的位与值为零的位的比,并响应于所计算出的比大于第二 阈值而提前重塑。
在本发明的一实施例中,基于减少每一权重的二进制数据中的值为一 的位的几率来重塑多个权重的二进制数据的步骤包括通过将每一权重的 十进制值移位任意数以最大化权重的二进制数据中值为一的位的减少与 所移位的数的商,且将此商除以基于多个权重的数据分布所判定的因子, 以计算器率,以及回应于所述商大于或等于阈值而根据所计算出的几率将 每一权重的十进制值移位。
本发明提供一种存储器内运算装置,其包括存储器及处理器。所述存 储器具有交叉开关架构,其中包括彼此交叉的多个输入线及多个输出线、 分别配置于输入线及输出线的相交点处的多个单元,以及分别连接至输出 线的多个感测放大器。所述处理器耦接至存储器且经配置以通过截断多个 权重的二进制数据的分数位的至少一部分及计算二进制数据的剩余位的 补码,将二进制数据的格式自浮点格式变换成量化格式,且将多个权重的经过变换的二进制数据编程至多个单元中,并执行调整程序,其中包括将 多个输入信号的二进制数据迭代地输入至多个输入线中,对由感测放大器 感测到的输出进行整合,以及基于整合的输出来调整编程至所述单元中的 多个权重的二进制数据,持续多个迭代,以及在多个迭代之后,基于减少 每一权重的二进制数据中值为一的位的几率来重塑多个权重的二进制数 据,且重复调整程序直至满足结束条件为止。
在本发明的一实施例中,处理器计算剩余位的2的补码且反转所计算 出的2的补码的值。
在本发明的一实施例中,处理器计算整合的输出与输入信号的参考信 号之间的差,且根据所述差来调整待编程至单元中的多个权重的经过变换 的二进制数据。
在本发明的一实施例中,处理器根据所述整合的输出与输入信号的参 考信号之间的差来计算准确度,且响应于所计算出的准确度大于第一阈值 而提前重塑。
在本发明的一实施例中,处理器计算多个权重的二进制数据中值为一 的位与值为零的位的比,且响应于所计算出的比大于第二阈值而提前重 塑。
在本发明的一实施例中,处理器通过将每一权重的十进制值移位任意 数以最大化权重的二进制数据中值为一的位的减少与所移位的数的商,且 将所述商除以基于多个权重的数据分布所判定的因子,且响应于所述商大 于或等于阈值而根据所计算出的几率将每一权重的十进制值移位,以计算 器率。
在本发明的一实施例中,所述调整程序包括神经网络的训练,其中将 多个输入信号的二进制数据设定为神经网络的输入,将多个权重设定为神 经网络中的多个计算层中的权重,且将整合的输出设定为神经网络的输 出。
在本发明的一实施例中,每一权重的具有浮点格式的二进制数据在32 位二进制数据中包括一个符号位、八个指数位以及二十三个分数位。
为使本发明的前述特征及优势更可理解,下文详细描述随附附图的实 施例。
附图说明
图1绘示通过使用忆阻器进行MAC运算的计算的实例。
图2绘示忆阻器中的所有单元的输出电流的分布。
图3为根据本发明的实施例的存储器内运算装置的示意图。
图4为根据本发明的实施例的存储器内运算方法的流程图。
图5为根据本发明的实施例的二进制数据的浮点格式。
图6A及图6B为分别绘示根据本发明的实施例的在量化9位二进制 数据中及在反转的量化9位二进制数据中的位「0」与位「1」的比的示意 图。
图7为示出根据本发明的实施例的神经网络的训练的示意图。
图8为示出根据本发明的实施例的数据重塑的示意图。
图9为根据本发明的实施例的存储器内运算方法的流程图。
【符号说明】
20:图
22:分布
30:计算装置
32:存储器
34:处理器
50:浮点格式
52:符号位
54:指数位
56:分数位
70:神经网络
72:语音信号
74:增强语音信号
76:干净语音信号
G1、G2、G3、G4:电导
I1、I2、I3、I4、I5、I6、Ij:电流
ILi:输入线
OLj:输出线
Rij:电阻
S402、S404、S406、S902、S904、S906、S908、S910、S912、S914、 S916:步骤
SA:感测放大器
V1、V2:电压
X:阈值
具体实施方式
归因于电阻编程的变化,忆阻器在其在每一MAC运算中将输出电流 转换成数字输出时,会受到重叠变化误差的影响。如图2中所绘示,当输 出电流变得更大时,输出电流的分布变得更宽,且因此重叠变化误差的几 率变得更高。因此,较佳的作法是减少输出电流以便使得分布彼此更可区 别。减少输出电流的一种方式为增加待编程至忆阻器的单元中的位「0」 的数目(或减少位「1」的数目)。
基于上述内容,在本发明的实施例中,提出自适应性计算方法以将待 编程至忆阻器的权重的二进制数据的格式自浮点格式变换成量化格式,且 在执行多个迭代的权重调整程序之后进一步重塑权重的二进制数据,以减 少每一权重的二进制数据中的位「1」的数目且显著减少重叠变化误差。
图3为根据本发明的实施例的存储器内运算装置的示意图。参考图3, 实施例的存储器内运算装置30为例如忆阻器,所述忆阻器经配置以实现 存储器内处理(process-in-memory;简称PIM)以便减少由忆阻器的单元 输出的总电流。计算装置30包括存储器32及处理器34。
存储器32为例如与非门(NAND)闪存、或非门(NOR)闪存、相 变存储器(phasechange memory;简称PCM)、自旋转移矩随机存取存储 器(spin-transfer torque random-access memory;简称STT-RAM),或2D 或3D结构的电阻式随机存取存储器(ReRAM),此在本发明中不受限制。 在一些实施例中,可整合各种易失性存储器(诸如静态随机存取存储器(random access memory;简称RAM)、动态RAM)及各种非易失性存储 器(诸如ReRAM、PCM、快闪、磁阻性RAM、铁电RAM)以进行存储 器内运算,此在本发明中不受限制。
存储器32包括彼此交叉的多个输入线ILi及多个输出线OLj、分别配 置于输入线ILi与输出线OLj的相交点处的多个单元(由电阻Rij表示), 以及分别连接至输出线OLj以用于感测自输出线OLj输出的电流Ij的多个 感测放大器SA。在一些实施例中,输入线ILi为字线而输出线OLj为位线, 且在一些实施例中,输入线ILi为位线而输出线OLj为字线,此在本发明 中不受限制。
处理器34为例如中央处理单元(central processing unit;简称CPU) 或其他可编程的通用或专用微处理器、微控制器(microcontroller;简称 MCU)、可编程控制器、特殊应用集成电路(application specific integrated circuit;简称ASIC)、可编程逻辑设备(programmable logic device;简称 PLD)或其他类似装置或此等装置的组合,本实施例不对其限制。在本实 施例中,处理器34经配置以执行用于进行存储器内运算的指令,如下文所描述。存储器内运算可实施至各种人工智能(artificial intelligent;简称 AI)应用,诸如全连接层、卷积层(convolution layer)、多层感知、支持 向量机或使用忆阻器实施的其他应用,此在本发明中不受限制。
图4为根据本发明的实施例的存储器内运算方法的流程图。参看图3 及图4,本实施例的方法适合于上述计算装置30,且将在下文参考计算装 置30的各种装置及元件描述本实施例的存储器内运算方法的详细步骤。
首先,在步骤S402中,处理器34通过截断多个权重的二进制数据的 分数位的至少一部分及计算所述二进制数据的剩余位的补码,将所述二进 制数据的格式自浮点格式变换成量化格式,且将多个权重的经过变换的二 进制数据编程至多个单元中。在一些实施例中,每一权重的具有浮点格式 的二进制数据在32位二进制数据中包括一个符号位、八个指数位以及二 十三个分数位,且处理器34可截断所有二十三个分数位或是仅截断这些 分数位的一部分,以便减少位「1」的数目。
在一些实施例中,处理器34可在截断之后计算剩余位的2的补码, 并反转所计算的2的补码的值,以便减少位「1」的数目且最大化位「0」 的数目,且因此减少重叠变化误差。
举例而言,图5为根据本发明的实施例的二进制数据的浮点格式。参 考图5,32位二进制数据X的浮点格式50为通过IEEE组织标准化的格 式,且包含一个符号位52、八个指数位54以及二十三个分数位56。详言 之,32位二进制数据的正负号由单一位表示,其中位「0」指示负数,且 位「1」指示正数。32位二进制数据的指数存储为具有127的偏置的8位 无正负号整数。32位二进制数据的浮点数(mantissa)存储为23位无正负 号整数。以1.101×25的数目作为实例,正负号为正,浮点数为「1.101」, 且指数为「5」。
在一些实施例中,在全精度训练中,位「0」的比接近位「1」的比。 当将二进制数据量化至9位(亦即截断所有分数位)时,位「0」的比减 小,而位「1」的比升高,但训练误差未显著受量化影响。由于当量化二 进制数据时会增加位「1」的比,故提出用于翻转位「1」的值的方法,以 减少位「1」的数目且最大化位「0」的数目,以便减少重叠变化误差且增 加训练的准确度。
在一些实施例中,进行称为「反转2的补码」的方法,其中计算出浮 点格式的二进制数据中的8位指数的2的补码且反转所计算出的2的补码 的值。举例而言,对于十进制值「-1」,「-1」的指数的2的补码为「01111110」, 且反转后的2的补码为「00000001」,其包含更少的位「1」。
图6A及图6B为分别绘示根据本发明的实施例的在量化9位二进制 数据中及在反转的量化9位二进制数据中的位「0」与位「1」的比的示意 图。图6A绘示量化9位二进制数据中的每一位的位「0」与位「1」的比, 其中,在量化9位二进制数据的大部分位中,位「1」的比大于位「0」的 比,尤其在位2至位5中。参考图6B,由于图6A中的量化9位二进制数 据的位反转,故位「0」的比变为大于位「1」的比,尤其在位2至位5中。 关于位6至位8,本发明实施例提出数据重塑的方法,以进一步减小位「1」 的比,其将稍后示出。
返回图4的流程,在步骤S404中,处理器34通过以下操作来进行调 整程序:将多个输入信号的二进制数据迭代地输入至多个输入线ILi中; 对由感测放大器SA感测到的输出(亦即电流Ij)进行整合;以及基于整 合的输出来调整编程至单元中的多个权重的二进制数据,持续多个迭代。
在一些实施例中,调整程序包括神经网络的训练,其中将多个输入信 号的二进制数据设定为神经网络的输入,将多个权重设定为神经网络中的 多个计算层中的权重,且将整合的输出设定为神经网络的输出。
举例而言,图7为示出根据本发明的实施例的神经网络的训练的示意 图。参考图7,本实施例创建全连接的神经网络80,诸如循环神经网络 (RNN)、深度神经网络(deepneural network;简称DNN)或全卷积网络 (fully convolutional network;简称FCN),其中包括在输入层与输出层之 间设置多个中间层,并为这些层设置多个权重。根据上文所示出的计算方 法,将神经网络80中的权重的格式变换成量化格式且接着编程至存储器 的单元。将充当输入信号的多个噪声语音信号82输入至存储器的输入线 以在神经网络中进行正向传播。经神经网络80处理的语音信号82将作为 增强语音信号84输出,且与充当语音信号82的参考信号的干净语音信号 86相比较以计算损失函数(loss function),诸如均方误差(mean square error,简称MSE)。接着,在神经网络80中进行反向传播以调整神经网络80的计算层中的权重。将调整后的权重编程至存储器的单元以用于下一迭 代的训练。在一些实施例中,训练将持续许多迭代,以便使由神经网络80 输出的增强语音信号84接近于干净语音信号86,而经过训练的神经网络 80可在实际实施时用于对输入至神经网络80的任何语音信号进行噪声过 滤。
返回至图4的流程,在步骤S406中,处理器34在多个迭代之后将基 于减少每一权重的二进制数据中值为一的位的几率,来重塑多个权重的二 进制数据,且重复调整程序直至满足结束条件为止。
在一些实施例中,处理器34通过将每一权重的十进制值移位任意数 以最大化权重的二进制数据中值为一的位的减少与移位的数的商,且将所 述商除以基于多个权重的数据分布来判定的因子,以计算器率,且回应于 权重的所计算出的几率大于阈值而将权重的十进制值移位。
举例而言,图8为示出根据本发明的实施例的数据重塑的示意图。参 考图8,假定十进制值120为在调整程序的迭代之后获得的权重的指数值, 则可将所述指数值移位任意数(例如,小于阈值X的整数)以获得诸如 117或123的移位值。因此,分别计算出在移位指数值的二进制数据中的 位「1」的减少数r及在十进制中的指数值的移位数x,且如下计算权重的 二进制数据中的位「1」的减少数r与移位数x的商y。
y=r/x. (1)
举例而言,对于等于3的阈值X,可将指数值120(二进制中的 「00000110」)移位至122(二进制中的「00000100」)。其中位「1」的减少 数r等于1而指数值的移位数x等于2,因此,商y等于「1/2」。
为了尽可能地减少位「1」,应最大化商y,且将其与阈值比较以便判 定是否触发数据重塑。在一些实施例中,如下基于通过将所计算出的商y 除以基于多个权重的数据分布来判定的因子α而计算出的可能性P来进行 数据重塑。
P=y×100%/α (2)
对于以上将指数值120(二进制中的「00000110」)移位至122(二进 制中的「00000100」)的实例,商y等于1/2,且可能性P=0.5×100%/5 =10%,其表示进行数据重塑的可能性为10%且不进行数据重塑的可能性 为90%。当基于可能性进行数据重塑时,可很好地实现神经网络的效能与 准确度的权衡。
图9为根据本发明的实施例的存储器内运算方法的流程图。参考图3 及图9,本实施例的方法适合于上述计算装置30,且将在下文参考计算装 置30的各种装置及元件描述本实施例的存储器内运算方法的详细步骤。
在步骤S1002中,处理器34创建具有多个层的神经网络且将具有如 上述实施例中所示出的量化格式的权重设定至这些层。
在步骤S1004中,处理器34通过将语音信号变换成数字数据且将经 过变换的数字数据输入至存储器32的输入线ILi而将噪声或干净语音信号 输入至神经网络。
在步骤S1006中,处理器34通过进行神经网络的正向传播来增强语 音信号。将输入至存储器32的输入线ILi的经过变换的数字数据乘以编程 至存储器32的单元(由电阻Rij表示)的权重,且输出由存储器32的感 测放大器SA感测到的总电流且将其变换成增强语音信号。
在步骤S1008中,处理器34通过进行神经网络的反向传播来微调神 经网络。在一些实施例中,处理器34基于增强语音信号与参考干净语音 信号之间的比较来调整编程至存储器32的单元中的权重。
在步骤S1010中,处理器34判定通过使用上文所示出的方程式(1) 计算出的商y是否大于或等于阈值。
响应于商y大于或等于阈值,在步骤S1012中,处理器34使用通过 上文所示出的方程式(2)所计算出的可能性,来重塑编程至存储器32的 单元中的权重。
回应于商y未大于或等于阈值或权重的重塑完成,在步骤S1014中, 处理器34将判定微调是否完成。响应于判定微调尚未完成,处理器返回 至步骤S1004,而持续输入语音信号以训练神经网络。另一方面,响应于 判定微调完成,处理器继续进行步骤S1016以结束训练。
在一些实施例中,处理器34可根据当前进行的迭代次数来判定微调 是否完成,且在迭代次数达到预定数目时判定微调完成。在一些实施例中, 处理器34可根据基于输出的增强语音信号与参考干净语音信号之间的差 所计算出的准确度,来判定微调是否完成,且在所计算出的准确度达到预 定阈值时,判定微调完成。
在一些实施例中,处理器34可响应于满足一些条件而提前重塑。在 一些实施例中,处理器34可根据整合的输出与输入信号的参考信号之间 的差来计算准确度,且响应于所计算出的准确度大于第一阈值而提前重 塑。在一些实施例中,处理器34可计算多个权重的二进制数据中的位「1」 与位「0」的比,且回应于所计算出的比大于第二阈值而提前重塑。
经由上文所描述的方法,可在对模型准确度的影响有限的情况下减小 重叠变化误差的几率。
综上所述,根据本发明的实施例,提出一种存储器内运算方法以权衡 神经网络或实施忆阻器的其他应用的效能、准确度以及数据形式。因此, 可缩减神经网络的模型大小或应用程序的计算,以使神经网络或这些应用 更可实作在边缘装置或其他资源有限的硬件上。
至此,已经结合附图对本公开实施例进行了详细描述。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行 了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而 已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种存储器内运算方法,适于处理器对具有交叉开关架构的存储器进行乘加运算,其中,所述存储器包括彼此交叉的多个输入线及多个输出线,多个单元分别配置于所述输入线及所述输出线的相交点处,且多个感测放大器分别连接至所述输出线,所述方法包括:
通过截断多个权重的二进制数据的分数位的至少一部分及计算所述二进制数据的剩余位的补码,将所述二进制数据的格式自浮点格式变换成量化格式,且将所述多个权重的经过变换的二进制数据编程至所述多个单元中;
执行调整程序,其中包括将多个输入信号的二进制数据迭代地输入至所述多个输入线中,对由所述感测放大器感测到的输出进行整合,以及基于整合的输出来调整编程至所述单元中的所述多个权重的所述二进制数据,持续多个迭代;以及
在所述多个迭代之后,基于减少每一所述权重的所述二进制数据中值为一的位的几率来重塑所述多个权重的所述二进制数据,且重复所述调整程序直至满足结束条件为止。
2.根据权利要求1所述的存储器内运算方法,其中,所述计算所述二进制数据的剩余位的补码的步骤包括:
计算所述剩余位的2的补码且反转所计算出的所述2的补码的值。
3.根据权利要求1所述的存储器内运算方法,其中,所述调整程序包括神经网络的训练,其中将所述多个输入信号的所述二进制数据设定为所述神经网络的输入,将所述多个权重设定为所述神经网络中的多个计算层中的权重,且将所述整合的输出设定为所述神经网络的输出。
4.根据权利要求3所述的存储器内运算方法,其中,所述基于所述整合的输出来调整编程至所述单元中的所述多个权重的所述二进制数据的步骤包括:
计算所述整合的输出与所述输入信号的参考信号之间的差,且根据所述差来调整待编程至所述单元中的所述多个权重的所述经过变换的二进制数据。
5.根据权利要求4所述的存储器内运算方法,其中,所述基于减少每一所述权重的所述二进制数据中值为一的所述位的几率来重塑所述多个权重的所述二进制数据的步骤包括:
根据所述整合的输出与所述输入信号的参考信号之间的所述差来计算准确度;以及
回应于所计算出的所述准确度大于第一阈值而提前所述重塑。
6.根据权利要求1所述的存储器内运算方法,其中,所述基于减少每一所述权重的所述二进制数据中值为一的所述位的几率来重塑所述多个权重的所述二进制数据的步骤包括:
计算所述多个权重的所述二进制数据中值为一的所述位与值为零的所述位的比;以及
回应于所计算出的所述比大于第二阈值而提前所述重塑。
7.根据权利要求1所述的存储器内运算方法,其中,所述基于减少每一所述权重的所述二进制数据中的值为一的所述位的几率来重塑所述多个权重的所述二进制数据的步骤包括:
通过将每一所述权重的十进制值移位任意数以最大化所述权重的所述二进制数据中值为一的位的减少与所移位的数的商,且将所述商除以基于所述多个权重的数据分布所判定的因子,以计算所述几率;以及
响应于所述商大于或等于阈值而根据所计算出的所述几率将每一所述权重的所述十进制值移位。
8.根据权利要求1所述的存储器内运算方法,其中,每一所述权重的具有所述浮点格式的所述二进制数据在32位二进制数据中包括一个符号位、八个指数位以及二十三个分数位。
9.一种存储器内运算装置,其中,包括:
存储器,具有交叉开关架构,所述存储器包括:
彼此交叉的多个输入线及多个输出线;
多个单元,分别配置于所述输入线及所述输出线的相交点处;以及
多个感测放大器,分别连接至所述输出线;
处理器,耦接至所述存储器且经配置以:
通过截断多个权重的二进制数据的分数位的至少一部分及计算所述二进制数据的剩余位的补码,将所述二进制数据的格式自浮点格式变换成量化格式,且将所述多个权重的经过变换的二进制数据编程至所述多个单元中;
执行调整程序,其中包括将多个输入信号的二进制数据迭代地输入至所述多个输入线中,对由所述感测放大器感测到的输出进行整合,以及基于整合的输出来调整编程至所述单元中的所述多个权重的所述二进制数据,持续多个迭代;以及
在所述多个迭代之后,基于减少每一所述权重的所述二进制数据中值为一的位的几率来重塑所述多个权重的所述二进制数据,且重复所述调整程序直至满足结束条件为止。
10.根据权利要求9所述的存储器内运算装置,其中,所述处理器计算所述剩余位的2的补码且反转所计算出的所述2的补码的值。
11.根据权利要求9所述的存储器内运算装置,其中,所述调整程序包括神经网络的训练,其中将所述多个输入信号的所述二进制数据设定为所述神经网络的输入,将所述多个权重设定为所述神经网络中的多个计算层中的权重,且将所述整合的输出设定为所述神经网络的输出。
12.根据权利要求11所述的存储器内运算装置,其中,所述处理器计算所述整合的输出与所述输入信号的参考信号之间的差,且根据所述差来调整待编程至所述单元中的所述多个权重的所述经过变换的二进制数据。
13.根据权利要求12所述的存储器内运算装置,其中,所述处理器根据所述整合的输出与所述输入信号的参考信号之间的所述差来计算准确度,且响应于所计算出的所述准确度大于第一阈值而提前所述重塑。
14.根据权利要求9所述的存储器内运算装置,其中,所述处理器计算所述多个权重的所述二进制数据中值为一的所述位与值为零的所述位的比,且响应于所计算出的所述比大于第二阈值而提前所述重塑。
15.根据权利要求9所述的存储器内运算装置,其中,所述处理器通过将每一所述权重的十进制值移位任意数以最大化所述权重的所述二进制数据中值为一的位的减少与所移位的数的商,且将所述商除以基于所述多个权重的数据分布所判定的因子,且响应于所述商大于或等于阈值而根据所计算出的所述几率将每一所述权重的所述十进制值移位,以计算所述几率。
16.根据权利要求9所述的存储器内运算装置,其中,每一所述权重的具有所述浮点格式的所述二进制数据在32位二进制数据中包括一个符号位、八个指数位以及二十三个分数位。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063010050P | 2020-04-15 | 2020-04-15 | |
US63/010,050 | 2020-04-15 | ||
US17/217,482 US12050888B2 (en) | 2020-04-15 | 2021-03-30 | In-memory computing method and apparatus |
US17/217,482 | 2021-03-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113537453A true CN113537453A (zh) | 2021-10-22 |
Family
ID=78081422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110369585.4A Pending CN113537453A (zh) | 2020-04-15 | 2021-04-06 | 存储器内运算方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12050888B2 (zh) |
CN (1) | CN113537453A (zh) |
TW (1) | TWI792247B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113949385B (zh) * | 2021-12-21 | 2022-05-10 | 之江实验室 | 一种用于rram存算一体芯片补码量化的模数转换电路 |
CN116362314A (zh) * | 2021-12-24 | 2023-06-30 | 华为技术有限公司 | 一种存算一体装置和计算方法 |
EP4361793A1 (en) * | 2022-10-26 | 2024-05-01 | Huawei Technologies Co., Ltd. | Energetically efficient representation of signed integer non uniform weights |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725777B2 (en) * | 2016-12-06 | 2020-07-28 | Gsi Technology, Inc. | Computational memory cell and processing array device using memory cells |
US20190311749A1 (en) * | 2018-04-09 | 2019-10-10 | Anaflash Inc. | Logic Compatible Embedded Flash Memory |
US10943652B2 (en) * | 2018-05-22 | 2021-03-09 | The Regents Of The University Of Michigan | Memory processing unit |
US11507808B2 (en) | 2018-06-01 | 2022-11-22 | Arizona Board Of Regents On Behalf Of Arizona State University | Multi-layer vector-matrix multiplication apparatus for a deep neural network |
US10877752B2 (en) | 2018-09-28 | 2020-12-29 | Intel Corporation | Techniques for current-sensing circuit design for compute-in-memory |
US10831446B2 (en) | 2018-09-28 | 2020-11-10 | Intel Corporation | Digital bit-serial multi-multiply-and-accumulate compute in memory |
WO2020139895A1 (en) * | 2018-12-24 | 2020-07-02 | The Trustees Of Columbia University In The City Of New York | Circuits and methods for in-memory computing |
-
2021
- 2021-03-30 US US17/217,482 patent/US12050888B2/en active Active
- 2021-03-30 TW TW110111563A patent/TWI792247B/zh active
- 2021-04-06 CN CN202110369585.4A patent/CN113537453A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US12050888B2 (en) | 2024-07-30 |
TW202141305A (zh) | 2021-11-01 |
US20210326114A1 (en) | 2021-10-21 |
TWI792247B (zh) | 2023-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113537453A (zh) | 存储器内运算方法及装置 | |
US11922321B2 (en) | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation | |
US11424764B2 (en) | Recurrent neural networks and systems for decoding encoded data | |
US10491239B1 (en) | Large-scale computations using an adaptive numerical format | |
JP2018010618A (ja) | 畳み込みニューラルネットワークハードウエア構成 | |
CN1131508C (zh) | 包括至少一个编码器的传输系统 | |
CN110428048B (zh) | 一种基于模拟延时链的二值化神经网络累加器电路 | |
US20220368349A1 (en) | Decoders and systems for decoding encoded data using neural networks | |
CN114499538B (zh) | 多比特输入数据编码方法、装置、电子设备及存储介质 | |
CN115879530B (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
EP3931758A1 (en) | Neural network layer processing with scaled quantization | |
CN118056355A (zh) | 用于使用神经网络估计经编码数据的位错误率(ber)的系统 | |
CN112561050B (zh) | 一种神经网络模型训练方法及装置 | |
TWI798798B (zh) | 記憶體內運算方法及裝置 | |
Liu et al. | An energy-efficient mixed-bit CNN accelerator with column parallel readout for ReRAM-based in-memory computing | |
CN113935488A (zh) | 用于神经网络的推理引擎及其操作方法 | |
US11526328B2 (en) | Computation method and apparatus exploiting weight sparsity | |
CN110889080B (zh) | 乘积累加运算装置、乘积累加运算方法和系统 | |
US20220359003A1 (en) | Neural network computation method using adaptive data representation | |
JP7255068B2 (ja) | メモリデバイス及びその動作方法 | |
CN112446461A (zh) | 一种神经网络模型训练方法及装置 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN113343585B (zh) | 一种用于矩阵乘法运算的权位分立存算阵列设计方法 | |
CN113496274A (zh) | 基于存储器内运算电路架构的量化方法及其系统 | |
JP7279293B2 (ja) | メモリデバイスおよびその動作方法 |
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 |