用于将矩阵计算映射到矩阵乘法加速器的系统和方法与流程

文档序号:22688614发布日期:2020-10-28 12:58阅读:174来源:国知局
用于将矩阵计算映射到矩阵乘法加速器的系统和方法与流程

相关申请的交叉引用

本申请要求于2017年12月18日提交的美国临时申请号62/607,203的权益,其通过引用整体并入本文。

本发明总体上涉及集成电路架构领域,并且更具体地涉及在集成电路架构领域中计算信号的新的和有用的混合信号集成电路及方法。



背景技术:

如今,人工智能的实现正在推动许多技术领域的创新。人工智能系统和人工智能算法包括许多模型,这些模型支持机器(例如计算机)的学习(深度学习)、推理和数据处理能力。这些ai系统和模型通常经过加强训练以执行一项或多项特定任务,例如自然语言处理、图像识别、计划、决策等。例如,在很多情况下,神经网络训练可能需要花费数千小时的训练周期,并且需要数tb的训练数据才能在使用前对相关算法进行微调。

然而,一旦被训练,则神经网络模型或算法可被快速部署以基于比训练数据集相对较小的数据集来进行推论,以完成特定任务(例如,从语音输入数据中识别语音等)。由神经网络模型或算法基于数据集得出的推论可以是关于神经网络计算为正确答案或指示的预测。

尽管神经网络模型或算法可能不需要训练阶段所需的相同量的计算资源,但在现场部署神经网络模型或算法仍需要大量的精力和计算能力来对数据进行分类和推论或预测结果。这是因为实现神经网络模型或算法的许多传统计算机和系统趋于更大,以适应实现神经网络模型时计算能力和提高数据处理速度所需的大量电路,并且由于电路的尺寸较大,需要更多的能量来启用许多电路的计算能力。

用于实现人工智能模型,即神经网络模型的这些传统计算机和系统可能适用于远程计算,例如在分布式计算系统(例如,云)中,或者当使用许多现场计算服务器等时。然而,当将这些远程人工智能处理系统用于远程边缘计算或现场设备的计算推论等中时,时延问题变得明显。也就是说,当这些传统的远程系统寻求实现用于生成要在远程现场设备中使用的推论的神经网络模型时,从远程现场设备接收输入数据不可避免会有延迟,因为输入数据通常必须通过具有变化的带宽的网络进行传输,随后必须通过相同或相似的网络将由远程计算系统生成的推论传输回去。

在现场级实施ai处理系统可能是提议的解决某些时延问题的解决方案。但是,尝试在边缘设备(或现场使用设备)中实现这些传统计算机和系统中的某些传统计算机和系统可能会导致具有许多电路的笨重系统,如上所述,由于用于生成推论的计算系统的架构的原因,该系统会消耗大量能量。因此,这样的提议可能是不可行和/或不可持续的。

因此,需要可部署的系统,用于在现场实现人工智能模型,并且最好用于边缘设备中,该系统不会导致大型,笨重的(边缘)设备,并且具有必要的计算能力来进行预测或推论,同时也能够节能。

本申请的以下描述的实施例提供了能够解决传统系统的缺陷的这种先进和改进的集成电路和实现技术。

发明概述

在一个实施例中,利用一个或多个计算密集型应用的系数来配置集成电路的矩阵乘法加速器阵列的方法包括:基于所述一个或多个计算密集型应用的计算属性,从多个不同的利用约束类型中识别出所述矩阵乘法加速器阵列的利用约束类型;从多种不同的系数映射技术中识别解决所述利用约束类型的至少一种系数映射技术;根据至少一种系数映射技术来配置所述矩阵乘法加速器阵列,其中配置该阵列包括在由该至少一种系数映射技术所规定的优化所述矩阵乘法加速器阵列的计算利用率的布置中至少在该阵列内设置所述一个或多个计算密集型应用的系数。

在一个实施例中,该方法包括:基于所述利用约束类型,识别至少一种输入/输出处理技术;以及基于所述至少一种输入/输出处理技术,配置与所述矩阵乘法加速器阵列相关联的多路复用器。

在一个实施例中,如果所述一个或多个计算密集型应用中的至少一个的计算所需的输入少于所述矩阵乘法加速器阵列的矩阵系数输入容量,则所述至少一种系数映射技术包括将所述矩阵乘法加速器阵列进行划分以便:将所述一个或多个计算密集型应用的第一应用的系数映射到所述阵列的第一区域;以及将所述一个或多个计算密集型应用的第二应用的系数映射到所述阵列的第二区域,其中,所述阵列的第一区域和第二区域是不重叠的区域,并且每个都有不常见的输入端口。

在一个实施例中,该方法包括:在运行时,执行所述第一区域和第二区域中的一个,同时停用所述第一区域和第二区域中的未执行的一个。

在一个实施例中,如果所述一个或多个计算密集型应用中的至少一个的计算所需的输出少于所述矩阵乘法加速器阵列的矩阵输出容量,则所述至少一种系数映射技术包括将所述矩阵乘法加速器阵列进行划分以便:将所述一个或多个计算密集型应用的第一应用的系数映射到所述阵列的第一区域;以及将所述一个或多个计算密集型应用的第二应用的系数映射到所述阵列的第二区域,其中,所述阵列的第一区域和第二区域是不重叠的区域,并且每个都有不常见的输出端口。

在一个实施例中,该方法包括:在运行时,执行第一区域和第二区域中的一个,同时停用第一区域和第二区域中的未执行的一个。

在一个实施例中,如果组合使用所述一个或多个计算密集型应用中的至少两个的计算分别需要比所述矩阵乘法加速器阵列的矩阵输入容量和矩阵输出容量更少的输入和更少的输出,则所述至少一种系数映射技术包括将所述矩阵乘法加速器阵列进行划分以便:将所述一个或多个计算密集型应用的第一应用的系数映射到所述阵列的第一区域;以及将所述一个或多个计算密集型应用的第二应用的映射系数映射到所述阵列的第二区域,其中,所述阵列的第一区域和第二区域是不重叠的区域,并且每个都有不常见的输入端口和不常见的输出端口。

在一个实施例中,该方法包括:在运行时,并行执行所述第一区域和第二区域中的每个。

在一个实施例中,如果组合使用一个或多个计算密集型应用中的至少两个的计算分别需要比所述矩阵乘法加速器阵列的矩阵输入容量和矩阵输出容量更少的输入和更少的输出,则所述至少一种系数映射技术包括将矩阵乘法加速器阵列进行划分以便:将所述一个或多个计算密集型应用的第一应用的系数映射到所述阵列的第一区域;以及将所述一个或多个计算密集型应用的第二应用的系数映射到所述阵列的第二区域,其中所述阵列的第一区域和第二区域具有部分重叠的输入区域,并且具有不常见的输出端口。

在一个实施例中,如果所述一个或多个计算密集型应用的多个不同应用中的每个应用都需要超过输入阈值的大量输入,而每个输出都具有低于输出阈值的较少的输出,则:所述至少一种系数映射技术包括将所述矩阵乘法加速器阵列进行划分以便:将多个不同应用的每一个的系数映射到所述阵列的多个不同区域,使得所述多个不同应用的每一个的系数并行排列,并且所述多个不同区域的每一个沿着不常见的输出端口布置;并且所述至少一种输入/输出处理技术包括:设置所述多路复用器以经由公共输出电路串行输出所述多个不同应用中的每一个的计算结果。

在一个实施例中,如果组合使用所述一个或多个计算密集型应用中的多个不同应用的计算需要比所述矩阵乘法加速器阵列的矩阵输入容量和矩阵输出容量更少的输入和更少的输出,则所述至少一种系数映射技术包括将所述矩阵乘法加速器阵列进行划分以便:将所述一个或多个计算密集型应用中的多个不同应用中的每一个的系数映射到所述阵列的多个不同区域,其中,所述多个不同区域包括具有重叠输入端口和重叠输出端口的不同区域;该方法还包括:通过选择所述多个不同区域中的一个进行主动执行并禁用所述多个不同区域中的其余不同区域的执行,来串行执行所述阵列的所述多个不同区域中的每个。

在一个实施例中,如果所述一个或多个计算密集型应用中的至少一个的计算需要比所述矩阵乘法加速器阵列的矩阵输入容量更大的输入和/或比矩阵乘法加速器阵列的矩阵输出容量更大的输出,则所述至少一种系数映射技术包括:将至少一个计算密集型应用的系数划分给所述矩阵乘法加速器的多个不同阵列;该方法还包括:将输入向量应用于矩阵乘法加速器的多个不同阵列中的每一个;收集由所述矩阵乘法加速器的多个不同阵列中的每个阵列计算出的输出;并且组合矩阵乘法加速器的多个不同阵列的输出。

在一个实施例中,该方法包括:配置所述矩阵乘法加速器阵列以根据输入到所述阵列的输入信号产生正输出并产生负逻辑输出包括:利用正线和负线配置所述阵列内的一个或多个矩阵系数输入位置,所述正线使带正号的输入信号通过,所述负线使带负号的输入信号通过;并且沿着所述一个或多个矩阵系数输入位置的正线和负线中的每一个设置矩阵系数。

在一个实施例中,如果所述矩阵乘法加速器阵列中的输入向量所包括的位大小大于所述阵列内的矩阵系数输入位置的位大小,则所述至少一种系数映射技术包括:在接收具有超大输入位的输入向量的位之前,将尺寸不足的矩阵系数输入位置的系数移至所述阵列的多个行,该方法还包括:在运行时,将所述输入向量的位扩展到所述阵列的多个行上;并且对所述阵列的共享共同系数值的多个行的输出求和。

在一个实施例中,如果所述矩阵乘法加速器阵列的输入向量所包括的位大小大于所述阵列内的矩阵系数输入位置的位大小,则至少一种输入/输出处理技术包括:以串行方式或步进方式将具有超大输入位的输入向量的位在阵列的多个计算上进行划分;该方法还包括:在对所述多个计算的输出值求和之前,将所述阵列的多个计算的输出移位成对齐状态。

在一个实施例中,一个或多个计算密集型应用包括一个或多个不同的机器学习应用。

在一个实施例中,利用一个或多个应用的系数配置集成电路的固定存储器阵列的方法,包括:基于所述一个或多个应用的计算属性,从多个不同的利用约束类型中识别出所述固定存储器阵列的利用约束类型;从多种不同的系数映射技术中识别解决所述利用约束类型的至少一种系数映射技术;根据所述至少一种系数映射技术来配置所述固定存储器阵列,其中,配置所述阵列包括:在由所述至少一种系数映射技术所规定的优化所述固定存储器阵列的计算利用率的布置中,至少在所述阵列内设置所述一个或多个应用的系数。

在一个实施例中,该方法包括:基于所述利用约束类型,识别至少一种输入输出处理技术;以及基于至少一种输入/输出处理技术,配置与所述固定存储器阵列相关联的多路复用器。

在一个实施例中,利用一个或多个应用的系数配置集成电路的固定存储器阵列的系统,包括:固定存储器阵列,其包括:固定数量(m)的输入端口,用于接收m个输入信号;固定数量(n)的输出端口,为一个或多个位宽,用于输出n个输出值;固定数量的存储元件w,用于存储给定应用的系数和/或权重;与所述固定存储器阵列可操作地通信的多路复用器,该多路复用器用于选择所述固定存储器阵列的一个或多个输入设置和/或输出设置,其中,根据从多种不同的系数映射技术中选择的至少一种系数映射技术来配置所述固定存储器阵列,其中配置所述固定存储器阵列包括在由至少一种系数映射技术规定的优化所述固定存储器阵列的计算利用率的布置中至少在所述固定存储器阵列内设置所述一个或多个应用的系数。

附图说明

图1示出了根据本申请的一个或多个实施例的系统100的示意图;

图1a示出了根据本申请的一个或多个实施例的系统100的一个或多个部分的一种实现;

图2示出了根据本申请的一个或多个实施例的矩阵乘法加速器的示意图;

图2a示出了根据本申请的一个或多个实施例的用于混合信号计算的系统的特定实现;

图2b示出了根据本申请的一个或多个实施例的用于图2的混合信号计算的系统的特定实现;

图3示出了根据本申请的一个或多个实施例的用于将矩阵计算映射到矩阵乘法加速器的第一实现;

图3a示出了根据本申请的一个或多个实施例的用于映射矩阵计算的示例方法;

图4示出了根据本申请的一个或多个实施例的用于将矩阵计算映射到矩阵乘法加速器的第二实现;

图5-5a示出了根据本申请的一个或多个实施例的用于将矩阵计算映射到矩阵乘法加速器的第三实现;

图6示出了根据本申请的一个或多个实施例的用于将矩阵计算映射到矩阵乘法加速器的第四实现;

图7示出了根据本申请的一个或多个实施例的用于将矩阵计算映射到矩阵乘法加速器的第五实现;

图8示出了根据本申请的一个或多个实施例的用于将矩阵计算映射到矩阵乘法加速器的另一实现;并且

图9示出了根据本申请的一个或多个实施例的用于将矩阵计算映射到矩阵乘法加速器的又一实现。

发明详述

本申请的优选实施方式的以下描述并非旨在将本发明限制为这些优选实施方式,而是使本领域的任何技术人员能够实现和使用这些发明。

概述

在配置可以实现计算密集型程序或应用(例如深度神经网络算法等)的集成电路时,一般要求将计算密集型程序或应用的权重等映射到集成电路的各种阵列。特别地,一些机器学习算法可以包括必须适合于特定集成电路的数百万个权重。在这种情况下,通常可以将机器学习算法的数百万个权重应用于集成电路,只要该集成电路包括足以容纳各个权重的存储容量即可(例如,数百万个存储单元等)。

然而,在某些情况下,即使集成电路沿着其阵列包括足够的存储器来存储机器学习算法等的数百万个权重,集成电路的其他约束,例如固定数量的输入和/或固定数量的输出可能与机器学习算法和/或类似的计算密集型应用的权重矩阵的精确配置不匹配或未对齐。

因此,需要一种灵活的方法来映射机器学习算法(或其他计算密集型应用/程序)的权重矩阵等。

因此,本申请的一个或多个实施例使得能够将应用和/或算法(例如,计算和权重图)映射到具有预定架构或设计的集成电路,如美国专利申请号16/127,488和美国专利申请号62/694,355中所描述的,通过引用将其全部内容合并在本文中。在一些实施例中,可以实现实现多个矩阵乘法加速器的系统。应用和/或算法可以以这样的方式映射到多个矩阵乘法加速器,以通过实现下面公开的矩阵映射技术中的一种或组合来优化多个矩阵乘法加速器的利用率和/或性能。

虽然本文下面描述的一个或多个实施例通常可以起到将应用和/或程序映射到矩阵加速器单元的作用,但是应当理解,本申请的一个或多个实施例(或它们的组合)可以被实现以映射任何合适的功能、应用或程序等,包括但不限于机器学习算法(包括神经网络计算和/或算法),离散傅里叶变换(每个输出以任何频率),离散傅立叶变换和快速傅立叶变换的组合(例如,用于音频特征提取等),dna排序,全局定位信号(其中信道是不同的频移)等等。

1.实现混合信号计算架构的系统

如图1所示,用于为计算密集型程序和/或应用实现混合信号计算的系统100包括全局参考生成器110、多个本地累加器120和共享信号路径125。如图1a所示,本地累加器120每个可包括一个能量存储设备122和一个电流镜124。

系统100优选地用于将数模转换器的典型功能分成至少两个组件设备。在若干实施例中,第一组件包括全局参考生成器110,其用于定义或生成一个或多个(模拟)参考信号。在一些实施例中,全局参考生成器110可以包括二进制加权的全局参考生成器。在几个实施例中,第二组件包括一组本地累加设备,其具有通过共享信号路径125接收来自全局参考生成器110的参考信号,并且在一些实施例中还具有在设定的时间段内执行参考信号的值的某些算术函数(例如,加,减等)的功能。

系统100的功能是通过允许第一组件较大并能够为包括一组小型本地累加设备的第二组件生成准确的参考信号,从而至少利用上述配置来实现规模和面积效率(例如,制造更小的集成电路)。即,第一组件的面积和功率(将匹配并受噪声限制)现在被摊销。因此,系统100实现了一种集成电路架构,该集成电路架构能够执行计算密集型操作,同时具有极高的面积和功率效率。

全局参考生成器110用于为多个本地累加器120中的每一个产生参考信号。优选地,全局参考生成器110包括全局数模转换器(dac),如图1-1a所示。在这种情况下,全局dac可以用作从外部源接收数字信号(例如,二进制数或输入)作为输入,并且可以用于向多个本地dac输出模拟参考信号(例如,电压或电流信号)。因此,全局dac可以用于基于在全局dac处接收到的数字输入来生成到本地累加器(例如,本地dac)的模拟参考信号。附加地或可替代地,由全局参考生成器110产生并发送给每个本地累加器的参考信号可以是模拟参考信号,例如电流或电压,其可以用于控制或驱动本地累加器120的功能。因此,由全局参考生成器110提供的全局参考信号优选地也通过共享信号路径125(例如,共享或公共导线)传输到本地累加器120,该共享信号路径125也可操作地将本地累加器120彼此连接,同时与同一全局参考生成器110连接。

关于图2,该图示出了全局dac到本地dac架构的一种实现,其中多个本地dac(ldac)的功能是从单个全局dac(gdac)接收一个或多个模拟参考信号。因此,在每个本地dac处接收到的本地输入(例如,a_input,b_input等)可以被应用到产生大量电流电荷的可调电阻器上。结合使用每列可调电阻器作为(神经网络的)神经元,可以将神经元列中每个可调电阻器产生的电流输出汇总,如图2a所示,以形成单个汇总电流输出(例如神经元输出)。

附加地或可替代地,图2b示出了使用差分列的根据图2a的实施方式的变型。在此变体中,差分列使用两根导线和两列可调电阻器来创建差分计算。每个差分列充当单个神经元。当相应的输入被激活时,每个电阻元件对都会产生一对电流。i_total1和i_total2之差决定了adc中的结果值。

因此,在用于实现神经网络模型的典型数字电路中,使用数字值(二进制值)执行矩阵乘法计算。相比之下,在实现混合信号计算架构的系统100的实施例中,矩阵乘法计算在当前(模拟)域中执行,从而允许系统功耗最多提高五十倍(50倍)或更大。即,系统100用于将功耗降低多达50倍或更大。

通常,全局参考生成器110可以被配置为具有更好的匹配和噪声性能的高速模拟设计。附加地或可替代地,全局参考生成器110的配置可以包括参考信号生成设备和/或电路,其允许全局参考生成器110生成模拟参考信号并且还使得全局参考生成器110相对于多个本地累加器120中的每个较大。额外地或可替代地,全局参考生成器110可以被配置为顺序地(例如,一次一个)或同时地(例如,每个时钟周期多个信号)发送参考信号。应当注意,全局参考生成器110可以被配置为以本文中预期的或本领域中已知的任何合适方式生成和/或发送参考信号。

共享信号路径125可以是单个信号线、信号迹线或具有到多个本地累加器120的多个连接的信号路径。共享信号路径优选地用于允许从全局参考生成器110传输参考信号到与其连接或沿着共享信号路径125定位的多个局部累加器120中的每个。共享信号路径125可以被配置为使得沿着该共享信号路径125传输的源自全局参考生成器110的任何参考信号可以通过连接到共享信号路径125的每个本地累加器120复制或以其他方式镜像。

在一种实施方式中,全局参考生成器110可以使用共享信号路径125来提供串行(模拟)参考信号。因此,在这种实施方式中,共享信号路径125可以起到在每个时钟周期向本地累加器120提供单个位参考信号的作用。例如,如果全局参考生成器110包括三位dac等,则共享信号路径125可以将三个位中的每个单独地并且顺序地提供给多个本地累加器120中的每个。以这种方式,共享信号路径125使得单个信号源(例如,全局参考生成器)能够向多个本地累加器提供精确的参考信号,代替每个本地累加器120的专用信号源。这种配置的技术优势是用于实现计算密集型应用和/或程序(例如神经网络模型等)的电路要小得多。

本地累加器120可以起到生成到本地输出接收器(例如,本地模数转换器)等的模拟输出的作用,如图2a所示。在优选实施例中,多个本地累加器120包括多个本地数模转换器(ldac),其可以使用来自全局参考生成器110的全局参考信号在几个时钟周期上产生模拟输出。应当注意,取决于全局参考生成器110的参考信号生成模式,多个本地累加器120可以在单个时钟周期上产生模拟输出。ldac的配置通常可以排除参考信号生成设备,因为用于每个ldac的参考信号可以由全局参考生成器110提供,并且通常,参考信号生成设备和/或电路很大。结果,这种配置使ldac在集成电路的印刷电路板或面板上的消耗的尺寸和面积大大减小。例如,与全局dac相比,ldac的大小和面积可能小多达十(10)到二十(20)倍或更多倍。这允许在集成电路或计算机芯片上具有很大的面积和功率效率。然而,应注意,在一些实施例中,多个ldac中的每一个可包括一种或多种类型的参考信号累积/聚集/求和/重构电路,其功能为输出结果参考信号,如以下更详细地讨论的。也就是说,尽管在一些实施例中,本地累加器120(或ldac)可以起到累加参考信号的作用,但是在一些变型中,本地累加器还可以基于全局参考生成器110的编码方案和每个相应的本地累加器的配置来递增/递减能量存储设备或执行求和功能。

如上所述,多个本地累积加器120中的每个可以包括能量存储设备,电流镜124,并且在一些实施例中,包括比较器电路。能量存储设备优选地用于在本地累加器120处本地存储能量值,例如包括电流或电压值的模拟能量值。优选地,能量存储设备包括电容器,然而,能量存储设备可以是任何合适的电能存储元件,例如串联操作的闪速晶体管等。在一些实施例中,多个本地累加器120中的每个可以基于一个或多个信号输入(例如,顺序输入)来执行针对能量存储设备的算术功能。相应地,本地累加器120可以用于添加和/或减去能量存储设备上的电荷。每个本地累加器120可以附加地或可替代地用于基于一个或多个信号输入来在电容器上积分(电压)电荷。

多个本地累加器120中的每一个的电流镜124用于复写或复制通过共享信号路径125提供的参考电流信号。具体地,在一些实施例中,全局参考生成器110用于共享信号路径125提供参考电流信号。可以通过连接到共享信号路径125或沿着共享信号路径125定位的每个本地累加器120接收参考电流信号。因此,使用每个相应本地累加器120处的电流镜124,本地累加器120的功能是复制参考电流信号(例如,全局参考信号),以产生或累积输出信号。

在一个优选实施例中,电流镜124包括设计成通过控制电路的另一有源器件中的电流同时与负载无关地保持输出电流恒定来复制电流通过一个有源器件的电路。电流镜124可用于复制变化的信号电流或恒定的信号电流(取决于全局参考生成器110提供恒定还是变化的全局参考信号),并向电路提供偏置电流和/或有源负载。优选地,限定电流镜124的电路包括反相电流放大器(理想地),该反相电流放大器在大多数实施例中还起到使电流方向反向的作用,或者可以是电流控制的电流源。然而,应当注意,电流镜可以包括用于复制参考电流信号的任何合适的电路。

参考图1a,示出了本地累加器120的一种实现方式,其中全局参考生成器110用于产生用于本地累加器120中的两个电流镜124的偏置电压(例如,全局参考信号)。可以生成由全局参考产生器110提供的信号,使得在电流镜124中复制的电流被加权。例如,在系统100的全局参考生成器110的二进制实现中,可以在每个时钟周期更新由全局参考生成器110生成的偏置电压。这样,电流镜124中的复制电流以二进制方式变化。在该实施方式中,可以在局部累加器120的能量存储设备122(电容器)上以某种电荷添加顺序输入等,或者可以从能量存储设备122中减去某些电荷。添加到能量存储设备122中或者从能量存储设备122中减去的电荷量优选地是本地累加器120中的复制的电流的函数,因为复制的电流以二进制的方式变化,所以增加或减少的电荷以相似或相同的方式变化。因此,对于n位(例如8位)的全局dac等,将需要n个(例如n=8)个时钟周期以在本地dac处创建所需的输出。

在系统100的一个变体实现中,本地累加器120当被实现为ldac时,其功能是基于全局参考生成器110提供的温度计编码参考信号来增加/减少能量存储设备122上的电荷。在这样的变型实施方式中,从能量存储设备122增加或减少的电荷量在每个时钟周期中可以是恒定的。在这样的实现中,对于n位的全局参考生成器110,将需要2^n个周期来在本地累加器120(ldac)处创建所需的输出。

另外,在又一实施方式中,可以实现分段的全局参考生成器110,其中将两个或更多个全局参考生成器组合以实现单个更高分辨率的全局参考生成器110以提供所需的性能(例如,更准确的参考信号生成,更好的匹配,更高的噪声性能等)。在使用中,高分辨率全局参考生成器的不同分段可以用于处理各种信号生成任务,其中这些不同分段的输出可以组合在一起以实现单一输出。

另外或可替代地,在一些实施例中,系统100可以包括多个本地模数转换器(adc)(未示出),其用于从多个本地累加器120的输出电路接收输出。具体地,在一些实施例中,一旦本地累加器120已经在电容器等上获得足够的(存储的)电荷值,该电荷值就可以被输出或定义模拟参考信号到相应的本地adc,相应的本地adc通过将其与模拟参考信号进行比较将模拟输入信号转换成二进制输出。在这样的实施例中,每个本地adc可以包括比较器电路,该比较器电路可以用于将模拟输入信号与参考信号进行比较,以确定或生成二进制输出。

与这里描述的全局dac到本地dac的架构相似,可以实现全局参考信号生成器(例如,全局adc)到局部adc的架构。在这样的实施方式中,可以经由共享的公共信号路径从全局adc向多个本地adc提供一个或多个参考信号。此类配置应类似地实现若干技术益处,包括较小的电路架构面积,能量效率(例如,较低的功耗)等。

2.矩阵乘法加速器

如图2所示,示出了矩阵乘法加速器单元200的示意图。矩阵乘法加速器单元200可以包括表示内部存储的系数矩阵的多个内部存储元件210。在一个示例中,输入行向量通常可以与矩阵乘法加速器单元200的内部存储元件210内存储的系数矩阵相乘以生成输出行向量。

图2的矩阵乘法加速器单元200优选地包括m个输入信号。在一些实施例中,矩阵乘法加速器单元200可接收的输入信号的数量m可以取决于矩阵乘法加速器单元200的行数,使得m等于矩阵乘法加速器单元200的行数。如在图2中的矩阵乘法加速器单元200的示例性图示中所示,输入信号通常被认为是进入矩阵乘法加速器单元200的一侧。然而,应当注意,可以实现用于在矩阵乘法加速器处接收输入信号的任何合适的配置,例如从矩阵乘法加速器200的顶部,相对侧,底部和/或垂直于矩阵乘法加速器200的平面接收输入信号。矩阵乘法加速器单元200接收的m个输入信号可以每个都是一个或多个位宽。输入信号可以在矩阵乘法加速器单元200的行之间共享,使得矩阵乘法加速器单元200的每一列接收相同的输入集。

图2的矩阵乘法加速器单元200优选地包括n个输出信号。在一些实施例中,可以由矩阵乘法加速器单元200产生的输出信号的数量n可以取决于矩阵乘法加速器单元200的列的数量,使得n等于矩阵乘法加速器单元200的列的数量。矩阵乘法加速器单元200产生的n个输出信号可以分别是一个或多个位宽。优选地,基于将输入行向量的每个输入信号乘以矩阵乘法加速器单元200内给定的行/列位置的对应的矩阵系数,来生成输出信号。然后,可以将所得乘积与矩阵乘法加速器单元200的一列中的其他计算乘积求和,以形成矩阵乘法加速器单元200的给定列的输出值。通常将这种计算描述为在矩阵乘法加速器单元200的列上进行乘累加。

附加地或可替代地,矩阵乘法加速器单元200可以包括多路复用器选择器220。在这样的实施例中,多路复用器选择器220可以具有使矩阵乘法加速器单元200能够选择性地呈现比可以由给定的矩阵乘法加速器单元200产生的输出(n)的数量少的物理输出的多个设置。特别地,多路复用器选择器220可以起到选择(或激活/停用)矩阵系数列的子集以计算输出的作用。在选定或激活状态下,可以使矩阵列的选定子集可用于计算要输出的乘积。在未选择或停用的状态下,矩阵列的未选择子集可能会变得不可用或暂时设置为零值,这样就不会有乘积或乘积等于零值。

提供给多路复用器选择器220的值或信号用于使多路复用器选择器220选择将在物理输出(p)上呈现的输出子集。在一些实施例中,矩阵乘法加速器单元200的选定列或矩阵系数可以被激活以计算输出,而矩阵乘法加速器单元200的未选定或非选定列或矩阵系数保持不活动或被多路复用器选择器220停用。优选地,所呈现的物理输出的数量小于矩阵乘法加速器单元200的输出的数量。

附加地或替代地,矩阵乘法加速器单元200可以在矩阵乘法加速器单元200的每个不同的行/列位置处包括内部系数(w)。优选地,矩阵乘法加速器单元的内部系数(w)200可以与输入相乘,以帮助定义或帮助计算矩阵乘法加速器单元200的输出。

另外地或可替代地,矩阵乘法加速器单元200可以起作用以使得能够进行输出分辨率选择。输出分辨率选择可以指示矩阵乘法加速器单元200的输出可以是多少位宽(即,在输出上呈现的内部乘法累加操作的位数)。

另外,矩阵加速器单元200可以将一些用于相加项的输入到矩阵乘法中。这些项可用于添加恒定偏移量或用于其他模拟目的。神经网络通常会将偏差添加到操作中,并且这些加法项可以用于施加偏差。差分模拟电路可以在某些电压范围内以更好的性能工作,并且可以使用其他输入项来通过这种共模调整来改善性能。

3.用于实现和/或映射矩阵乘法加速器的系统和/或方法

如图3a中的示例所示,一种利用一个或多个计算密集型应用的系数配置混合信号计算集成电路的矩阵乘法加速器阵列的方法300包括:识别利用约束类型s310;识别至少一种系数映射技术s320,以及配置矩阵乘法加速器阵列s330。可选地,该方法可以包括识别至少一种输入/输出处理技术s325。

s310,其包括识别利用约束类型,可用于基于一个或多个计算密集型应用的计算属性,从多个不同的mma利用约束类型中识别矩阵乘法加速器阵列的利用约束。应用的一个或多个计算属性可以包括但不限于输入向量和输出向量的位大小,输入向量和输出向量的数量,权重和/或系数的数量,对正负输出值的要求等。mma利用约束类型可以包括但不限于用于映射系数和/或权重的固定维数,有限的输入和/或输出位大小,无法计算负输入值等。

s320,其包括识别至少一种系数映射技术,可以起到选择系数和/或权重映射技术的作用,该系数和/或权重映射技术对所识别的矩阵乘法加速器阵列的利用约束类型进行优化。例如,s320可以起到在以下3.1-3.9节等中描述的一种或多种合适的映射技术中进行选择的作用。

可选地,s325,包括识别至少一种输入/输出处理技术,可以用于基于矩阵乘法加速器阵列的利用约束类型来选择至少一种输入/输出处理技术。在一个示例中,s325可用于基于至少一种输入/输出处理技术来配置或设置与阵列相关联的多路复用器,这在以下一个或多个部分中进行了描述。

s330,其包括配置矩阵乘法加速器的阵列,可以通过在选定的至少选择一种系数映射技术所规定的布置中在阵列内设置一个或多个计算密集型应用的系数和/或权重,来配置矩阵乘法加速器阵列,至少选择一种系数映射技术优化矩阵乘法加速器阵列的计算利用率和/或性能。

3.1按输入区域划分

如图3所示,提供了一种用于将矩阵系数映射到集成电路的矩阵乘法加速器阵列的第一实现方式。该第一实现方式优选地包括映射需要比给定矩阵乘法加速器的矩阵输入容量更少的输入的矩阵计算。因此,第一实现方式可以包括将多个矩阵计算映射到单独的矩阵乘法加速器,以优化其中的阵列的利用率。在一些实施例中,多个矩阵中的每一个可以被映射到单独的矩阵乘法加速器上,使得其相应的矩阵系数从矩阵乘法加速器的第一侧延伸到矩阵乘法加速器的第二侧。

应当注意,尽管本文描述的几种实现方式可以优选地以一个或多个矩阵乘法加速器的结构来实现,但是应当注意,可以利用能够存储计算密集型应用的系数的任何合适的固定矩阵或其他固定存储器阵列资源类似地和/或等同地应用本申请的技术和/或方法。例如,其他固定存储器阵列资源可以包括但不限于基于sram的阵列架构、基于电容器的阵列架构、基于碳纳米管的阵列架构,feram(铁电ram)阵列架构、任何合适的存储器存储元件和/或类似内容。

在该第一实施方式中,可以首先识别两个或更多个矩阵计算。识别矩阵计算通常包括确定两个或更多个矩阵计算的每一个所需的矩阵系数和/或矩阵权重的总数。例如,矩阵计算可包括一千二十四(1024)个系数输入等,因此,在矩阵乘法加速器上可能需要1024个存储位置(例如,矩阵乘法加速器的行/列位置)以存储1024个系数输入中的每个。矩阵的输入可以是可使用一个或多个矩阵乘法加速器执行的任何类型的应用、程序或算法的任何类型的输入。例如,矩阵的输入可以包括机器学习算法等的多个权重和/或系数。

一旦已知两个或更多个矩阵计算,就可以构造或配置矩阵乘法加速器的阵列或区域以容纳两个或更多个矩阵计算中的每一个,从而允许在单个矩阵乘法加速器上存在一个以上的矩阵计算。反过来,这减少了执行多个矩阵计算所需的矩阵乘法加速器的数量。矩阵乘法加速器可以包括固定数量的输入单元,并且类似地,固定数量的输出单元可以起到约束在矩阵乘法加速器上存储和/或执行矩阵计算的方式的作用。

在该第一实施方式中,如果第一矩阵计算包括的矩阵输入少于矩阵乘法加速器的矩阵输入容量,则第一矩阵计算可以被映射到矩阵乘法加速器的第一阵列区域,同时将运行时矩阵乘法加速器的未使用的阵列区域清零。即,可以将第一矩阵计算修改为在矩阵乘法加速器的未使用位置包括附加零。因此,为了优化矩阵乘法加速器的利用率,还可以将包括少于矩阵乘法加速器的矩阵输入容量的第二矩阵计算与第一矩阵计算一起映射。也就是说,可以将第二矩阵计算的可能适合于矩阵乘法加速器的未使用的阵列区域(或突出部分)内的部分添加到矩阵乘法加速器,并且在运行时,第一矩阵计算的阵列区域可以清零或变为非活动状态。

另外,矩阵乘法加速器的区域可以基于两个或更多个矩阵计算的矩阵配置来分段或划分。具体地,在将两个或更多个矩阵计算映射到矩阵乘法加速器之前,可以对矩阵乘法器进行划分以优化对矩阵乘法加速器的矩阵输入容量的利用,从而使得最大数量的矩阵计算能够一次存储。

附加地或可替代地,在矩阵计算超过矩阵乘法加速器的矩阵输入容量的情况下,可以将矩阵计算划分为多个计算,该多个计算可以映射到多个矩阵乘法加速器的区域上。

优选地,矩阵乘法加速器的区域可以被划分为矩形或正方形区域,该矩形或正方形区域适当地适合于映射在其上的两个或更多个矩阵计算的矩形和/或正方形配置。但是,应当注意,矩阵乘法加速器可以以任何合适的方式划分。

另外,如果将多个矩阵计算映射到单个矩阵乘法加速器的多个区域,则可以依次执行矩阵乘法加速器的每个区域(例如,一次一个)。即,第一实现方式不是并行执行矩阵计算,而是按划分的输入区域按顺序执行在矩阵乘法加速器处的矩阵输入。通过以这种方式执行矩阵计算,可以避免矩阵乘法加速器对不同的矩阵计算求和。

应当注意,尽管仅将第一和第二矩阵计算描述为能够映射到相同的矩阵乘法加速器,但是本申请的实施例不应当限于这些示例,而是可以将任意数量的不同的矩阵计算映射到同一矩阵乘法加速器,以优化其矩阵输入容量。

3.2按输出区域划分

如图4所示,提供了用于将矩阵计算映射到集成电路的矩阵乘法加速器的阵列的第二实现方式。在该第二实现方式中,可以识别需要比给定矩阵乘法加速器的总输出单元少的输出的两个或更多个矩阵计算。所述两个或更多个矩阵计算中的第一矩阵计算的矩阵系数可以优选地映射到矩阵乘法加速器的第一阵列区域。因此,用于第二矩阵计算的矩阵系数可以被映射到矩阵乘法加速器的未使用的阵列区域(即,第二阵列区域)。可以以这样的方式映射第一和第二阵列区域,使得各个矩阵系数被映射为从矩阵乘法加速器的顶部延伸到矩阵乘法加速器的底部。

在该第二实现方式中,如果第一和第二矩阵计算使用相同的矩阵输入值到矩阵乘法加速器中,则这两个不同的矩阵计算可以并行(即,同时)运行。因此,当用第一和第二矩阵计算的相应矩阵系数配置矩阵乘法加速器时,可能不必使矩阵乘法加速器的未使用的阵列部分相对于第一矩阵计算无效或矩阵乘法加速器的未使用的阵列相对于第二矩阵计算无效。但是,如果第一和第二矩阵计算使用不同的矩阵输入,则可以顺序执行第一和第二矩阵计算。在这种情况下,可以忽略到未计算区域的输出或使其无效。

作为上述配置的结果,第一和第二矩阵计算可以存在于相同的矩阵乘法加速器上,并且,根据矩阵乘法加速器的输入值,可以并行或顺序地执行第一和第二矩阵计算。

应当注意,尽管仅将第一和第二矩阵计算描述为能够映射到相同的矩阵乘法加速器,但是本申请的实施例不应限于这些示例,而是可以将任意数量的不同的矩阵计算映射到相同的矩阵乘法加速器,以优化其矩阵输入容量。

3.3按对角区域划分

如图5所示,提供了用于将多个矩阵计算映射到集成电路的矩阵乘法加速器的阵列的第三实现方式。在该第三实现方式中,可以基于多个矩阵计算的每一个的矩阵输入需要矩阵乘法加速器输出太少和矩阵乘法加速器中的输入太少的组合,将多个矩阵计算映射到相同的矩阵乘法加速器。具体地,多个矩阵计算中的每一个可以被映射到或分割成同一矩阵乘法加速器的不同的和不重叠的区域。在这种不重叠的配置中,进入每个不同区域的输入的操作以及从这些区域中计算出的输出的操作应确保它们不会干扰该相同的矩阵乘法加速器的其他相邻矩阵计算区域的输入和/或输出。因此,通过沿着矩阵乘法计算放置矩阵计算区域,可以实现明显的对角线或阶梯状配置,沿着矩阵乘法计算放置矩阵计算区域允许将多个不同的矩阵计算输入到矩阵乘法加速器中以便并行地进行,并且类似地,多个矩阵计算中的每一个的输出从矩阵乘法加速器并行输出。

应当注意,在第三实施方式中描述的划分技术可以附加地或替代地使矩阵乘法加速器阵列内的两个或更多个不同的计算区域能够接收重叠的输入,如图5a中的示例所示。在第三实施方式的该变型中,不同的矩阵乘法区域可以具有部分共享的输入,可以通过在特定权重中置零(或可能停用某些权重)来并行地计算部分共享的输入。例如,在使用中,可以沿着矩阵乘法加速器的单个阵列以对角线方式映射或布置多个不同的矩阵乘法区域。在这种情况下,可以沿着一个或多个向量输入行部分对齐的两个或更多个矩阵乘法区域可用于共享输入并实现并行执行,可沿阵列添加零以掩盖多个不同矩阵乘法区域之外的区域中的权重。

多个不同的矩阵计算区域的对角线配置可以从矩阵乘法加速器的第一侧延伸到矩阵乘法加速器的第二侧。在一些实施例中,可以优化对角线配置,以使得不同的和不重叠的矩阵计算区域在整个矩阵乘法加速器上是连续的。备选地,多个不重叠的矩阵计算区域的对角线构造可以在矩阵乘法加速器上不连续。

因此,在多个矩阵计算区域的对角线配置中,可以使矩阵乘法加速器的未使用部分或区域无效,从而仅对多个矩阵计算的系数输入存储在其上的矩阵乘法加速器的区域进行有效且准确的计算。由于多个矩阵计算通常处于对角线配置,因此矩阵乘法加速器可以起到并行执行一些或全部矩阵计算的作用。

应当注意,多个矩阵计算区域中的每一个的大小和/或配置可以根据每个区域所需的矩阵输入量而变化。

3.4通过多路复用器划分

如图6所示,描述了用于将多个矩阵计算映射到集成电路的矩阵乘法加速器的阵列的第四实现方式。根据该第四实现方式,可以实现多路复用器,该多路复用器能够将具有大输入但很少输出(例如,小于或等于mma的输出)的大量矩阵计算映射到矩阵乘法加速器。如果矩阵计算的输入要求与阵列的输入容量匹配,或者如果矩阵计算的输入要求超过较大的输入阈值(例如,计算所利用的阵列输入的70-100%,等等),则可以将给定矩阵计算的输入要求视为较大。

另外,在某些情况下,用于产生矩阵乘法加速器的输出的混合信号计算结构大于矩阵乘法加速器的存储单元的列。在这种情况下,在单个存储单元列的宽度上实现矩阵乘法加速器的输出结构在技术上可能是困难或不切实际的。因此,如在该第四实施方式中实现的,多路复用器使矩阵乘法加速器的多个存储单元列能够共享公共输出电路(例如,多路复用器)。因此,通过以这种方式实现多路复用器,可以实现矩阵乘法加速器的输出电路的实用且有效的架构。

具体地,在一些实施例中,可以以串行方式在相同的矩阵乘法加速器上映射具有大输入和相对小输出的多个矩阵计算中的每一个。在这种配置中,多个矩阵计算中的每一个可以被映射为从矩阵乘法加速器的顶部延伸到矩阵乘法加速器的底部。

复用器可以被配置为使得用于多个矩阵计算的每个映射被映射到复用器的多个设置之一。因此,可以在多路复用器处向多个映射计算中的每一个分配不同的设置,使得可以将集体映射计算中的每一个视为优选地串行执行的一组独立阵列。即,多路复用器优选地起到选择性地激活矩阵乘法加速器的矩阵系数列之一的作用,从而使矩阵乘法加速器能够基于被激活的列串行地执行计算。

3.5按区域划分

如图7所示,描述了用于将多个矩阵计算映射到集成电路的矩阵乘法加速器的阵列的第五实现方式。特别地,该第五实现方式的作用是将多个矩阵计算映射到矩阵乘法加速器的许多小阵列,从而优化单个矩阵乘法加速器的使用。

具体地,该第五实施方式用于识别可以合理地一起布置在单个矩阵乘法加速器上的多个不同的矩阵计算。可以以紧凑的方式等将多个不同的矩阵计算布置在一起,以优化矩阵乘法加速器的矩阵输入容量(例如,阵列系数利用)。在这种配置中,具有多个不同的矩阵计算的矩阵乘法加速器的区域可以沿着矩阵乘法加速器的输入行和输出列重叠。即,虽然每个不同的矩阵计算映射到矩阵乘法加速器的特定区域,但是给定区域的输入和输出有可能与具有不同矩阵计算的另一区域的输入和输出重叠。

一旦多个不同的矩阵计算中的每一个被映射或布置在矩阵乘法加速器内,则第五实现方式可优选地起作用以通过选择矩阵乘法加速器的区域(例如,映射的不同矩阵计算)来激活同时停用具有其他矩阵计算的矩阵乘法加速器的其他区域来依次执行矩阵乘法加速器的每一个或多个不同的矩阵计算。这使得多个不同矩阵计算输入中的每一个能够在不受来自位于矩阵乘法加速器上的其他不同矩阵计算的输入和输出的干扰的情况下执行。

3.6组合的多个阵列或区域

描述了用于将多个矩阵计算映射到集成电路的矩阵乘法加速器的阵列的第六实现方式。在一些实施例中,可以实现具有超过矩阵乘法加速器的可用阵列的大量输入和/或大量输出的矩阵计算。在这样的实施例中,可以结合足够的可用矩阵输入容量来存储和/或执行矩阵计算的大量系数输入和/或大量输出来使用两个或更多个矩阵乘法加速器。

特别地,第六实现方式用于在两个或多个矩阵乘法加速器之间划分大型矩阵计算。即,第六实现方式将矩阵计算的大量输入的一部分和/或大量输出的一部分分配给两个或更多个矩阵乘法加速器中的第一个以及将矩阵计算的大量输出的另一部分分配给两个或多个矩阵乘法加速器中的第二个。第六实现方式可以起到在两个或更多个矩阵乘法加速器的区域之间分配输入的矩阵系数的作用,直到矩阵计算的所有矩阵系数输入被完全分发或分配为止。

在操作中,第六实现方式起作用以将向量输入应用于已经存储了矩阵计算的两个或更多个矩阵乘法加速器。第六实现方式优选地基于向量输入来收集由两个或更多个矩阵乘法加速器计算出的输出,并且将所收集的两个或更多个矩阵乘法加速器的输出进行组合。具体地说,第六实现方式使用逐元素求和将收集的两个或更多个矩阵乘法加速器的输出进行组合。也就是说,第六实现方式使用逐元素求和,可以通过将两个或更多个矩阵乘法加速器的不同加速器的一个或多个区域加在一起来组合两个或更多个矩阵乘法加速器的输出。例如,单个矩阵计算的矩阵系数输入(例如,算法的权重和/或系数)可以被映射到两个矩阵乘法加速器。在这样的示例中,如果将向量输入应用到两个矩阵乘法加速器,则可以使用逐元素求和来收集两个矩阵乘法加速器的输出并将它们求和。更具体地,可以将两个矩阵乘法加速器中的第一矩阵乘法加速器的第一列的输出与两个矩阵乘法加速器中的第二矩阵乘法加速器的第一列的输出求和。可替代地,可以将两个矩阵乘法加速器中的第一矩阵乘法加速器的第一区域的输出与两个矩阵乘法加速器中的第二矩阵乘法加速器的第一区域求和。附加地或可替代地,可以使用单指令多数据(simd)单元(或者,使用共享的算术逻辑单元)来实现两个或更多个矩阵乘法加速器的输出的求和,以减少两个或更多个矩阵乘法加速器输出的总和。例如,如果单个矩阵计算映射到矩阵乘法加速器的五个不同阵列,则可以在一个simd上执行矩阵乘法加速器的五个不同阵列的输出的降维求和。

因此,可以以允许将两个或更多个矩阵乘法加速器的适当区域相加在一起的任何适当方式对两个或更多个矩阵乘法加速器的输出进行求和,以产生相同的集合输出,就好像使用相同或单个矩阵乘法加速器实现了矩阵计算输入一样。

另外地或可替代地,在矩阵计算的输入超过矩阵乘法加速器的单个阵列的矩阵输入容量但是矩阵计算的多个输入使用或循环使用公共系数或权重的情况下,可以改变第六实现方式以启用多个多路复用器设置,以利用矩阵乘法加速器的单个阵列来处理矩阵计算的输入。例如,如果矩阵乘法加速器有1024个输入,但是矩阵计算需要2000个输入,则可以使用两个多路复用器设置来实现单个矩阵乘法加速器,以(按顺序)接收所有输入并可以在矩阵乘法加速器本身中,也可以在矩阵乘法加速器之外组合计算的结果乘积。

3.7来自正物理输入的负逻辑输入

描述了一种用于将矩阵计算映射到集成电路的矩阵乘法加速器的阵列的系统和/或方法。优选地,用于映射矩阵计算的方法包括配置矩阵乘法加速器,该矩阵乘法加速器可以起作用为仅接受正矩阵系数或权重输入值以接受和/或产生负逻辑输入。即,在一些实施例中,矩阵乘法加速器可能在功能上不能接受在矩阵乘法加速器阵列的它们的矩阵输入单元内的负矩阵输入。由于典型矩阵乘法加速器的这种限制,本申请的一些实施例用于重新配置典型矩阵乘法加速器以接受负逻辑输入,从而使得能够映射需要负输入的矩阵计算。

配置矩阵乘法加速器可以包括通过使矩阵乘法加速器的一个或多个矩阵输入位置处的矩阵输入(例如权重或系数)包括负矩阵输入(或负系数/权重等)以将需要负矩阵输入的矩阵计算映射到矩阵乘法加速器的阵列。具体地,该方法用于在矩阵乘法加速器的矩阵阵列的两条线之间分配或划分系数。在两条线中的第一条线中,可以包括正线,其使得能够基于在矩阵乘法加速器处接收到的输入信号来识别正输入。在两条线中的第二条线中可以包括负线,该负线使得能够基于在矩阵乘法加速器处接收到的输入信号来识别负输入。优选地,可以基于到矩阵乘法加速器中的输入信号的符号来有条件地激活第一线和第二线中的每条。

在一种实现中,如图8中的示例所示,当输入到矩阵乘法加速器的信号为正时,系统配置为沿顶线(或正线)传递输入,并且当输入到矩阵乘法加速器的输入信号为正,系统配置为沿底线(或负线)传递输入。因此,该系统可以包括比较器或用于确定输入信号的符号的其他组件。即,类似物的比较器可以用于确定输入值是正还是负。

一旦确定到矩阵乘法加速器的输入的符号是正还是负,该方法就起作用以在矩阵乘法加速器的矩阵输入位置处选择性地激活两个输入之一(例如,正系数或负系数)。优选地,诸如xor门之类的逻辑器件可以用于为二进制输入提供条件反转。在实现多位输入的一个变体中,实现该方法的系统可以起作用以结合使用双补码求逆和解复用器来为多位二进制输入提供条件求逆。

3.8多行输入

描述了用于将矩阵计算映射到集成电路的矩阵乘法加速器的阵列的第八实现方式。在一些实施例中,到矩阵乘法加速器的输入向量可以包括比矩阵乘法加速器的每输入元素的位更多的每向量元素的位。例如,每个输入向量元素可以是八位,而矩阵乘法加速器的每个元素可以是三位。因此,矩阵乘法加速器每个元素可能没有足够的位来针对每个元素具有更大位的输入向量成功执行计算。另外,在一些实施例中,为了在通过矩阵乘法加速器的阵列进行的处理计算中获得改进的技术性能,通过减少给定矩阵输入位置处的计算负荷,对输入向量的位进行拆分或扩展可以实现计算效率。例如,通过将输入向量的位分成两半,每一半由阵列的不同矩阵输入位置计算,由于计算负荷被分配给阵列内的多个具有计算能力的计算单元,因此输入向量的计算速度大约是原来的两倍。通过将单个输入向量的位扩展到阵列的更多矩阵输入位置中,甚至可以实现更高的性能效率。另外,矩阵乘法加速器的阵列还可以提供由于阵列的较少计算运行时间而产生的能量性能效率。

在一些实施例中,因为给定矩阵乘法加速器的输入和输出行的数目可以是固定的,所以可能有必要沿着矩阵乘法加速器移位系数以使得能够计算每个元素具有更大位的输入向量。根据该第八实现方式,可以将输入向量的位呈现在矩阵乘法加速器的不同行(例如,输入)上。为此,在将输入向量加载到矩阵乘法加速器之前,可以将矩阵乘法加速器的系数值移到不同的行上。

如图9中的示例所示,可以实现输入向量的多行输入,以使得矩阵乘法加速器的多行可以执行一位或两位(或任何合适数量的位)的计算。在多行一位实现方式中,输入向量的每个输入位都呈现在矩阵乘法加速器的不同行上。关于多行两位的实现方式,在矩阵乘法加速器的每一行上都呈现了输入向量的两个连续位。在这些实现方式中,矩阵乘法加速器的系数值沿多个不同的行被充分地复制或移位,以基于输入向量计算乘积。

可以按照包括以下示例中所述的任何适当方式来扩展位。在第一示例中,当两个输入可以用于表示一个8位输入(例如7、6、5、4、3、2、1、0)时,输入位可以如下拆分:7、6、5、4(用于第一输入)和3、2、1、0(用于第二输入)。在这样的第一示例中,权重或系数对于第一输入可以是w,对于第二输入可以是w/24。备选地,在第二示例中,当两个输入可以用于表示一个8位输入(例如7、6、5、4、3、2、1、0)时,可以按如下方式拆分输入位:对于第一输入为7、5、3、1,对于第二输入为6、4、2、0。如第二示例中所示实现位扩展可以操作以产生更准确的结果。

3.9多步输入

另外或替代地,描述了用于将矩阵计算映射到集成电路的矩阵乘法加速器的阵列的第九实现方式。如上文第3.8节所述,在某些情况下,矩阵乘法加速器的输入向量可能比矩阵乘法加速器的每输入元素的位包括更多的每向量元素的位。

根据该第九实现方式,可以以串行或步进方式在多个矩阵计算上划分输入向量位。可以将结果输出相加在一起以生成最终输出。在这种实现方式中,在对输出值求和之前,将多个计算的输出移位成对齐状态。可替代地,可以在从多个计算中添加新的输出值之前对累加寄存器进行移位。

另外,在矩阵乘法加速器的矩阵计算输入是时域复用的情况下,可以将输入向量位呈现给矩阵乘法加速器,并且矩阵乘法加速器可以起到执行计算的作用。矩阵乘法加速器的计算输出可以保持或存储在矩阵乘法加速器外部,直到实现求和过程为止。随后,可以在矩阵乘法加速器处呈现另一组或连续的一组输入向量位以进行计算。一旦通过连续的一组输入向量位执行了计算,就可以将输出移位并添加到矩阵乘法加速器的初始计算的先前输出结果中。

应理解,本文描述的方法是示例性方法,其可以以任何合适的顺序实施以实现权限范围内的发明和/或发明的实施方式,或者可以鉴于本文提供的公开内容而容易地想到。因此,顺序和处理步骤不应限于本文提供的示例性顺序。另外地或可替代地,本文中描述的方法、过程、技术和/或系统可以以任何适当的组合来执行,以实现集成电路的附加和/或增强的性能效率。

优选实施例及其变型的方法可以至少部分地体现和/或实现为配置为接收存储计算机可读指令的计算机可读介质的机器。指令优选地由优选地与光刻系统集成的计算机可执行组件以及由此实现的处理器和/或控制器的一个或多个部分来执行。可以将计算机可读介质存储在任何合适的计算机可读介质上,例如ram、rom、闪存、eeprom、光学设备(cd或dvd)、硬盘驱动器、软盘驱动器或任何合适的设备。计算机可执行组件优选地是通用或专用处理器,但是任何合适的专用硬件或硬件/固件组合设备可以替代地或另外地执行指令。

尽管为简洁起见被省略,但是优选实施例包括本文描述的各种方法、装置和系统的每种组合和排列。

如本领域技术人员将从前面的详细描述以及附图和权利要求中认识到的,可以对本发明的优选实施例进行修改和改变,而不背离在所附权利要求中限定的本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1