CN114365078A - 重构mac运算 - Google Patents

重构mac运算 Download PDF

Info

Publication number
CN114365078A
CN114365078A CN202080061121.0A CN202080061121A CN114365078A CN 114365078 A CN114365078 A CN 114365078A CN 202080061121 A CN202080061121 A CN 202080061121A CN 114365078 A CN114365078 A CN 114365078A
Authority
CN
China
Prior art keywords
array
volatile memory
signal
programmed
input
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
Application number
CN202080061121.0A
Other languages
English (en)
Inventor
马修·马蒂那
施达塔·达斯
格伦·阿诺德·罗森代尔
费迪南德·加西亚·雷东多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN114365078A publication Critical patent/CN114365078A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • 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
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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

Landscapes

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

Abstract

提供了一种用于执行重构的乘法与累加运算的方法和设备。求和阵列包括以列布置的多个非易失性存储器元件。基于神经网络的权重而将该求和阵列中的每个非易失性存储器元件编程为高电阻状态或低电阻状态。该求和阵列被配置成至少部分地基于多个输入信号而生成每个列的经求和的信号。乘法阵列耦接到该求和阵列,并且包括多个非易失性存储器元件。基于该神经网络的权重而将该乘法阵列中的每个非易失性存储器元件编程为不同的电导水平。乘法阵列被配置成至少部分地基于来自求和阵列的经求和的信号而生成输出信号。

Description

重构MAC运算
背景技术
本公开大体上涉及机器学习(ML),并且更确切地,涉及用于ML应用和处理器的乘法与累加(MAC)运算。
基于非易失性存储器(NVM)的交叉开关架构提供用于在机器学习算法(特别是神经网络)中执行MAC运算的替代机制。使用NVM位单元的混合信号方法依赖于欧姆定律,以通过利用新兴的NVM技术(例如,相变存储器(PCM)、电阻式随机存取存储器(RRAM)、相关电子随机存取存储器(CeRAM)等)的电阻性质来实施乘法运算。跨NVM位单元施加电压偏置生成与NVM元件的电导和跨单元的电压偏置的乘积成比例的电流。
并行地添加来自多个位单元的电流以实施累加和。因此,欧姆定律和基尔霍夫电流定律的组合并行地实施多个MAC运算。然而,当在数字域中使用显式乘法器和加法器实施时,这些可能是能量密集的。
在ML应用中利用MAC运算,该应用诸如人工神经网络(ANN),包括深度神经网络(DNN)、卷积神经网络(CNN)等。利用NVM交叉开关的MAC加速需要编程具有表示多位权重参数的精密电导水平的NVM元件。由于固有的装置限制,可表示的位精度限于4位或5位,这提供了16个至32个不同的电导水平。这使权重编程步骤复杂化,因为需要精确编程NVM位的整个交叉开关阵列(1Mb至10Mb的容量是典型的)。
附图说明
以举例的方式并且不限于附图示出了本公开,其中相同的附图标号指示相似的元件。
图1A绘示了根据本公开的实施方案的ANN。
图1B绘示了根据本公开的实施方案的ANN的高级框图。
图2A绘示了根据本公开的实施方案的CNN。
图2B绘示了根据本公开的实施方案的CNN的卷积层内的卷积运算。
图2C绘示了根据本公开的实施方案的CNN的另一卷积层运算。
图2D绘示了根据本公开的实施方案的CNN的转换的卷积层运算。
图3A绘示了根据本公开的实施方案的使用NVM交叉开关实施的图2D的卷积层运算的一部分。
图3B绘示了根据本公开的实施方案的使用NVM交叉开关实施的卷积层运算的架构。
图4A绘示了根据本公开的实施方案的重构的MAC运算的架构的示意图。
图4B绘示了根据本公开的实施方案的重构的MAC运算的架构的示意图。
图5绘示了根据本公开的实施方案的用于重构的MAC运算的低精度编程过程的流程图。
图6绘示了根据本公开的实施方案的用于乘法器/缩放模块的高精度编程过程的流程图。
图7绘示了根据本公开的实施方案的用于在神经网络中执行乘法-累加加速的方法的流程图。
具体实施方式
现在将关于附图详细描述本公开的具体实施方案。为了说明的简单和清晰,在被视为适当的情况下,可在附图中重复附图标号以指示对应的或类似的元件。另外,阐述了许多具体细节以便提供对本文所述的示例的透彻理解。然而,本领域普通技术人员将理解,本文所述的示例可在没有这些具体细节的情况下实践。在其它情况下,未详细描述熟知的方法、程序和部件以免模糊本文所述的示例。而且,本说明书不应被视为限制本文所述的示例的范围。
根据本公开,提供了一种改进的技术,用于重构MAC运算以减少上述此类系统中的编程步骤。
在本公开的一个实施方案中,一种设备包括求和阵列和乘法阵列。该求和阵列包括以列布置的多个非易失性存储器元件。基于神经网络的权重而将该求和阵列中的每个非易失性存储器元件编程为高电阻状态或低电阻状态。该求和阵列被配置成至少部分地基于多个输入信号而生成每个列的经求和的信号。乘法阵列耦接到求和阵列,并且包括多个非易失性存储器元件。基于神经网络的权重而将该乘法阵列中的每个非易失性存储器元件编程为不同的电导水平。乘法阵列被配置成至少部分地基于来自求和阵列的经求和的信号而生成输出信号。
ANN(诸如,DNN、CNN等)是一种挑战分类、辨识和回归问题的广泛阵列的受欢迎的解决方案。然而,许多ANN模型需要大量的计算,该计算涉及大量的权重和激活,这在存取、存储和性能方面提出了显著挑战,特别是对于移动和其他功率或存储约束装置。ANN硬件加速器加速这些计算,诸如由CNN执行的卷积运算。
ANN使用通过学习过程训练的互连节点网络来对输入数据或信号与输出数据或信号之间的关系进行建模。节点被布置成各种层,包括例如输入层、一个或多个隐藏层和输出层。输入层接收输入数据,诸如图像数据,并且输出层生成输出数据,诸如图像数据包含已知对象的概率。每个隐藏层向输出数据提供输入数据的至少部分转化。DNN具有多个隐藏层,以便对输入数据与输出数据之间的复杂非线性关系进行建模。
在完全连接的前馈ANN中,每个节点连接到前一层中的所有节点,并且连接到后续层中的所有节点。例如,每个输入层节点连接到每个隐藏层节点,每个隐藏层节点连接到每个输入层节点和每个输出层节点,并且每个输出层节点连接到每个隐藏层节点。额外的隐藏层相似地互连。每个连接具有权重值,并且每个节点具有激活函数,诸如线性函数、步进函数、s型函数、tanh函数、整流线性单元(ReLU)函数等,该函数基于到节点的输入的加权总和而确定节点的输出。输入数据从输入层节点通过相应的连接权重传播到隐藏层节点,并且然后通过相应的连接权重传播到输出层节点。
更特别地,在每个输入节点处,将输入数据提供给该节点的激活函数,并且然后将激活函数的输出作为输入数据值提供给每个隐藏层节点。在每个隐藏层节点处,从每个输入层节点接收到的输入数据值乘以相应的连接权重,并且对得到的乘积进行求和或累加成提供给该节点的激活函数的激活值。然后,将激活函数的输出作为输入数据值提供给每个输出层节点。在每个输出层节点处,从每个隐藏层节点接收到的输出数据值乘以相应的连接权重,并且对得到的乘积进行求和或累加成提供给该节点的激活函数的激活值。然后,提供激活函数的输出作为输出数据。额外的隐藏层可以被相似地配置以处理数据。
图1A绘示了根据本公开的实施方案的ANN 10。
ANN 10包括输入层20、一个或多个隐藏层30、40、50等和输出层60。输入层20包括一个或多个输入节点21、22、23等。隐藏层30包括一个或多个隐藏节点31、32、33、34、35等。隐藏层40包括一个或多个隐藏节点41、42、43、44、45等。隐藏层50包括一个或多个隐藏节点51、52、53、54、55等。输出层60包括一个或多个输出节点61、62等。通常,ANN 10包括N个隐藏层,输入层20包括“i”个节点,隐藏层30包括“j”个节点,隐藏层40包括“k”个节点,隐藏层50包括“m”个节点,并且输出层60包括“o”个节点。
在一个实施方案中,N等于3,i等于3、j、k和m等于5并且o等于2(图1中绘示)。输入节点21耦接到隐藏节点31至35,输入节点22耦接到隐藏节点31至35,并且输入节点23耦接到隐藏节点31至35。隐藏节点31耦接到隐藏节点41至45,隐藏节点32耦接到隐藏节点41至45,隐藏节点33耦接到隐藏节点41至45,隐藏节点34耦接到隐藏节点41至45,并且隐藏节点35耦接到隐藏节点41至45。隐藏节点41耦接到隐藏节点51至55,隐藏节点42耦接到隐藏节点51至55,隐藏节点43耦接到隐藏节点51至55,隐藏节点44耦接到隐藏节点51至55,并且隐藏节点45耦接到隐藏节点51至55。隐藏节点51耦接到输出节点61和62,隐藏节点52耦接到输出节点61和62,隐藏节点53耦接到输出节点61和62,隐藏节点54耦接到输出节点61和62,并且隐藏节点55耦接到输出节点61和62。
图1B绘示了根据本公开的实施方案的使用MAC运算的ANN的高级框图100。
MAC运算可以由等式1表示,其中元素b和元素c被一起相乘,与值a相加,存储在累加器中,并且然后作为新值a存储在累加器中。
a←a+(b·c) (等式1)
一组MAC的组成可以表示点积和向量-矩阵乘法。图1B表示简单的多层完全连接的ANN 100,诸如ANN 10。第一层103-1中的神经元中的每个神经元在输入向量102与矩阵104中的对应权重之间执行MAC运算。将激活函数应用于部分结果,并且生成输出向量,将该输出向量作为输入向量提供给下一层,即第二层103-2。该过程针对每个层中的每个神经元发生。例如,最后一层103-L在前一层的输出向量与矩阵104中的对应权重之间执行MAC运算。将激活函数应用于部分结果,并且生成输出向量106。在许多实施方案中,输出层可以遵循层103-L。
CNN可以用于分类或辨识应用,诸如图像辨识、语音辨识等。CNN具有输入层、输出层和多个隐藏层,包括卷积层、池化层、归一化层、完全连接的层等。每个卷积层应用滑动点积或与输入体积的交叉相关,将激活函数应用于结果,并且然后向下一层提供激活或输出体积。卷积层通常使用ReLU函数作为激活函数。在某些实施方案中,激活函数提供在单独的激活层(诸如,ReLU层)中。池化层减小了从前一卷积层接收到的输出体积的尺寸,并且可以计算小簇数据的平均值或最大值,诸如2×2矩阵。在某些实施方案中,卷积层和池化层可以形成CNN的单个层。完全连接的层遵循卷积层和池化层,并且包括平坦层和分类层,然后是包括归一化函数(诸如,SoftMax函数)的归一化层。输出层遵循最后一个完全连接的层;在某些实施方案中,输出层可以包括归一化函数。
图2A绘示了根据本公开的实施方案的CNN 15。
CNN 15包括:输入层20;一个或多个隐藏层,诸如卷积层30-1、池化层30-2、隐藏(平坦)层40、隐藏(分类)层50等;和输出层60。设想了输入层、隐藏层和输出层的许多其他变型。
输入层20包括一个或多个输入节点21等,该一个或多个输入节点将输入数据(诸如,彩色图像)作为输入体积呈现给第一卷积层,例如卷积层30-1。输入体积是具有宽度、高度和深度的三维矩阵。例如,表示彩色图像的输入数据被呈现为512像素×512像素×3个通道(红色、绿色、蓝色)的输入体积;也可以使用其他输入体积尺寸,诸如32×32×3、64×64×3、128×128×3等、32×32×1、64×64×1、128×128×1、512×512×1等。
卷积层30-1局部连接到输入层20,并且包括连接到输入体积中的局部区域的多个节点(为清楚起见未示出)。对于使用标准卷积的CNN,每个节点计算节点的权重与输入体积的相应局部区域之间的点积。然后将激活函数应用于每个卷积计算的结果,以产生作为输入体积提供到后续层的输出体积。激活函数可以由每个卷积层节点或由后续局部连接的ReLU层的节点应用。
池化层30-2局部连接到卷积层30-1,并且包括连接到输入体积中的局部区域的多个节点(为清楚起见未示出)。池化层30-2还产生作为输入体积提供给后续层的输出体积,该后续层诸如另一卷积层30-1、平坦层40等。在某些实施方案中,卷积层30-1和池化层30-2形成单个隐藏层30。相似地,在某些实施方案中,卷积层30-1、ReLU层和池化层30-2形成单个隐藏层30。通常,卷积层和池化层的输出体积可以被描述为特征图,并且一个或多个单个隐藏层30形成CNN 15的特征学习部分。
隐藏层40是局部连接到池化层30-2的“平坦”层,并且包括一个或多个隐藏(平坦)节点41、42、43、44、45等。隐藏(扁平)层40使由先前池化层30-2产生的输出体积“平坦化”到提供给后续、完全连接的隐藏层50的柱矢量中。
隐藏层50是完全连接到隐藏(平坦)层40的分类层,并且包括一个或多个隐藏(分类)节点51、52、53、54、55等。
输出层60包括一个或多个输出节点61、62等,并且完全连接到隐藏(分类)层50。完全连接的输出层60通过隐藏(分类)层50接收分类结果输出,并且每个节点输出预测的类别得分。归一化函数(诸如,Softmax函数)可以通过输出层60或者替代地通过插入在隐藏(分类)层50与输出层60之间的额外层应用于预测的类别得分。
图2B绘示了根据本公开的实施方案的CNN 15的卷积层30内的卷积运算200。该卷积层通常包括“M”个滤波器、“C”个输入通道、“C”个输入特征图(即,每个输入通道一个输入特征图)和“M”个输出特征图(即,每个滤波器一个输出特征图)。每个滤波器具有“C”个权重集(即,每个滤波器具有针对每个输入通道的权重集),并且跨输入特征图进行卷积以产生对应于该滤波器的输出特征图。卷积层通常需要大量数据的移动,生成显著的计算载荷,并且需要相当大小的缓冲器来存储中间值。
更特别地,卷积运算200包括:“M”个滤波器2021、2022、…、202M;输入特征图204,包括“C”个输入数据矩阵2041、2042、…、204N(即,N等于C);和输出特征图206,包括“M”个输出数据矩阵2061、2062、…、206M。出于说明的目的,每个滤波器内的权重集包括2×2权重矩阵,每个输入特征图包括6×6个输入数据矩阵,并且每个输出特征图包括5×5个输出数据矩阵。对于图2B中示出的具体布置,总运算次数为2×2×N×5×5×M。
图2C绘示了根据本公开的实施方案的CNN 15的另一卷积层运算201。卷积层运算201是卷积层运算200的简化版本,包括三个输入通道,即“C”和“N”等于3,和单个滤波器2021,即“M”等于1。
输入特征图204(6×6×3)包括输入数据矩阵2041、输入数据矩阵2042和输入数据矩阵2043,滤波器2021(2×2×3)包括权重矩阵2021.1(w1),权重矩阵2021.2(w2)和权重矩阵2021.3(w3),并且输出数据矩阵2061(5×5×1)包括输出数据矩阵。滤波器2021与输入特征图204进行卷积以产生具有单个输出数据矩阵2061的输出特征图206。在该示例中,输出数据矩阵元素o1是滤波器2021.1(w1)和输入数据矩阵的左上象限2041(a1 q1)、滤波器2021.2(w2)和输入数据矩阵的左上象限2042(a2 q1)以及滤波器2021.3(w3)和输入数据矩阵的左上象限2043(a3 q1)的点积的总和。
更特别地,滤波器2021.1(w1)和输入数据矩阵的左上象限2041(a1 q1)的点积等于w1 1·a1 1+w1 2·a1 2+w1 3·a1 7+w1 4·a1 8。以相同的方式计算滤波器2021.2(w2)和输入数据矩阵的左上象限2042(a2 q1)的点积以及滤波器2021.3(w3)和输入数据矩阵的左上象限2043(a3 q1)的点积,即滤波器2021.2(w2)和输入数据矩阵的左上象限2042(a2 q1)的点积等于w2 1·a2 1+w2 2·a2 2+w2 3·a2 7+w2 4·a2 8,并且滤波器2021.3(w3)和输入数据矩阵的左上象限2043(a3 q1)的点积等于w3 1·a3 1+w3 2·a3 2+w3 3·a3 7+w3 4·a3 8
输出数据矩阵元素o2是滤波器2021.1(w1)和输入数据矩阵的下一个上象限2041、滤波器2021.2(w2)和输入数据矩阵的下一个上象限2042以及滤波器2021.3(w3)和输入数据矩阵的下一个上象限2043的点积的总和。每个输入数据矩阵中的“下一个”上象限2041、2042和2043已经相对于第一上象限向右移位一列。
更特别地,滤波器2021.1(w1)和输入数据矩阵的下一个上象限2041的点积等于w1 1·a1 2+w1 2·a1 3+w1 3·a1 8+w1 4·a1 9。以相同的方式计算滤波器2021.2(w2)和输入数据矩阵的下一个左上象限2042的点积以及滤波器2021.3(w3)和输入数据矩阵的下一个左上象限2043的点积,即滤波器2021.2(w2)和输入数据矩阵的左上象限2042(a2 q1)的点积等于w2 1·a2 2+w2 2·a2 3+w2 3·a2 8+w2 4·a2 9,并且滤波器2021.3(w3)和输入数据矩阵的左上象限2043(a3 q1)的点积等于w3 1·a3 2+w3 2·a3 3+w3 3·a3 8+w3 4·a3 9
以相似的方式计算剩余输出数据矩阵元素o3至o5。在已经计算了输出数据矩阵元素o5之后,每个输入数据矩阵中的“下一个”象限2041、2042和2043一直移位到最左边的列并向下移位一行,以用于计算输出数据矩阵元素o6。然后,通过使每个输入数据矩阵2041、2042和2043中的象限向右移位一个列来计算输出数据矩阵元素o7至o10。以相似的方式计算剩余输出数据矩阵元素o11至o15、o16至o20以及o21至o25
通常来说,由于通常需要的复杂的数据流和昂贵的数据路径,因此本地卷积运算不由CNN执行。相反,本地卷积运算被转换成通用矩阵乘法(GEMM)运算,并且然后使用优化的软件库或专用硬件通过中央处理单元(CPU)、专用处理器、硬件加速器处理引擎等更有效地实行GEMM运算。更特别地,“IM2COL”软件功能可以用于将每个卷积运算的滤波器(权重)矩阵和输入特征图(IFM)矩阵转换成与GEMM运算兼容的扩展格式。生成了每个滤波器(权重)矩阵和每个IFM矩阵的IM2COL版本并存储在存储器中,并且然后从存储器加载并由GEMM运算处理。
图2D绘示了根据本公开的实施方案的CNN的转换的卷积层运算。
在一个实施方案中,在中央处理器单元(CPU)上实行的CNN的卷积层运算可以被转换成通用矩阵乘法(GEMM)运算。通过将滤波器2021转换成转换的权重矩阵212(1×12)并且将输入特征图204转换成转换的输入数据矩阵214(12×25),使卷积层运算201转换成GEMM运算。在将转换的权重矩阵212和转换的输入数据矩阵214相乘之后,然后使转换的输出数据矩阵216(1×25)重整成输出数据矩阵2061(5×5)。为了便于说明,以缩写形式描绘转换的输入数据矩阵214。
在该示例中,转换的输出数据矩阵元素o1是转换的权重矩阵212的第一(即,仅一个)行和转换的输入数据矩阵214的第一列的点积的总和。如图1B中所示,转换的权重矩阵212包括滤波器2021.1(w1)、滤波器2021.2(w2)和滤波器2021.3(w3),而转换的输入数据矩阵214的第一行包括输入数据矩阵的左上象限2041(a1 q1)、输入数据矩阵的左上象限2042(a2 q1)和输入数据矩阵的左上象限2043(a3 q1)的元素。
更特别地,转换的输出数据矩阵元素o1等于w1 1·a1 1+w1 2·a1 2+w1 3·a1 7+w1 4·a1 8+w2 1·a2 1+w2 2·a2 2+w2 3·a2 7+w2 4·a2 8+w3 1·a3 1+w3 2·a3 2+w3 3·a3 7+w3 4·a3 8。如上所示,转换的输出数据矩阵元素o1等于输出数据矩阵元素o1
图3A绘示了根据本公开的实施方案的使用NVM交叉开关301实施的图2D的卷积层运算的一部分。
NVM交叉开关301包括十二行信号线308,即行信号线3081、…、30812和单列信号线312。位单元安置在行信号线308和列信号线312的每个交叉点处。每个位单元包括一个或多个NVM元件,该一个或多个NVM元件被编程以表示与滤波器2021的特定权重即w1 1、w1 2等成比例的电导值。电导由g1 1、g1 2、g1 3、g1 4、g2 1、g2 2、g2 3、g2 4、g3 1、g3 2、g3 3和g3 4表示,它们分别与权重w1 1、w1 2、w1 3、w1 4、w2 1、w2 2、w2 3、w2 4、w3 1、w3 2、w3 3和w3 4成比例。
为了计算转换的输出数据矩阵216的第一元素,即o1,将来自转换的输入数据矩阵214的第一列的输入数据提供给交叉开关302作为分别沿着行信号线3081、…、30812的输入a1 1、a1 2、a1 7、a1 8、a2 1、a2 2、a2 7、a2 8、a3 1、a3 2、a3 7和a3 8。通过数模转换器(DAC)310将输入数据转换为模拟电压v1 1、v1 2、v1 7、v1 8、v2 1、v2 2、v2 7、v2 8、v3 1、v3 2、v3 7和v3 8,并且提供给列信号线312。列信号线312输送位线(BL)信号,该信号与输入数据和沿着列信号线312的权重的累加点积成比例。然后使用模数转换器(ADC)数字化BL信号;偏置、缩放和激活函数可以应用于数字化信号以获得转换的输出数据矩阵216的第一元素,即o1
图3B绘示了根据本公开的实施方案的使用NVM交叉开关302实施的卷积层运算的架构300。
NVM交叉开关302包括行信号线308,即行信号线3081、3082、…、308L,和列信号线312,即列信号线3121、3122、…、312M。位单元314安置在行信号线308和列信号线312的每个交叉点处,即位单元31411、…、314LM。每个位单元314包括一个或多个NVM元件,该一个或多个NVM元件被编程以表示与特定滤波器202的特定权重(诸如,滤波器2021的W0 11等)成比例的电导值。在第一列即列信号线3121中,电导被描绘为G0 11、G0 12、…、GC 21、GC 22
由于低阻态(LRS)R与高阻态(HRS)R之间的宽分离,在个别位单元内对多个线性分离的电阻级进行编码通常是有用的。在相关电子材料RAM(CeRAM)的情况下,HRS/LRS的比率为至少2个数量级,这支持4位编码(即,16个电阻级)。
将来自输入特征图204的数据提供给交叉开关302作为沿着行信号线3081、…、308L的输入I0 11、…、IC 22,通过数模转换器(DAC)转换成模拟电压V0 11、…、VC 22,并且跨NVM单元进行输送。在该实施方案中,L等于输入通道数量的四倍,即2×2×C。DAC包括DAC元件3101、…、310L。列信号线3121、…、312M输送对应的位线(BL)信号BL1、…、BLM,该信号中每个信号与输入数据和沿着该列信号线的权重的累加点积成比例。然后,使用模数转换器(ADC)数字化每个BL信号;可以将偏置函数、缩放函数和激活函数应用于数字化信号以获得输出特征图206的输出数据。
在图3B中一般地描绘了将卷积层运算映射到具有M个滤波器和C个输入通道的NVM交叉开关。在某些实施方案中,权重是静止的,即权重被编程到NVM交叉开关中一次并且在推断操作过程期间不改变。典型的NVM元件(诸如,相变存储器和电阻式RAM)具有有限的写入“耐久度”,并且可能够写入这些NVM元件有限的次数(例如,大约108次),此后装置表现出功能故障。其他NVM元件(诸如,磁性RAM和CeRAM)可以表现出相对较高耐久度(近1012),但连续操作可能会引起有限的使用寿命。因此,此类使用寿命限制对依赖于以每个推断循环更新权重的加速器架构造成显著约束。
例如,对于在100MHz下操作的IoT类加速器,具有108的耐久度的加速器可能具有1秒的使用寿命,而具有1012的耐久度的加速器在峰值使用量的情况下可能具有10000秒或4天的使用寿命。遗憾的是,此类权重可能无法从外部DRAM流式传输,并且必须是片上固定的。此外,NVM位单元遭受高写入功率以及随之的昂贵功耗,这可能会影响更新操作的有效性能。因此,写入阶段可能存在问题并且花费长时间来完成。
此类布置与具有显著更高的写入耐久度的SRAM行为不同,并且可能不适于在推断期间对权重进行重新编程。因此,整个ANN可能需要被展开到片上交叉开关中并且在推断期间是固定的。虽然该选项具有消除DRAM功率消耗的优点,但是它可能会不期望地限制可进行片上编程的ANN的最大大小。此外,该选项还会引发面积损失,因为映射较大的ANN需要容量为兆位的交叉开关的实例化。由于产出损失,这消耗了较高的面积并且使得更易于出现芯片失效。此外,实例化多个交叉开关需要多个ADC/DAC的实例化,所有这些ADC/DAC都需要被编程、修整和漂移补偿。
NVM/CeRAM元件是全部或部分地由相关电子材料形成的特定类型的随机存取存储器。CeRAM可表现出由电子关联而不是固态结构相位变化引起的(例如像由电阻式RAM装置中的细丝形成和导电引起的)突然导电或绝缘状态转变。与熔融/固化或细丝形成相比,CeRAM中的突然导体/绝缘体转变可响应于量子力学现象。
CeRAM在绝缘状态和导电状态之间的量子力学转变可根据莫特转变来理解。在莫特转变中,如果产生莫特转变条件,则材料可从绝缘状态切换到导电状态。当实现临界载流子浓度以使得满足莫特标准时,将发生莫特转变,并且状态将从高电阻/阻抗(或电容)改变为低电阻/阻抗(或电容)。
CeRAM元件的“状态”或“存储器状态”可取决于CeRAM元件的阻抗状态或导电状态。在该上下文中,“状态”或“存储器状态”意指指示值、符号、参数或条件(仅提供几个示例)的存储器装置的可检测状态。在特定具体实施中,可至少部分地基于在读取操作中在存储器装置的终端上检测到的信号来检测存储器装置的存储器状态。在另一个具体实施中,存储器装置可处于特定存储器状态以通过在“写入操作”中跨存储器装置的终端施加一个或多个信号来表示或存储特定值、符号或参数。
CeRAM元件可包括夹置在导电终端之间的材料。通过在终端之间施加具体电压和电流,材料可在前述导电状态和绝缘状态之间转变。夹置在导电终端之间的CeRAM元件的材料可通过跨具有复位电压和处于复位电流密度的复位电流的终端施加第一编程信号而处于绝缘状态,或者通过跨具有设定电压和处于设定电流密度的设定电流的终端施加第二编程信号而处于导电状态。
相对于NVM交叉开关301和302,输入数据的累加点积和沿着每个列信号线312的权重可以由等式2表示,该等式2表示简单的MAC运算。将每个输入数据值(即,电压Vi)乘以适当的权重(即,电导Gi),并且乘积被累加成结果(即,沿着BL的电流)。
BL=∑i=0..L(Gi*Vi) (等式2)
本公开的实施方案有利地将每个列信号线312的MAC运算重构成电压Vi的初始总和,将该初始总和乘以特定电导值Gk,之后是累加每个电压总和的乘积和该特定电导值Gk的MAC运算。在某些实施方案中,电导值可以由4位(K位)编号表示,该编号提供16个不同的值(K值),诸如G1、G2、G3、G4、G5、G6、G7、G8、G9、G10、G11、G12、G13、G14、G15和G16。还设想了其他位大小,诸如2位、3位等。
例如,相对于图3A,电导g1 1可以具有值G1,电导g1 2可以具有值G2,电导g1 3可以具有值G3,电导g1 4可以具有值G4,电导g2 1可以具有值G3,电导g2 2可以具有值G4,电导g2 3可以具有值G5,电导g2 4可以具有值G6,电导g3 1可以具有值G5,电导g3 2可以具有值G6,电导g3 3可以具有值G7,并且电导g3 4可以具有值G8
在该示例中,电导g1 3和g2 1具有相同的电导G3,电导g1 4和g2 2具有相同的电导G4,电导g2 3和g3 1具有相同的电导G5,电导g2 4和g3 2具有相同的电导G6。因此,可以首先对V1 7和V2 1求和,并且然后在随后的MAC运算期间乘以电导G3,可以首先对V1 8和V2 2求和,并且然后在随后的MAC运算期间乘以电导G4,可以首先对V2 7和V3 1求和,并且然后在随后的MAC运算期间乘以电导G5,可以首先对V2 8和V3 2求和,并且然后在随后的MAC运算期间乘以电导G6
另外,可以将剩余电压设置为零(0)并且然后可以最初对所有电压求和,而不是仅对要乘以特定电导值Gk的电压Vi求和。在以上示例中,对于电导G3,另外10个电压被设置为零,即V1 1、V1 2、V1 8、V2 2、V2 7、V2 8、V3 1、V3 2、V3 7和V3 8,并且然后对所有电压求和。通常,针对每个电导值重复该过程,该电导值包括要乘以单个电压的电导。在以上示例中,对于电导G1,另外11个电压被设置为零,即V1 2、V1 7、V1 8、V2 1、V2 2、V2 7、V2 8、V3 1、V3 2、V3 7和V3 8,并且然后对所有电压求和。
每个列信号线312的重构的MAC运算可以由等式3和等式4表示。
BL=G0*∑i=0..LVi+G1*∑i=0..LVi+…+G15*∑i=0..LVi (等式3)
BL=∑k=0..15Gk*∑i=0..LVi (等式4)
其中,对于每个输入数据值L,当Gk不对应于该输入数据值的适当权重时,Vi被设置成零(0)。
有利地,如由等式4所示,重构MAC运算导致更简单的具体实施,其中最初将所有输入乘数相加以有条件地将输入激活相加到一起,这取决于它们是否以具体权重值包括到MAC运算中。可以使用NVM元件来完成初始加法运算。然而,根据本公开的实施方案,这些NVM元件不需要被精确地编程。二进制权重编码(R/R)被利用来将输入激活连接至权重值,而无需精确编程。
图4A绘示了根据本公开的实施方案的重构的MAC运算的架构401的示意图。在该实施方案中,架构401包括DAC块402、交叉开关404和乘法器/缩放模块406。
通常,交叉开关404包括M×N个元件。在该实施方案中,M等于12,N等于16,并且交叉开关404包括192个元件、节点或位单元4081,1、…、40812,16,提供在12个行信号线4101、…、41012和16个列信号线4121、…、41216的每个交叉点处。每个相应的位单元4081,1、…、40812,16包括一个或多个NVM元件,由si j表示,以存储有关该位单元的状态(例如,R/R)。位单元408能够在第一阻抗状态与第二阻抗状态之间切换(R/R)。
乘法器/缩放模块406包括16个位单元4071、…、40716,该位单元具有可编程电导或阻抗g1、g2、g3、g4、g5、g6、g7、g8、g9、g10、g11、g12、g13、g14、g15和g16,该可编程电导或阻抗被配置成分别对应于16个不同的权重值w1、w2、w3、w4、w5、w6、w7、w8、w9、w10、w11、w12、w13、w14、w15和w16
输入数据,即a1 1、a1 2、a1 7、a1 8、a2 1、a2 2、a2 7、a2 8、a3 1、a3 2、a3 7和a3 8被提供给DAC块402,转换成模拟电压V1 1、v1 2、v1 7、v1 8、v2 1、v2 2、v2 7、v2 8、v3 1、v3 2、v3 7和v3 8,并且然后提供给相应的行信号线4101、…、41012。通过将位单元40811、…、408MN放置成R/R状态,首先在交叉开关404中对电压一起求和,其中NVM元件不需要精确编程。
在上述示例中,与将针对特定电导值求和的电压相关联位单元408被设置成R状态。这些位单元408包括NVM元件s1 1、s2 2、s3 3、s4 4、s5 3、s6 4、s7 5、s8 6、s9 5、s10 6、s11 7和s12 8(由图4A中的虚线圆圈识别)。剩余的NVM元件被设置成R状态,这提供了零电压值。
来自每个列信号线4121、…、41216的经求和的信号被输入到乘法器/缩放模块406的相应位单元4071、…、40716,并且MAC运算在乘法器/缩放模块406中的单个列中发生,其中所有元件都被精确地编程(总计16个元件)。
通常,转换的输入数据矩阵214包括提供给DAC块402的输入数据值的总数,一次提供输入数据值的一列。在图2D中绘示的示例中,输入数据矩阵中输入数据值的总数为300(即,12×25)。因此,输入数据信号(例如,a1 1、…、a3 8)是选自显著大于N(例如,16个)的输入信号总数(例如,300)的M个(例如,12个)输入信号的集合。
图4B绘示了根据本公开的实施方案的重构的MAC运算的架构400的示意图。在该实施方案中,架构400包括M个DAC 4031、…、403M的DAC块402、交叉开关404和乘法器/缩放模块406。
在许多实施方案中,架构400对单个滤波器202的权重进行编码,并且为该滤波器202生成单个输出特征图206。在其他实施方案中,可以为每个滤波器202提供单独的交叉开关404和乘法器/缩放模块406对,以针对该滤波器202生成输出特征图206。每个交叉开关404和乘法器/缩放模块406对可以耦接到公共DAC块402。
如图所示,交叉开关404包括M×N个元件、节点或位单元40811、…、408MN,提供在行信号线4101、4102、4103、…、410M和列信号线4121、4122、4123、…、412N的每个交叉点处。每个相应的位单元40811、…、408M、N包括一个或多个NVM元件以存储有关该位单元的状态(例如,R/R)。如上所述,位单元408能够在第一阻抗状态与第二阻抗状态之间切换(R/R)。
乘法器/缩放模块406包括位单元4071、…、407N,该位单元具有被编程以对应于权重w_0、w_1、w_k-1的可编程电导或阻抗。首先通过将位单元40811、…、408MN放置成R/R状态在交叉开关404中对诸如沿着相应行信号线4101、4102、4103、…、410M的激活a_0、a_1、…、a_M-1等输入数据一起求和,如上所述,其中NVM元件不需要精确编程。在该实施方案中,如图所示,使位单元4081,1、…、408MN之中的某些位单元在阻抗状态之间切换。来自每个列N的经求和的信号被输入到乘法器/缩放模块406的相应位单元4071、…、407N,并且最后的MAC运算在乘法器/缩放模块406中的单个列中发生,其中所有元件都被精确地编程(总计N个元件)。
图5绘示了根据本公开的实施方案的用于重构的MAC运算的低精度编程过程500的流程图。
在图4B中绘示的实施方案中,交叉开关404包括M×N个元件,并且乘法器/缩放模块406包括N个不同的权重值;K是每个权重值的位大小(即,位数),并且N=K=2k。M×N个元件是低精度(或二进制)编程的NVM元件,并且N个元件是高精度编程的NVM元件。
在框502中,使过程初始化并进行到低精度写入循环的框504。在框504中,更新交叉开关404的元件的索引。在框506中,读取有关交叉开关404的每个元件的二进制电阻或电导Gb。然后,在框508中,为交叉开关404的每个元素写入Gb。在框510处,该过程终止。在该实施方案中,M×N个元件被编程为“0”(R)或“1”(R)。从这里,乘法器/缩放模块406的元件是精密编程的。
图6绘示了根据本公开的实施方案的用于乘法器/缩放模块406的高精度编程过程600的流程图。
在框602中,使过程初始化并进行到高精度写入循环的框604。在框604中,更新乘法器/缩放模块406的元件的索引。在框606中,读取乘法器/缩放模块406的每个元件的多级电阻或电导G。高精度运算将电导或电阻率改变为非常精确的已知值。然后,在框608中,针对乘法器/缩放模块406的每个元件调谐多级G。然后,在框610中,读取多级G,并且在框612中验证正确的多级G。如果多级G正确,则过程循环回到框604,否则过程返回到框608以进一步调谐。在框614处,该过程终止。
图7绘示了根据本公开的实施方案的用于在神经网络中执行乘法-累加加速的方法的流程图700。
在框702处,使方法初始化,并且进行到框704,该框对应于图5中示出的低精度编程过程500。相对于图4B,在低精度编程过程500中,将输入激活a_0、a_1、…、a_M-1应用于求和阵列,即交叉开关404。通过低精度编程过程500由求和阵列中的NVM元件中的每个列生成经求和的信号。过程进行到框706,该框对应于图6中示出的高精度编程过程600。在高精度编程过程600中,将经求和的信号输入到具有多个NVM元件的乘法阵列,即乘法器/缩放模块406。在框706中,将乘法阵列中的每个NVM元件精确地编程为与权重成比例的电阻或电导水平,如图6的流程图中所示。在框708处,该过程终止。
说明书中对“一个实施方案”或“一实施方案”的引用意指结合该实施方案描述的特定特征、结构或特性包括在系统的至少一个实施方案中。在说明书中各处出现短语“在一个实施方案中”并不一定全部是指相同的实施方案。
在本文中参考根据本公开的实施方案的方法、设备(系统)和计算机程序产品的流程图图解和/或框图来描述本公开的实施方案。应当理解,流程图图解和/或框图的每个框以及流程图图解和/或框图中的框的组合可通过计算机可读程序指令来实施。
详细描述的一些部分(如过程)可根据对计算机存储器内的数据位的运算的算法和符号表示来呈现。可通常设想算法是导致期望的结果的步骤。这些步骤是需要物理量的物理转化或操纵的步骤。尽管并非必要,但这些量通常采取能够存储、转移、组合、比较和以其它方式操纵的电信号或磁信号的形式。主要出于常用的原因,有时已经证明将这些信号称为位、值、元素、符号、字符、术语、数字等是方便的。
然而,应当考虑到,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。除非明显通过以下讨论另外特别说明,否则应当理解,在整个说明书中,利用诸如“处理”或“运算”或“计算”或“确定”或“导出”或“显示”等的术语进行的讨论是指计算机系统或类似的电子计算装置的动作和过程,该计算机系统或类似的电子计算装置将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵并转化成类似地表示为计算机系统存储器或寄存器或其它此类信息存储、传输或显示装置内的物理量的其它数据。
本文所述的运算可由设备执行。该设备可专门为所需目的构建,或该设备可包括通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储介质中,诸如但不限于任何类型的磁盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁性卡或光学卡,或适于存储电子指令的任何类型的介质。如本文所用,计算机可读存储介质不应被解释为本身是暂时性信号,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)、或通过导线传输的电信号。
因此,本公开的实施方案和特征包括但不限于前述和以下可组合实施方案。
在一个实施方案中,一种设备包括交叉开关和乘法器。该交叉开关包括以行和列的阵列布置的多个交叉开关节点,每个交叉开关节点可编程为第一电阻水平或第二电阻水平,并且交叉开关被配置成在交叉开关节点的每个列上对多个模拟输入激活信号求和并输出多个经求和的激活信号。该乘法器耦接到交叉开关并且包括多个乘法器节点,每个乘法器节点可编程为与多个神经网络权重中的一个神经网络权重成比例的不同电导水平,并且乘法器被配置成在乘法器节点上对多个经求和的激活信号进行求和并输出模拟输出激活信号。
在该设备的另一实施方案中,每个交叉开关节点包括一个或多个非易失性元件(NVM),并且每个乘法器节点包括多个NVM。
在该设备的另一实施方案中,交叉开关包括M个行、N个列和M×N个交叉开关节点,并且乘法器包括N个乘法器节点。
在该设备的另一实施方案中,该设备还包括耦接到交叉开关的多个数模转换器(DAC),每个DAC被配置成接收数字输入激活信号并且输出多个模拟输入激活信号中的一个。
在该设备的另一实施方案中,基于神经网络权重的位大小k而将每个乘法器节点中的每个非易失性存储器元件编程为不同的电导水平。
在该设备的另一实施方案中,电导水平的总数等于2k
在一个实施方案中,一种方法包括在包括以列布置的多个非易失性存储器元件的求和阵列中至少部分地基于多个输入信号而生成每个列的经求和的信号,基于神经网络的权重而使求和阵列中的每个非易失性存储器元件被编程为高电阻状态或低电阻状态;以及在包括多个非易失性存储器元件的乘法阵列中至少部分地基于来自求和阵列的经求和的信号而生成输出信号,基于神经网络的权重而使乘法阵列中的每个非易失性存储器元件被编程为不同的电导水平。
在该方法的另一实施方案中,求和阵列中的每个非易失性存储器元件被配置成接收输入信号并且基于编程的电阻状态而将输入信号添加到有关相应列的经求和的信号;乘法阵列中的每个非易失性存储器元件被配置成从求和阵列的不同列接收经求和的信号,并且基于经编程的电导水平而调整该经求和的信号以生成经调整的经求和的信号;并且输出信号是经调整的经求和的信号的组合。
在该方法的另一实施方案中,求和阵列中的每个非易失性存储器元件被配置成当被编程为低电阻状态时将输入信号添加到相应列的经求和的信号,并且当被编程为高电阻状态时不将输入信号添加到相应列的经求和的信号。
在该方法的另一实施方案中,求和阵列是具有M个行、N个列和M×N个非易失性存储器元件的交叉开关,并且其中乘法阵列具有N个元件。
在该方法的另一实施方案中,多个输入信号是选自显著大于N的输入信号的总数的M个输入信号的集合。
在该方法的另一实施方案中,基于神经网络的权重的位大小k而将该乘法阵列中的每个非易失性存储器元件编程为不同的电导水平。
在该方法的另一实施方案中,电导水平的总数等于2k
在一个实施方案中,另一设备包括求和阵列,该求和阵列包括以列布置的多个非易失性存储器元件,基于神经网络的权重而将求和阵列中的每个非易失性存储器元件编程为高电阻状态或低电阻状态,该求和阵列被配置成至少部分地基于多个输入信号而生成每个列的经求和的信号;和乘法阵列,该乘法阵列耦接到求和阵列,该求和阵列包括多个非易失性存储器元件,基于神经网络的权重而将该乘法阵列中的每个非易失性存储器元件编程为不同电导水平,该乘法阵列被配置成至少部分地基于来自求和阵列的经求和的信号而生成输出信号。
在该设备的另一实施方案中,求和阵列中的每个非易失性存储器元件被配置成接收输入信号并且基于编程的电阻状态而将输入信号添加到有关相应列的经求和的信号;乘法阵列中的每个非易失性存储器元件被配置成从求和阵列的不同列接收经求和的信号,并且基于经编程的电导水平而调整该经求和的信号以生成经调整的经求和的信号;并且输出信号是经调整的经求和的信号的组合。
在该设备的另一实施方案中,求和阵列中的每个非易失性存储器元件被配置成当被编程为低电阻状态时将输入信号添加到相应列的经求和的信号,并且当被编程为高电阻状态时不将输入信号添加到相应列的经求和的信号。
在该设备的另一实施方案中,求和阵列是具有M个行、N个列和M×N个非易失性存储器元件的交叉开关,并且其中乘法阵列具有N个元件。
在该设备的另一实施方案中,多个输入信号是选自显著大于N的输入信号的总数的M个输入信号的集合。
在该设备的另一实施方案中,基于神经网络的权重的位大小k而将该乘法阵列中的每个非易失性存储器元件编程为不同的电导水平。
在该设备的另一实施方案中,电导水平的总数等于2k
应当理解,本文所用的示例和对应图仅用于说明性目的。在不脱离本文表达的原理的情况下,可使用不同的配置和术语。例如,在不脱离这些原理的情况下,可以不同的连接添加、删除、修改或布置部件和模块。
在本公开的实施方案的以下详细描述中,阐述了众多具体细节以便提供对本公开的更加透彻的理解。然而,对于本领域的技术人员显而易见的是,可在没有这些具体细节的情况下实践本公开。在其它情况下,未详细描述熟知的特征以避免不必要地使本说明书复杂化。
应当理解,本文所用的术语是出于描述根据本公开的各种实施方案的目的,并且不旨在是限制性的。如本文所用,术语“一个(a/an)”被定义为一个或多于一个。如本文所用,术语“多个”被定义为两个或多于两个。如本文所用,术语“另一个”被定义为至少第二个或更多个。如本文所用,术语“包括”和/或“具有”被定义为包括(即,开放式语言)。如本文所用,术语“耦接”被定义为连接,但未必直接地并且未必机械地连接。术语“提供”在本文中以其最广泛的含义定义,例如,整体或者同时或在一定时段内以多个部分开始成为/变为物理存在、变得可用和/或向某人或某物供应。
如本文所用,术语“约”、“大约”适用于所有数值,而不管这些数值是否是明确指示的。此类术语通常是指本领域技术人员将认为等效于所叙述值(即,具有相同功能或结果)的数字范围。这些术语可包括四舍五入至最接近的有效数的数字。在该文档中,对术语“纵向”的任何引用应当理解为意指在对应于个人计算装置从一个终端端部到相反终端端部的伸长方向的方向上。
根据前述内容,公开了一种用于执行乘法-累加加速的方法和架构。因此,已经详细地并且参考本公开的实施方案描述了本申请的公开内容,将显而易见的是,在不脱离如下所附权利要求书中限定的范围的情况下,修改和变型是可能的。

Claims (20)

1.一种设备,所述设备包括:
交叉开关,所述交叉开关包括以行和列的阵列布置的多个交叉开关节点,每个交叉开关节点可编程为第一电阻水平或第二电阻水平,所述交叉开关被配置成在交叉开关节点的每个列上对多个模拟输入激活信号求和并输出多个经求和的激活信号;和
乘法器,所述乘法器耦接到所述交叉开关,所述乘法器包括多个乘法器节点,每个乘法器节点可编程为与多个神经网络权重中的一个神经网络权重成比例的不同电导水平,所述乘法器被配置成在所述乘法器节点上对所述多个经求和的激活信号进行求和并输出模拟输出激活信号。
2.根据权利要求1所述的设备,其中每个交叉开关节点包括一个或多个非易失性元件(NVM),并且每个乘法器节点包括多个NVM。
3.根据权利要求2所述的设备,其中所述交叉开关包括M个行、N个列和M×N个交叉开关节点,并且所述乘法器包括N个乘法器节点。
4.根据权利要求1所述的设备,所述设备还包括:
多个数模转换器(DAC),所述多个DAC耦接到所述交叉开关,每个DAC被配置成接收数字输入激活信号并且输出所述多个模拟输入激活信号中的一个模拟输入激活信号。
5.根据权利要求1所述的设备,其中基于所述神经网络权重的位大小k而将每个乘法器节点中的每个非易失性存储器元件编程为所述不同的电导水平。
6.根据权利要求5所述的设备,其中电导水平的总数等于2k
7.一种用于执行重构的乘法与累加运算的方法,所述方法包括:
在包括以列布置的多个非易失性存储器元件的求和阵列中至少部分地基于多个输入信号而生成每个列的经求和的信号,基于神经网络的权重而使所述求和阵列中的每个非易失性存储器元件被编程为高电阻状态或低电阻状态;以及
在包括多个非易失性存储器元件的乘法阵列中至少部分地基于来自所述求和阵列的所述经求和的信号而生成输出信号,基于所述神经网络的所述权重而使所述乘法阵列中的每个非易失性存储器元件被编程为不同的电导水平。
8.根据权利要求7所述的方法,其中:
所述求和阵列中的每个非易失性存储器元件被配置成接收输入信号并且基于经编程的所述电阻状态而将所述输入信号添加到相应列的所述经求和的信号;
所述乘法阵列中的每个非易失性存储器元件被配置成从所述求和阵列的不同列接收经求和的信号,并且基于经编程的所述电导水平而调整所述经求和的信号以生成经调整的经求和的信号;并且
所述输出信号是所述经调整的经求和的信号的组合。
9.根据权利要求8所述的方法,其中所述求和阵列中的每个非易失性存储器元件被配置成当被编程为所述低电阻状态时将所述输入信号添加到相应列的所述经求和的信号,并且当被编程为所述高电阻状态时不将所述输入信号添加到所述相应列的所述经求和的信号。
10.根据权利要求9所述的方法,其中所述求和阵列是具有M个行、N个列和M×N个非易失性存储器元件的交叉开关,并且其中所述乘法阵列具有N个元件。
11.根据权利要求10所述的方法,其中所述多个输入信号是选自显著大于N的输入信号的总数的M个输入信号的集合。
12.根据权利要求7所述的方法,其中基于所述神经网络的所述权重的位大小k而将所述乘法阵列中的每个非易失性存储器元件编程为所述不同的电导水平。
13.根据权利要求12所述的方法,其中电导水平的总数等于2k
14.一种设备,所述设备包括:
求和阵列,所述求和阵列包括以列布置的多个非易失性存储器元件,基于神经网络的权重而将所述求和阵列中的每个非易失性存储器元件编程为高电阻状态或低电阻状态,所述求和阵列被配置成至少部分地基于多个输入信号而生成每个列的经求和的信号;和
乘法阵列,所述乘法阵列耦接到所述求和阵列,所述乘法阵列包括多个非易失性存储器元件,基于所述神经网络的所述权重而将所述乘法阵列中的每个非易失性存储器元件编程为不同的电导水平,所述乘法阵列被配置成至少部分地基于来自所述求和阵列的所述经求和的信号而生成输出信号。
15.根据权利要求14所述的设备,其中:
所述求和阵列中的每个非易失性存储器元件被配置成接收输入信号并且基于经编程的所述电阻状态而将所述输入信号添加到相应列的所述经求和的信号;
所述乘法阵列中的每个非易失性存储器元件被配置成从所述求和阵列的不同列接收经求和的信号,并且基于经编程的所述电导水平而调整所述经求和的信号以生成经调整的经求和的信号;并且
所述输出信号是所述经调整的经求和的信号的组合。
16.根据权利要求15所述的设备,其中所述求和阵列中的每个非易失性存储器元件被配置成当被编程为所述低电阻状态时将所述输入信号添加到所述相应列的所述经求和的信号,并且当被编程为所述高电阻状态时不将所述输入信号添加到所述相应列的所述经求和的信号。
17.根据权利要求16所述的设备,其中所述求和阵列是具有M个行、N个列和M×N个非易失性存储器元件的交叉开关,并且其中所述乘法阵列具有N个元件。
18.根据权利要求17所述的设备,其中所述多个输入信号是选自显著大于N的输入信号的总数的M个输入信号的集合。
19.根据权利要求14所述的设备,其中基于所述神经网络的所述权重的位大小k而将所述乘法阵列中的每个非易失性存储器元件编程为所述不同的电导水平。
20.根据权利要求19所述的设备,其中电导水平的总数等于2k
CN202080061121.0A 2019-08-29 2020-08-27 重构mac运算 Pending CN114365078A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/556,101 2019-08-29
US16/556,101 US20210064379A1 (en) 2019-08-29 2019-08-29 Refactoring MAC Computations for Reduced Programming Steps
PCT/GB2020/052053 WO2021038228A1 (en) 2019-08-29 2020-08-27 Refactoring mac operations

Publications (1)

Publication Number Publication Date
CN114365078A true CN114365078A (zh) 2022-04-15

Family

ID=70050154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080061121.0A Pending CN114365078A (zh) 2019-08-29 2020-08-27 重构mac运算

Country Status (5)

Country Link
US (2) US20210064379A1 (zh)
EP (1) EP4022426A1 (zh)
CN (1) CN114365078A (zh)
TW (1) TW202111703A (zh)
WO (2) WO2021038182A2 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11393516B2 (en) * 2020-10-19 2022-07-19 Western Digital Technologies, Inc. SOT-based spin torque oscillators for oscillatory neural networks
US20220309328A1 (en) * 2021-03-29 2022-09-29 Infineon Technologies LLC Compute-in-memory devices, systems and methods of operation thereof
US20230022516A1 (en) * 2021-07-23 2023-01-26 Taiwan Semiconductor Manufacturing Company, Ltd. Compute-in-memory systems and methods with configurable input and summing units

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150067273A1 (en) 2013-08-30 2015-03-05 Microsoft Corporation Computation hardware with high-bandwidth memory interface
CN110383282A (zh) 2017-02-07 2019-10-25 密执安州立大学董事会 用于混合信号计算的系统和方法
US20190042915A1 (en) 2018-03-30 2019-02-07 Intel Corporation Procedural neural network synaptic connection modes
US11586898B2 (en) 2019-01-29 2023-02-21 Silicon Storage Technology, Inc. Precision programming circuit for analog neural memory in deep learning artificial neural network
KR20230090849A (ko) * 2021-12-15 2023-06-22 삼성전자주식회사 뉴럴 네트워크 장치 및 이를 포함하는 전자 시스템

Also Published As

Publication number Publication date
US20210064379A1 (en) 2021-03-04
US20220179658A1 (en) 2022-06-09
WO2021038228A1 (en) 2021-03-04
WO2021038182A2 (en) 2021-03-04
TW202111703A (zh) 2021-03-16
EP4022426A1 (en) 2022-07-06
US11922169B2 (en) 2024-03-05

Similar Documents

Publication Publication Date Title
EP3627401B1 (en) Method and device for training neural network
CN109416760B (zh) 人工神经网络
US10755170B2 (en) Resistive processing unit with hysteretic updates for neural network training
US11922169B2 (en) Refactoring mac operations
US11886378B2 (en) Computer architecture with resistive processing units
US20190122105A1 (en) Training of artificial neural networks
KR102672586B1 (ko) 인공신경망의 훈련 방법 및 장치
US11544540B2 (en) Systems and methods for neural network training and deployment for hardware accelerators
US20200117986A1 (en) Efficient processing of convolutional neural network layers using analog-memory-based hardware
CN103282919A (zh) 强化学习的电子突触
Sun et al. Computing-in-memory with SRAM and RRAM for binary neural networks
CN111478703B (zh) 基于忆阻交叉阵列的处理电路及输出电流的补偿方法
CN113924581A (zh) 用于存储器内计算的无晶体管全忆阻器神经形态电路
CN114026573A (zh) 基于非易失性存储器的紧凑型混合信号乘法累加引擎
Musisi-Nkambwe et al. The viability of analog-based accelerators for neuromorphic computing: a survey
CN112488308A (zh) 基于动态忆阻器的储备池计算系统
CN113837371A (zh) 用于实现神经网络的神经形态装置和方法
Nikam et al. Long short-term memory implementation exploiting passive RRAM crossbar array
Ananthakrishnan et al. All-passive hardware implementation of multilayer perceptron classifiers
US11886972B2 (en) Non-volatile memory accelerator for artificial neural networks
US11556770B2 (en) Auto weight scaling for RPUs
CN113222131B (zh) 基于1t1r的可实现带符号权重系数的突触阵列电路
Dorzhigulov et al. Spiking CMOS-NVM mixed-signal neuromorphic ConvNet with circuit-and training-optimized temporal subsampling
Halawani et al. A re-configurable memristor array structure for in-memory computing applications
CN116523011B (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