通过基于电容计算进行传输中大规模并行矩阵乘法的电路、系统与方法

摘要: 本发明总体上涉及人工智能(ai)的硬件加速。更具体地说,本发明涉及一种混合信号电容存内计算(computing-in-memory,cim)架构,使用幅度-时间...
通过基于电容计算进行传输中大规模并行矩阵乘法的电路、系统与方法

本发明总体上涉及人工智能(ai)的硬件加速。更具体地说,本发明涉及一种混合信号电容存内计算(computing-in-memory, cim)架构,使用幅度-时间编码和基于时间的解码来进行传输中的并行矩阵乘法。

背景技术:

1、人工智能的快速发展加剧了对高能效硬件加速器的需求,这是因为深度学习算法带来了计算挑战,而传统的冯.诺依曼架构也存在固有局限。尽管数字加速器已经通过专用处理单元和数据流优化不断演进,但其仍然面临一些内在约束,例如较高的数据搬移成本以及cmos缩放极限。模拟存内计算(computing-in-memory;cim)方案利用忆阻器、忆容器以及相变存储器(phase-change memory;pcm)器件等新型非易失性器件,能够通过直接在存储阵列内执行计算来提供更高的能效。然而,这些模拟方案存在器件非理想性的问题,例如电导漂移和随机性,以及外围电路开销问题,特别是高功耗的模数转换器(analog-to-digital converters;adc)和ir压降问题。

2、因此,需要一种电容计算加速器,其能够利用无源电荷动态来执行低功耗、高吞吐量的矩阵计算,同时减少对模数转换的依赖。

技术实现思路

1、本发明的一个目的在于解决上述技术问题。

2、在本发明中,提出了一种基于电容计算的矩阵乘法加速器,称为wirelightning。wirelightning是一种混合信号架构,其利用电容器的固有电荷动态来实现模拟加速。不同于将权重编码在可编程器件中的模拟交叉阵列,本发明通过精确控制的尖峰幅度来表示矩阵元素,并利用无源电容器的电荷积累和可预测衰减来执行模拟乘加(multiply-accumulate;mac)运算。提出的架构解决了现有模拟加速器的两个关键挑战:

3、(1)器件非理想性:在本发明的技术方案中,通过将权重瞬态地编码在尖峰时序中,而不是编码在持久器件状态中,可减少权重漂移和随机切换,其范围归一化均方根误差(rmse)和归一化误差分别降低至基于忆阻器和基于pcm的加速器的69.2%和77.1%。

4、(2)adc瓶颈:本发明采用了基于时间的解码方案,以高效的时钟驱动阈值检测代替传统高功耗adc,与其他架构相比,adc能耗分别降低了98.8%和99.9%。

5、在本发明中,关键创新包括幅度-时间双重编码。幅度-时间双重编码可利用电容器的电荷动态实现恒定时间的点积运算。本发明还提供了使用可扩展电容阵列的行并行无源计算。可扩展电容阵列在专用核心上并发处理矩阵的各行,并实现同时点积计算,以提高吞吐量。本发明还提供了低比特量化向量中的公共值复用。公共值复用可降低与矩阵大小无关的乘法复杂度,同时减少尖峰数量和计算误差。

6、在现有技术中,已经利用忆阻器、忆容器和pcm器件等实现矩阵-向量乘法(matrix-vector multiplication;mvm)计算,而本发明则利用标准cmos电容器和适于实际部署的电路技术来实现mvm。在40nm cmos工艺节点中实现时,wirelightning在4比特精度下可达到465.47 tops/w,相较于同等精度下的模拟交叉阵列加速器,提出的技术方案的功率效率提高超过了2.9倍。尽管模拟计算本身存在精度限制,但采用的原型在pcb实验中展示了1.80%的范围归一化rmse和9.18%的归一化误差。通过将电容计算与电路级协同设计相结合,采用wirelightning方案的电容计算,可给高能效边缘ai应用提供一种实用方案。

7、根据本发明的第一方面,提供了一种通过基于电容计算进行传输中大规模并行矩阵乘法的方法。电容器具有固有的电荷积累能力和可预测的放电行为,因此为执行矩阵乘法提供了一种解决方案。利用充电期间的电荷积累来表示累加,并利用放电期间可预测的衰减来表示乘法,电容器可以实现向量的点积,而这正是mvm运算的核心操作。提出的mvm方法包括如下步骤:通过应用幅度-时间双重编码方案来生成一系列模拟尖峰信号,其中尖峰幅度表示矩阵行元素,而尖峰时序表示矩阵列元素;将所述模拟尖峰信号施加到多个模拟计算核心;响应于所述模拟尖峰信号,在各模拟计算核心的电容器中积累和释放电荷,从而产生与点积结果对应的时变电压;利用比较器电路检测所述电容器的时变电压返回朝向平衡电平相关联的时间间隔;以及利用基于时间的解码方案将所述时间间隔解码为数字结果,其中所述解码基于在电容器电压收敛至平衡电平期间经过的时钟周期数。

8、根据本发明的第二方面,提供了一种用于向量点积的计算核心电路。核心电路包括三个部件:dac、电容器(cap)和比较器电路(comp)。dac可由r-2r梯形dac实现,其通过生成模拟尖峰序列来调节电容器的充电和放电。当dac输出等于源电压的一半,即vdd/2时,电容器电压开始朝向平衡状态衰减。高于vdd/2的dac输出会导致电容器快速充电,并在dac输出恢复至vdd/2后,逐渐放电回到平衡状态;低于vdd/2的dac输出会导致电容器快速放电,并在dac输出恢复至vdd/2后,缓慢充电回到平衡状态。接地的电容器(cap)可设置在dac输出与comp输入之间,作为用于向量乘法的主要部件。由于comp输入直接连接至晶体管栅极,因此dac对电容器的电荷注入与释放可进行独占控制。提出的设计减少了电荷泄漏,并由此保持计算精度和信号完整性。所述比较器电路(comp)包括两条不同路径:包含偶数个反相器的正结果路径(outp),以及包含奇数个反相器的负结果路径(outn)。当电容器电压高于平衡状态(vdd/2)时,outp输出逻辑1;当电容器电压低于平衡状态时,outn输出逻辑1。由此,偏离平衡状态的电压被转换为数字信号。在正路径上电容器电压的增加,或是负路径上电压的降低,均会延长高电平输出的持续时间。因此,模拟结果可基于电容器电压返回至平衡状态所需的时钟周期数而被解码为数字值。总而言之,一旦所有尖峰信号已经传输至电容器,且通过测量电容器电压稳定返回至平衡状态所需的时钟周期而完成对计算结果的解码,计算核心即可完成向量乘法。所提出的方法将模数转换集成在电容器复位过程中,从而无需传统的高功耗、大面积adc,并提高了可扩展性。

9、根据本发明的第三方面,提供了一种通过基于电容计算进行传输中大规模并行矩阵乘法(a*b)的系统。系统包括控制器、多个模拟计算核心、读取器和调度器。控制器被配置为:基于矩阵数据利用幅度-时间双重编码方案生成一系列模拟尖峰信号,其中尖峰幅度对应于矩阵a的行元素,而尖峰时序对应于矩阵b的列元素;以及,通过识别矩阵b的量化列向量中的重复绝对值,对矩阵a的列进行简化,并且对矩阵a中对应元素进行分组并对分组值进行预累加,以将乘法次数降低为恒定计数。模拟计算核心接收来自所述控制器的模拟尖峰信号,其中各模拟计算核心包括电阻梯形数模转换器(dac)、电容器和比较器电路。电阻梯形dac被配置为接收来自控制器的数字信号,并根据数字信号产生用于驱动所述电容器充放电的模拟电压脉冲。电容器与电阻梯形dac电连接,并被配置为响应于电压脉冲积累和释放电荷,从而生成表示点积运算模拟结果的时变电压。比较器电路与电容器电连接,并被配置为监测电容器的电压,可检测相对于平衡电平的偏离,并生成指示电压返回朝向平衡电平所需的时间间隔的信号。读取器与各比较器电路电连接,并被配置为通过测量时间间隔,并利用基于时间的解码方案将时间间隔转换为量化值,从而确定点积运算的数字结果。调度器被配置为在矩阵-向量乘法期间协调控制器、模拟计算核心和读取器之间的数据传输和时序控制。模拟计算核心被布置成按行并行架构,并且各模拟计算核心均被配置为并发且独立地计算矩阵a的一行与矩阵b的一列向量之间的点积。