掌桥专利:专业的专利平台
掌桥专利
首页

功率高效的近存储器模拟乘法和累加(MAC)

文献发布时间:2023-06-19 16:08:01



本专利申请要求于2019年12月19日提交的题为“POWER EFFICIENT NEAR MEMORYANALOG MULTIPLY-AND-ACCUMULATE(MAC)”的非临时申请No.16/721,819的优先权,该申请已转让给本申请的受让人,并且在本文中通过引用被明确地并入。

技术领域

本申请涉及乘法和累加(multiply-and-accumulate,MAC)电路,更具体地,涉及一种功率高效的近存储器模拟MAC。

背景技术

数据的计算机处理通常使用冯诺依曼(Von Neumann)架构,其中数据从存储器中被检索以在算术和逻辑单元中进行处理。在诸如机器学习的计算密集型应用中,来自和去往存储器的数据流成为处理速度的瓶颈。为了解决这种数据移动瓶颈,已经开发了近存储器架构,其中数据处理硬件邻近存储器单元。

发明内容

根据本发明的第一方面,提供了一种近存储器系统,包括:存储器单元阵列,被布置成多个行和多个列,其中每一行被配置为存储用于机器学习应用中的层的多个滤波器权重;以及乘法和累加(MAC)电路,被耦合到每一列,该MAC电路被配置为将来自行中的一存取行的多个滤波器权重与对应的多个输入相乘以提供多个乘积,该MAC电路还被配置为对多个乘积求和以提供层的输出。

根据本发明的第二方面,提供了一种近存储器系统,包括:多个存储器单元阵列,其中每个阵列布置成多个行和列,并且其中每个行还被配置为存储用于机器学习应用中的层的多个滤波器权重,并且其中每个存储器单元阵列被细分为多个子阵列;以及多个乘法和累加(MAC)电路,该多个MAC电路对应于多个子阵列,每个MAC电路耦合到对应子阵列中的每一列,每个MAC电路被配置为将来自对应子阵列中的行中的一存取行的多个滤波器权重与对应的多个输入相乘以提供多个乘积,该MAC电路还被配置为对多个乘积求和以提供总和,并且其中每个阵列还包括加法器以将来自阵列的MAC电路的总和相加以形成阵列的输出。

根据本发明的第三方面,提供了一种用于近存储器系统的方法,包括:断言用于存储器单元行的字线,以检索针对用于机器学习应用的层中的输出神经元的多个滤波器权重;在被耦合到存储器单元行的乘法和累加电路中,将多个滤波器权重与多个输入神经元相乘以形成多个乘积;以及对多个乘积求和以计算输出神经元的值。

通过以下详细描述可以更好地理解这些和其他有利特征。

附图说明

图1图示了用于神经网络的常规全连接层。

图2A图示了根据本公开的一方面的具有数字乘法和累加(MAC)电路的近存储器系统。

图2B图示了根据本公开的一方面的用于近存储器系统的位单元和解码器。

图3图示了根据本公开的一方面的分段式近存储器系统。

图4图示了根据本公开的一方面的具有模拟MAC电路的近存储器系统,其中滤波器权重和输入神经元权重都是单位(single-bit)信号。

图5图示了根据本公开的一方面的具有模拟MAC电路的近存储器系统,其中滤波器权重是单位权重并且输入神经元权重是多位(multi-bit)权重。

图6图示了根据本公开的一方面的具有模拟MAC电路的近存储器系统,其中滤波器权重和输入神经元权重都是多位权重。

图7是根据本公开的一方面的用于近存储器系统的示例性操作方法的流程图。

图8图示了各自包含根据本公开的一方面的近存储器系统的一些示例性电子系统。

通过参考下面的详细描述,可以最好地理解本公开的实施例及其优势。应当理解,相同的附图标记用于标识一个或多个附图中示出的相同元件。

具体实施方式

一种近存储器架构被提供有乘法和累加(MAC)电路,以用于将来自机器学习应用中的前一层的多个输入神经元与多个滤波器权重相乘以形成多个乘积。MAC电路对乘积求和以计算针对机器学习应用中的层(例如,全连接层)的输出神经元。虽然以下讨论针对机器学习实施例,但是应当理解,可以使用具有如本文中所公开的MAC电路的近存储器来计算其他类型的输入向量与滤波器权重的相乘。图1示出了具有M个输出神经元的示例全连接层100。M个输出神经元的范围从第0个输出神经元到第(M-1)个输出神经元。前一层105包括从第0个输入神经元到第(N-1)个输入神经元的N个输入神经元。通常,整数N基本上大于整数M。为了清楚地说明,针对每个层仅示出了前两个和最后一个神经元。

全连接层100中的每个输出神经元接收前一层105中的每个输入神经元的加权版本。例如,全连接层100中的输入神经元0接收第0个输入神经元的加权版本、第一输入神经元的加权版本、以此类推至第(N-1)个输入神经元的加权版本。因此,全连接层100中的每个输出神经元与用于对来自前一层105的输入神经元进行加权的N个权重相关联。如本文中所使用的,用于全连接层100中的输出神经元的权重被共同表示为滤波器。因此,每个权重也被表示为滤波器权重。本文公开了一种具有位单元阵列的存储器,用于存储对应的滤波器。位单元阵列按行和列来布置。如果每个滤波器权重是一位滤波器权重,则每一行可以与用于输出神经元的滤波器相对应。例如,假设有128个具有一位滤波器权重的输出神经元,则位单元阵列将具有128行。在这样的实施例中,位单元阵列的列数对应于输入神经元的数目。在备选实施例中,滤波器权重可以是多位滤波器权重。因此,在这种多位滤波器权重实施例中,每个滤波器将对应于一组行。每组行中的行数与针对多位滤波器权重实施例的宽度(位数)相对应。在每组行中,每一行将与多位权重中的一位相对应,如本文中将进一步解释的。

为了计算针对输出神经元的值,读取操作发生在一位滤波器权重实施例中的对应行上(或顺序地跨在多位权重实施例中的对应组的行)以存取所存储的滤波器权重。然后将被存取的所存储的滤波器权重乘以对应的输入神经元。来自所存储的滤波器权重与其对应的输入神经元的所有乘法的乘积被求和以形成输出神经元。虽然可以使用存储器中计算位单元来执行所存储的滤波器权重与对应的输入神经元的乘法,但是应注意,在机器学习应用中,全连接层具有大多数权重。存储器中计算位单元明显大于传统的六晶体管(6T)静态随机存取存储器(SRAM)位单元。因此,在用于实现全连接层的存储器中计算架构中存储滤波器权重将需要相对大量的管芯空间(例如,大约是常规6T位单元阵列所需的四倍)。此外,用于存储器中计算实现的读取和写入能量相对较高。

因此,公开了一种在一些实施例中包括按行和列而布置的用于存储滤波器权重的6T位单元阵列的近存储器架构。这些行对应于滤波器,使得针对每个输出神经元存在一行(或在多位滤波器权重实施例中的一组行)位单元。在读取操作中一次存取一行位单元以检索所存储的滤波器权重,以便计算对应的输出神经元。具体地,每一位单元行具有其自己的字线,而每一位单元列具有其由位线和互补位线形成的位线对。为了计算输出神经元,断言用于字线的电压。然后根据在所访问的位单元中存储的权重对每一列的位线对进行充电。为了执行如由列的带电位线对所表示的该所存储的权重的乘法,每一列与MAC电路相关联,该MAC电路执行所存储的权重与对应的输入神经元的乘法。MAC电路对所得乘积求和以完成针对输出神经元的计算。

图2A中示出了用于一位滤波器权重实施例的示例近存储器系统200。位单元阵列(例如,六晶体管(6T)位单元)以行和列来布置。每一行与用于输出神经元的滤波器相对应。换言之,跨行的位单元存储用于输出神经元的滤波器权重。每一行在一对一的基础上对应于输出神经元。为了简洁起见,本文也将每个输出神经元表示为输出。类似地,为了简洁起见,本文也将每个输入神经元表示为输入。由于针对每个输入存在滤波器权重,每个位单元列在一对一的基础上对应于一个输入。为了清楚地说明,在图2A中仅标出了第一位单元行(滤波器1)和第二位单元行(滤波器2)。每个位单元列具有由位线(BL)和补位线(BLB)形成的位线对。MAC电路205计算用于输出的滤波器权重与对应输入的乘法。在该乘法中,第一输入乘以第一滤波器权重以形成第一乘积,第二输入乘以第二滤波器权重以形成第二乘积,以此类推。MAC电路对来自被存取行的所得乘积求和,以计算全连接层的对应输出。该计算在逐个滤波器的基础(相当于逐个输出的基础)上进行。为了存取一行被存储的滤波器权重,断言针对该行的字线(未示出)。然后,用于每一列的位线利用用于该位单元的被存储的滤波器权重在该列与所存取的行的相交处被充电。为了根据被存储的滤波器权重来自带电位线对来做出位决策,MAC电路205包括用于每一列的感测放大器(SA)。然而,应注意,在备选实施例中可以删除感测放大器。例如,在备选实施例中,感测放大器可以由锁存器替换。此外,MAC电路205还包括逻辑门,诸如用于每一列的异或非(XNOR)逻辑门。每一列的XNOR门从该列的感测放大器接收被存储的滤波器权重。在备选实施例中,可以使用异或(XOR)门或其他合适的逻辑门来执行二进制乘法。在没有感测放大器的一些实施例中,每个XNOR门直接接收真位线(或补位线)。

为了说明的目的,近存储器系统200仅包括八个位单元列。为了清楚地说明,在图2A中仅注明了第一列210。因此,这八个列与范围从输入神经元IN1到输入神经元IN8的八个输入神经元相对应。每个列的XNOR门对该列的被存储的滤波器权重与该列的输入神经元进行XNOR,以计算针对二进制乘法的乘积。MAC电路205包括数字加法器,以将乘积(XNOR门输出信号)相加,来完成针对被存取行的输出神经元的计算。因此,MAC电路205将循序地计算各种输出神经元。这产生了一些时延,但是由于全连接层的输出神经元的数目通常相对较小,所以这是可管理的。

图2B更详细地示出了用于近存储器系统200的示例位单元220。在一些实施例中,所存储的滤波器权重由交叉耦合的反相器对215锁存。每个反相器可以由p型金属氧化物半导体(PMOS)晶体管和n型金属氧化物半导体(NMOS)晶体管的串联组合形成。针对反相器中的一个反相器的Q输出节点提供一位滤波器权重。相反,针对反相器中的剩余反相器的QB输出节点提供一位滤波器权重的补码。在用于存取包括位单元220的行的读取操作期间,断言用于字线(WL)的字线电压。字线WL驱动NMOS存取晶体管M1和NMOS存取晶体管M2的栅极。存取晶体管M1耦合在Q输出节点和用于包括位单元220的列的位线BL之间。类似地,存取晶体管M2耦合在QB输出节点与用于该列的补位线BLB之间。当字线WL被断言时,存取晶体管M1和M2接通,使得位线中的一个位线被放电,同时另一个保持其预充电状态。由于交叉耦合的反相器215需要四个晶体管,用于位单元220的晶体管的总数是六个晶体管,这对于SRAM位单元是常规的。诸如解码器225的控制器控制字线WL的断言。控制器的该断言是用于近存储器系统200的字线的循序断言的部分。例如,控制器可以断言用于第一行的字线以计算全连接层的第一输出,然后断言用于第二行的字线以计算全连接层的第二输出,依此类推。

尽管输出神经元的数目相对较小,但用于近存储器系统200的处理能量可能仍然是显著的。例如,假设有128个位单元行。跨如此多的行延伸的位线可以具有大量的电容。利用这种升高的位线电容,由于位线对中的位线在读操作期间被放电,在针对被存储的滤波器权重的读取操作之后对位线对的充电需要将对应量的电荷放电到接地。为了减少时延并降低功耗,可以如图3所示对用于近存储器系统300的位单元阵列进行分段。例如,假设图2的近存储器系统200具有128个位单元行。再次参考图1,滤波器存储用于输出神经元的权重。例如,输出神经元0需要N个滤波器权重来乘以N个对应的输入神经元。因此,针对第零个输入神经元存在第零个滤波器权重,针对第一个输入神经元存在第一个滤波器权重,依次类推。每个输入神经元乘以其对应的滤波器权重以形成乘积。对应的输出神经元是所有所得乘积的总和。没有分段,针对128个滤波器和1024个输入神经元的阵列将是128行和1024列的阵列。

这种阵列在近存储器系统300中被分段成第一阵列305、第二阵列310、第三阵列315和第四阵列320。由于分段,在近存储器系统300中将应形成未被分段实施例中的滤波器的128个位单元的列细分成第一阵列305中的32个位单元的列、第二阵列310中的32个位单元的对应列、第三阵列315中的32个位单元的对应列以及第四阵列320中的32个位单元的对应列。应当理解,分段在备选实施例中可以变化。每个阵列包括以1024列布置的32个位单元行。在一些实施例中,半导体制造工艺不能支持跨这种相对大量的列而延伸的字线。因此,每个位单元阵列可以被细分成32行×128列(32×128)的子阵列。由于存在1024列,对于每个阵列,在近存储器300中每个位单元阵列存在八个子阵列,但是应当理解,在备选实施例中,列的数目和行的数目可以变化。每个子阵列具有其自己的MAC电路。由于将阵列划分成子阵列,来自阵列的每个MAC电路的累加输出由加法器(ADDER)求和,以生成全连接层的输出。

应当理解,可以使用任何合适的存储器技术来构造图3中所示的位单元的分段阵列。例如,阵列305、310、315和320可以是SRAM位单元、铁电RAM(FRAM)位单元、磁性RAM(MRAM)位单元、电阻式RAM(RRAM)位单元或相变存储器(PCM)位单元的阵列。

所得到的阵列(诸如阵列305、310、315和320)的分段在减少时延方面是非常有利的。在每个阵列内,如由诸如关于近存储器系统200所论述的控制器控制而循序地发生对行的处理。但是近存储器系统300中的分段导致同时处理四行,以便比近存储器系统200快四倍。更一般地,如果来自分段的阵列的数目是N,则全连接层的计算将比没有分段的可比较计算快N倍。另外,由于与诸如近存储器系统200的非分段架构相比,用于每个阵列的位线跨数目减少的行而延伸,用于存取行的读取能量因分段而减少。应当理解,在备选实施例中,每个加法器的输出可以由量化器(未示出)量化。因为MAC电路在位单元阵列之外,MAC电路容易被修改以支持多位滤波器权重和多位输入神经元。

前述实施例中的MAC电路中的数字处理消耗功率。为了减少此功率消耗,本文公开了利用模拟MAC电路的近存储器系统。在图4中示出了具有模拟MAC电路405的一位输入神经元近存储器系统400。如针对近存储器系统200或300所讨论的,位单元(诸如6T位单元)阵列按行和列来布置。如关于数字MAC电路所讨论的,模拟MAC电路405包括用于每一列的逻辑门(诸如XNOR门)和感测放大器(SA)。模拟MAC电路405包括用于每一列的电容器C,而不是使用数字加法器。每一列的XNOR门驱动对应电容器C的第一板。每个电容器C的第二板被耦合到模数转换器(ADC)的输入。在MAC操作之前,通过将第二板耦合到电源节点同时将第一板接地来对每个第二板充电到电源电压。在一行被存取之后,每个XNOR门的输出将接地或充电到电源电压,这取决于其二进制乘法的结果。在XNOR门驱动第一板的同时,第二板保持被耦合到电源节点。因此,每个电容器C基于对应的XNOR操作被放电或保持充电。模数转换器(ADC)然后转换为电容器C保留的累积电荷以提供输出神经元值。

返回参考近存储器系统200和300,应当理解,每个MAC电路可以被实现为模拟MAC电路405。所得到的模拟MAC操作是非常有利的,因为MAC功率消耗在数字MAC电路实施例中占主导地位。但是模拟MAC电路405的使用大幅降低了关于可比较的数字MAC实现的功率消耗。

图5中示出了用于单位滤波器权重和多位输入神经元层的模拟MAC电路500。为了清楚地说明,图5中未示出存储器阵列,因为它如针对近存储器系统200、300和400所讨论的以行和列来布置。模拟MAC电路500类似于模拟MAC电路405,其中每一列与感测放大器(SA)、XNOR门和电容器C相关联。每个XNOR门以诸如从最低有效位到最高有效位增加的幅度逐位地循序处理其多位输入神经元。然后,循序累加器505将多位输入神经元的循序处理的结果与对应的滤波器权重相加。在由循序累加器505进行的循序累加中,来自多位输入神经元的每个位的电压根据其重要性被累加。例如,假设多位输入神经元是三位宽。每一位导致电容器C的第二板上的电压,该电压由循序累加器505根据该位的有效性来缩放。然后,循序累加器505将所得电压相加,以提供由ADC转换为输出神经元的数字值的累加电压。

滤波器权重本身可以是多位滤波器权重。图6中示出了用于多位滤波器权重和多位输入神经元层的模拟MAC电路600。为清楚地说明,图6中未示出位单元阵列,但如针对近存储器系统200、300和400所讨论的,位单元阵列按行和列来布置。因为滤波器权重是多位的,单个滤波器权重需要用于其位的一组位单元行。根据针对多位滤波器权重的一组行中的行的重要性(诸如从最低有效位到最高有效位)来顺序地断言行。对于多位权重中的每一位,模拟MAC电路600如关于模拟MAC电路500所讨论的那样运行。因此,在模拟MAC电路600中存在用于每一列的感测放大器SA、XNOR门和电容器C以及循序累加器505。在一行被断言的同时,来自多位输入神经元的位由每个XNOR门利用来自多位滤波器权重的位顺序地处理,并且结果由顺序累加器505累加,如针对模拟MAC电路500所类似讨论的。第二循序累加器605(其也可以被指定为权重求和器605)在针对多位权重的一组行中的每一行被存取之后累加结果。累加是权重求和器605根据针对多位权重中的每一位的重要性来缩放以提供输出神经元值。

图7中示出了近存储器系统方法的流程图。该方法包括动作700:断言用于存储器单元行的字线以检索针对用于机器学习应用的全连接层中的输出神经元的多个滤波器权重。用于近存储器系统200和300中的任一的字线的断言是动作700的示例。类似地,用于包括模拟MAC电路400、500和600中的任何电路的近存储器系统的字线的断言是动作700的示例。该方法还包括动作705:在被耦合到该存储器单元行的乘法和累加电路中,将多个滤波器权重与来自机器学习应用中的前一层的多个输入神经元相乘,以形成多个乘积。本文中所公开的MAC逻辑中的乘法是动作705的示例。最后,该方法包括对多个乘积求和以计算针对输出神经元的值的动作710。本文中所公开的MAC电路对多个乘积求和是动作710的示例。

本文中所公开的近存储器系统可以有利地被并入任何合适的移动设备或电子系统中。例如,如图8所示,蜂窝电话800、膝上型计算机805和平板PC810都可以包括根据本公开的近存储器系统。其他示例性电子系统(诸如,音乐播放器,视频播放器,通信设备和个人计算机)也可以被配置有根据本公开而构造的近存储器系统。

应当理解,在不脱离本发明的范围的情况下,可以对本公开的设备的材料、装置、配置和使用方法进行许多修改、替换和变化。鉴于此,本公开的范围不应限于本文中所示出和描述的特定实施例的范围,因为它们是仅通过其一些示例的方式,而是应与下文所附的权利要求及其功能等校的范围完全相称。

技术分类

06120114712948