CN104238993A - 微处理器集成电路的向量矩阵乘积加速器 - Google Patents

微处理器集成电路的向量矩阵乘积加速器 Download PDF

Info

Publication number
CN104238993A
CN104238993A CN201410151469.5A CN201410151469A CN104238993A CN 104238993 A CN104238993 A CN 104238993A CN 201410151469 A CN201410151469 A CN 201410151469A CN 104238993 A CN104238993 A CN 104238993A
Authority
CN
China
Prior art keywords
unit
vector
input
matrix
data
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.)
Granted
Application number
CN201410151469.5A
Other languages
English (en)
Other versions
CN104238993B (zh
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.)
Analog Devices Global ULC
Analog Devices International ULC
Original Assignee
Ya De Promise Semiconductor Technology Co
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 Ya De Promise Semiconductor Technology Co filed Critical Ya De Promise Semiconductor Technology Co
Publication of CN104238993A publication Critical patent/CN104238993A/zh
Application granted granted Critical
Publication of CN104238993B publication Critical patent/CN104238993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3824Operand accessing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

在至少一个示例性实施例中,提供了一种微处理器电路,包括:微处理器内核,其经由具有预定整数条(J)数据线的数据存储器总线与数据存储器连接;单端口数据存储器,其构造成以预定向量元顺序存储N元向量的向量输入元,并且构造成存储包括M列矩阵输入元和行矩阵输入元的M x N矩阵的矩阵输入元;向量矩阵乘积加速器,其包括构造成将所述N元向量与所述矩阵相乘以计算出M元合成向量的数据通路,所述向量矩阵乘积加速器:输入/输出端口,其使所述数据存储器总线与所述向量矩阵乘积加速器连接;若干向量输入寄存器,其用于存储通过所述输入/输出端口接收的相应矩阵输入元。

Description

微处理器集成电路的向量矩阵乘积加速器
技术领域
本公开一般性涉及微处理器,更具体涉及微处理器集成电路的向量矩阵乘积加速器。
背景技术
在计算时间和功耗方面的带符号向量内积(SVIP)的有效计算在严重依赖于向量矩阵乘积的数字信号处理(Digital SignalProcessing)算法和应用中具有重要价值。例如,SVIP的加强应用是神经网络(Neural Net)系数矩阵、Hidden Markov Model转换矩阵以及Factor Graph图形矩阵。因为传统DSP内核和微处理器内核的数据通路难以适合有效SVIP计算,所以出于此目的,非常有利的是增加与本发明向量矩阵乘积加速器一样的定制硬件数据通路以降低DSP内核或微处理器内核的数据通路的计算负荷。
此外,本发明向量矩阵乘积加速器与具有有限数据传输带宽的单端口数据存储器系统或区域的数据总线之间的接口是重要的,以便在向量矩阵乘积加速器与现有DSP或微处理器内核的数据存储器总线之间提供有效集成。该接口对于在单端口数据存储器的最小总线周期内向向量矩阵乘积加速器传输大量输入矩阵元和/或输入向量元而言是重要的。因此,关键是使本发明向量矩阵乘积加速器与现有DSP或微处理器数据通路之间能够有效并行或同时操作以明显提高整个微处理器电路的乘法处理量。
发明内容
本公开的第一方面涉及一种微处理器电路,包括:
微处理器内核,其经由具有预定整数条(J)数据线的数据存储器总线与数据存储器连接,所述数据存储器构造成以预定向量元顺序存储N元向量的向量输入元,并且构造成存储包括M列矩阵输入元和N行矩阵输入元的矩阵的矩阵输入元;向量矩阵乘积加速器,其包括构造成将所述N元向量与所述矩阵相乘以计算出M元合成向量的多路MAC数据通路,所述向量矩阵乘积加速器包括:
输入/输出端口,其使所述数据存储器总线与所述向量矩阵乘积加速器连接,
若干向量输入寄存器,其用于存储通过所述输入/输出端口接收的相应输入向量元,其中各个输入向量元均由第一预定位数(X)表示,
若干矩阵输入寄存器,其用于存储通过所述输入/输出端口接收的相应矩阵输入元,其中各个矩阵输入元均由第二预定位数(Y)表示,
若干数字乘法累加电路,其包括与用于接收相应输入向量元的相应向量输入寄存器连接的相应二进制被乘数输入,并且包括与用于接收相应矩阵输入元的矩阵输入寄存器连接的相应二进制乘数输入,从而产生相应的中间乘积值,
二进制加法电路,其包括一个或多个二进制加法器,所述二进制加法器构造成使通过相应乘法器周期计算出的若干中间乘积值相加,以产生M元合成向量的合成向量元;
在一些实施例中,所述数字乘法累加电路的数量大致等于所述预定整数条数据线的条数(J)除以各个矩阵输入元的第二预定位数(Y)。另外,各个I、J、M、N、X和Y均为正整数。
在数字乘法累加电路的数量大致等于J除以Y的情况下,术语“大致”是指数字乘法累加电路的数量等于J除以Y并取整为最接近的整数。
在一个实例中,预定整数条数据线的条数(J)除以各个矩阵输入元的第二预定位数(Y)等于正整数,例如2、4、6或8。
因为数字乘法累加电路(MAC)的数量大致等于数据线(J)的条数或数据存储器总线的位宽除以矩阵输入元的位数(Y)或位宽,所以该向量矩阵乘积加速器的拓扑提供了与单端口数据存储器总线和矩阵输入元的通常预先给定的相应位宽之间的最优或接近最优的匹配。因为数据存储器总线的宽度或矩阵输入元的位宽通常不能改变,所以通过将该向量矩阵乘积加速器设计并整合在给定微处理器内核体系结构中,这种最优或接近最优的匹配具有相当高的价值。出于所有实践的目的,预先确定值由可编程微处理器/DSP内核体系结构类型限定,并且数字要求由与N x M矩阵有关的具体信号处理应用设定。通常,考虑到可用MAC的数量与数据存储器的可用存储带宽不正比例,微处理器/DSP内核设计成存储器缺乏系统。因为通过不使用可用MAC或通过增加端对端系统等待时间使主软件应用程序或例程的执行能够抑制这种限制,微处理器/DSP内核体系结构是没有存储器的。不幸的是,这些抑制导致了所执行的处理应用程序的明显性能下降。可用于给定微处理器/DSP内核体系结构的MAC通常与16位、24位、32位或64位基础数据类型中的任一者连接,所有这些基础数据类型对于指定精度与给定体系结构的基础数据类型不匹配的系统而言都将是次优的。
重要的挑战是设计性能与可用数据存储器带宽相关联的向量矩阵乘积加速器。因为理论上的最佳设计仅读取每个向量元和每个矩阵元一次,所以存储器带宽往往控制性能,即每秒进行向量矩阵输入元乘法的数量。因为矩阵元的数量远大于向量元的数量,所以向量矩阵乘积加速器的性能在很大程度上由矩阵输入元相对于可用数据存储器带宽的位宽决定。这些事实的结果是:可以发现并行数字乘法累加电路的最佳数量为数据存储器总线的位宽(J)除以矩阵输入元或系数的位宽(Y)。
在32位数据存储器总线结构上的矩阵输入元位宽的示例性数值为8、12或16,这分别产生4、3或2MAC拓扑的向量矩阵乘积加速器。在J除以Y为非整数值的实例中,在64位存储器数据总线上的各个矩阵输入元为12位位宽,这产生的非整数比值为5.33。当取整为最接近的整数时,该比值产生5MAC拓扑的向量矩阵乘积加速器。以下事实支持由本发明专用或定制向量矩阵乘积加速器带来的乘法性能的明显改进:如下面结合前述的典型存储器缺乏型微控制器/DSP系统体系结构进一步详细描述,矩阵输入元的实际位宽可以被优化并且以预定封装格式存储在数据存储器中。
预定整数条数据线的条数(J)优选为2的乘方,例如8、16、32、64和128,并且各个矩阵输入元均可以由8位或16位表示,即位宽Y。然而,各个矩阵输入元的位宽Y可以根据将要在向量矩阵乘积加速器上执行的具体信号处理算法或应用的特性而显著变化。然而,在许多实施例中,位宽Y是2的乘方,例如8、16或32。J可以设为32,Y设为8或16,从而分别导出在微处理器电路的向量矩阵乘积加速器中提供4和2个数字乘法累加电路。
单端口数据存储器可以包括已知存储器类型,例如RAM、EEPROM或闪存或者这些存储器类型的任何组合。单端口数据存储器优选可以访问微处理器内核和/或向量矩阵乘积加速器,以便将输入数据从指定存储空间或单端口数据存储器空间读取到向量加速器,或者将向量加速器计算的输出数据写入指定存储空间或单端口数据存储器空间。在本公开的一个实施例中,微处理器内核适合通过输入/输出端口从单端口数据存储器获取输入数据,并且将该输入数据(例如,向N元向量的量输入元以及M列和N行的相应矩阵输入元)写入向量矩阵乘积加速器。[应当注意,术语“获取”包括与取回、访问、识别、获得等有关的任何活动]。在替换实施例中,向量矩阵乘积加速器包括控制器或序列发生器,该控制器或序列发生器用于在没有微处理器内核的任何干涉的情况下通过输入/输出端口从单端口数据存储器的指定存储空间获取上述输入数据。在后一个实施例中,向量矩阵乘积加速器可以包括保存指向上述输入数据(例如,向量输入元和M x N矩阵的矩阵输入元)的相应指针地址的若干指针寄存器,从而允许控制器参考由指针地址指示的存储器地址读出所需的输入数据。向量矩阵乘积加速器还可以包括保存指向单端口数据存储器存储空间的指针地址的指针寄存器,分配该存储空间以便在计算出M元合成向量的合成向量元时对其进行存储。通过在微处理器系统通电或引导期间由微处理器内核执行的初始化过程,微处理器内核可以将指向上述输入/输出数据实体的相应指针地址写入指针寄存器。作为选择,通过具体应用程序的初始化例程或者利用向量矩阵乘积加速器的软件例程,微处理器内核可以写入指针地址。清楚的是,在初始化例程期间可以额外地加载其他类型的输入/输出数据或规定向量矩阵乘积加速器的一些数据处理特征的配置数据。
单端口数据存储器可以包括数据存储器,该数据存储器与微处理器电路一起集成在普通半导体模片(芯片内数据存储器)上并且通过芯片内沉积数据存储器总线与微处理器内核连接。作为选择,单端口数据存储器可以位于外部专用存储芯片上,或者包括这些类型的数据存储器,即芯片内数据存储器和芯片外数据存储器的组合。
根据本发明微处理器电路的另一个示例性实施例,单端口数据存储器构造成按列的顺序存储矩阵的矩阵输入元,使得M列中各列的矩阵输入元均保存在连续存储位置中。按照这种方式,所有M列元的矩阵输入元可以位于单端口数据存储器的连续存储位置或地址中。与矩阵输入元的按行排序相比,按列排序是有利的。矩阵输入元的按列排序仅使用一个本地累加器/加法器而与数字乘法累加电路的数量无关,按行排序为每个数字乘法累加电路都使用一个本地累加器/加法器。对于按列排序而言,如下面结合图4进一步详细阐述,通过建立进位保存(CS)加法器树或压缩加法器树来使用数字乘法器设计中的设计特征,可以减少在加法器树中的独立加法器的数量。
向量矩阵乘积加速器可以包括缓存,所述缓存与所述二进制加法电路连接并用于接收和临时存储所述M元合成向量的至少一个合成向量元。缓存可以包括寄存器文件或者单端口或双端口RAM。缓存的存储容量优选足够大以便同时存储M元合成向量的所有元,因为这一特征能够在整个M元合成向量在一个或较少传输会话中通过输入/输出端口写入单端口数据存储器的分配存储空间或区域时,减少在微处理器系统的数据存储器总线上的活动。
上述缓存的优选实施例包括可同时操作的第一独立单端口存储段和第二独立单端口存储段,其中,所述第一存储段构造成存储奇数编号的合成向量元,所述第二存储段构造成存储偶数编号的合成向量元。存储奇数和偶数顺序合成向量元的第一和第二独立单端口存储段取消了对双端口缓存装置(支持合成向量元的中间乘积值到缓存的同时读写)的需要。独立的单端口存储段允许向量矩阵乘积加速器的控制器或序列发生器将偶数或奇数顺序合成向量元的中间乘积值和最后合成向量元写入一个存储段,同时从其他存储段并行读取相反合成向量元以进一步处理。
二进制加法电路优选至少包括第一和第二操作码输入,第一操作码输入可以接收当前中间乘积值,而第二操作码输入接收前一个中间乘积值。按照这种方式,通过计算M元合成向量的各个合成向量元,二进制加法电路能够将通过若干乘法器周期产生的若干中间乘积值相加。
向量矩阵乘积加速器还包括多路转换器,所述多路转换器包括与所述二进制加法电路的第二输入连接的多路转换器输出。多路转换器可以用于将存储在相应单端口存储段中的奇数和偶数顺序的中间乘积值选择性地写入二进制加法电路的第二输入。
向量矩阵乘积加速器优选包括取整电路,取整电路包括用于接收所述合成向量元(例如,来自前述缓存)的取整输入。取整电路构造成产生所述合成向量元的相应取整数值。例如在缓存和取整电路中,合成向量元一般可以由第三预定位宽表示,其中取整电路构造成将各个合成向量元的数值截位成小于第三预定位宽的第四预定位宽。由于在上述各个合成向量元的计算期间,由数字乘法累加电路进行中间乘积值的通常大量的累加加法运算,因此计算出的各个合成向量元的第三预定位宽会明显大于矩阵输入元位宽与向量输入元位宽之和。与未截位或初始的合成向量元相比,通过对合成向量元取整或截位,可以以更小的功耗并使用更少的数据总线周期将合成向量元传送至单端口数据存储器并存储在其中。
一般来说,各个合成向量元的位宽(P)大约为:X+Y+Log2(累加加法运算的数量)以避免损失合成向量元的任何数字精度,其中,Y为各个矩阵输入元的位宽,X为各个向量输入元的位宽,N为N x M矩阵的行数。因此,如果X=8,Y=16并且N=1024,那么合成向量元的位宽应当为:8+16+Log2(1024)=34以避免损失数字精度。取整电路可以构造成通过将合成向量截位为更小的位宽(例如,32位、24位或16位)来对该合成向量元的初始34位位宽表达式进行取整。与未取整或初始的合成向量元相比,可以以更小的乘方并使用更少的总线周期将截位的合成向量元传送至单端口数据存储器并存储在其中。
向量矩阵乘积加速器还可以包括饱和电路,饱和电路包括上下饱和阈值和接收所述合成向量元的饱和输入。饱和电路还构造成根据所述上下饱和阈值生成所述合成向量元的饱和数值。饱和电路可以限制合成向量元的最大值和最小值以保持在预定范围内,这可以有利于防止向量矩阵乘积加速器中的数字溢出或下溢问题。向量矩阵乘积加速器的一些实施例可以同时包括对未取整或初始的合成向量元进行操作的取整电路和饱和电路。
向量矩阵乘积加速器优选包括控制器或序列发生器,所述控制器或序列发生器以可操作的方式与输入/输出端口、若干向量输入寄存器、若干矩阵输入寄存器、若干数字乘法累加电路和二进制加法电路连接以控制数据的处理操作。序列发生器可以包括适当配置的数字状态机,例如包括组合和顺序的数字逻辑电路。
本公开的第二方面涉及一种集成半导体模片或芯片,该集成半导体模片或芯片包括根据上述任一实施例所述的微处理器电路。
本公开的第三方面涉及一种操作微处理器电路的向量矩阵乘积加速器以使N元向量与M x N矩阵相乘的方法,包括:
a)从单端口数据存储器获取所述N元向量的若干向量输入元,其中,所述向量输入元按预定向量元顺序存储在第一预定地址空间中,
b)将所述向量输入元临时存储到相应的向量输入寄存器中,其中,各个向量输入元均由第一预定位数(X)表示,
c)从单端口数据存储器获取所述M X N矩阵的若干矩阵输入元,其中,所述若干矩阵输入元按预定顺序存储在第二预定地址空间中,
d)将所述若干矩阵输入元(例如,临时)存储到相应的矩阵输入寄存器中,其中,各个矩阵输入元均由第二预定位数(Y)表示,
e)并行地将相应对的向量输入元和矩阵输入元施加给若干数字乘法累加电路,
f)通过所述若干数字乘法累加电路并行地使相应对的向量输入元和矩阵输入元相乘以产生中间乘积值,
g)通过对所述N元向量的连续向量输入元和所述M x N矩阵的连续矩阵输入元进行若干乘法器周期来重复a)–f)若干次,以计算出若干中间乘积值,
h)在二进制加法电路中将所述若干中间乘积值相加,以产生M元合成向量的合成向量元;M、N、X和Y均为正整数。
根据本发明操作向量矩阵乘积加速器的方法的一个示例性实施例,通过具有预定整数条(J)数据线的数据存储器总线获取所述若干矩阵输入元和所述若干向量输入元。如结合本公开第一方面所详细描述,并行运行的数字乘法累加电路的数量大致等于所述预定整数条数据线的条数(J)除以各个矩阵输入元的第二预定位数(Y)。
本发明的方法还可以包括:
i)将所述M x N矩阵中各个列的矩阵输入元按列的顺序写入第二预定地址空间,使得M列中各列的矩阵输入元均保存在预定地址空间的连续存储位置中。已经在前面论述了有关矩阵输入元的按列排序的优点。
本发明的方法还可以包括:
j)将M元合成向量的至少一个合成向量元从所述二进制加法电路写入所述向量矩阵乘积加速器的缓存以进行临时存储。优选的是,将所有M个合成向量元都临时存储在缓存中,以便随后传送至单端口数据存储器。因此,操作向量矩阵乘积加速器的方法的一个实施例包括:
l)通过总线输入/输出端口将M元合成向量的合成向量元从所述缓存写入所述数据存储器总线,
m)将所述合成向量元存储到所述单端口数据存储器的第三预定地址空间中。
附图说明
将结合附图更详细地描述本公开的示例性实施例,附图中:
图1是根据本公开的一个示例性实施例的包括微处理器内核和向量矩阵乘积加速器的微处理器电路的简化结构示意图。
图2A)和图2B)是N元向量与M x N矩阵进行乘法运算以导出M元合成向量的示意图,
图3是根据一个示例性实施例的向量矩阵乘积加速器的多路MAC数据通路的简化结构示意图,
图4A)和图4B)分别是替换N元向量和M x N矩阵乘法运算及其相应MAC数据通路拓扑的示意图,
图5是根据一个示例性实施例的向量矩阵乘积加速器的简化结构示意图,
图6是根据一个示例性实施例的向量矩阵乘积加速器的边界和接口的示意图;以及
图7是根据本公开的第二示例性实施例的支持欧几里得(Euclidian)距离计算的向量矩阵乘积加速器的简化结构示意图。
具体实施方式
图1是根据本公开的一个示例性实施例的包括微处理器内核101和向量矩阵乘积加速器105的微处理器电路100的简化结构示意图。微处理器内核101经由数据存储器总线130与单端口数据存储器103连接。数据存储器总线130在本公开的实施例中包括32条数据线,但是其他实施例可以处理不同整数条数据线,例如8条、16条、64条和128条。微处理器内核101可以包括从ARM Holdings获得的标准ARM Cortex-M4处理器内核,或者任何其他软件可编程专属或标准微处理器和/或DSP内核。如附图示意性示出,单端口数据存储器103可以与微处理器内核101和向量矩阵乘积加速器105集成在共同的半导体晶粒或基板上。作为选择,单端口数据存储器103可以设置在可经由适当的外部存储接口访问的单独的专用存储芯片上,或者可以实现为芯片上与外部(芯片外)数据存储器的组合。
微处理器电路100可以形成在用适当数字半导体方法制造的单半导体晶粒(例如,0.35μm、0.18μm或0.065μm CMOS)上。单端口数据存储器103可以包括例如RAM、EEPROM以及闪存或这类存储器的任意组合。微处理器电路100可以包括若干外部可访问的I/O管脚或焊点(由I/O_1、I/O_2、I/O_3、I/O_4和I/O_N示意性示出),以便向外部电路或装置(例如,一件电子设备的传感器、显示器、键盘等)提供数量连通性。这件电子设备可以包括便携式终端,例如平板电脑、智能电话、移动电话等。
本公开可以涉及包括向量矩阵乘积加速器的微处理器电路。向量矩阵乘积加速器用作标准/常规或专属DSP内核或者微处理器电路的微处理器内核的专用数学协处理器。向量矩阵乘积加速器包括若干数字乘法累加电路,该数字乘法累加电路尤其适合与N输入向量元与包含M列输入矩阵元和N行输入矩阵元的M x N矩阵相乘有关的带符号向量内积(SVIP)的计算。
在至少一个示例性实施例中,微处理器电路包括经由数据存储器总线与单端口数据存储器连接的软件可编程微处理器内核。数据存储器总线包括预定整数(J)条数据线。单端口数据存储器用于按照预定向量元顺序存储N元向量的向量输入元,存储包括M列矩阵输入元和N行矩阵输入元的矩阵的矩阵输入元。微处理器电路包括向量矩阵乘积加速器,该向量矩阵乘积加速器包括用于将N元向量与矩阵相乘以计算M元合成向量的多路MAC数据通路。向量矩阵乘积加速器包括用于存储相应输入向量元的若干向量输入寄存器,其中各个输入向量元均由第一预定位数(X)表示。
向量矩阵乘积加速器还包括用于存储相应矩阵输入元的若干矩阵输入寄存器,其中各个矩阵输入元均由第二预定位数(Y)表示。若干数字乘法累加电路包括与接收相应输入向量元的相应向量输入寄存器配合的相应二进制被乘数输入,并且包括与接收相应矩阵输入元的矩阵输入寄存器配合的相应二进制乘数输入,从而产生中间乘积值。二进制加法电路用于对通过相应乘法周期计算出的若干中间乘积值求和,以产生M元合成向量的合成向量元。数字乘法累加电路的数量基本上等于能够被各个矩阵输入元的第二预定位数(Y)整除的数据线的预定整数条数。I、J、M、N、X和Y均为正整数。
在一个实例中,本发明的向量矩阵乘积加速器包括多路MAC数据通路,其中数字乘法累加电路的数量最优或接近最优地制定为数据线的给定条数或数据存储器总线的位宽和输入矩阵元的给定位宽。数据存储器总线和矩阵元的相应位宽分别是由所选微处理器或DSP内核的体系结构限定的通常预先确定值和与N x M矩阵有关的具体信号处理应用程序所使用的各种数字标记。
U.S.8,051,124B2相应地公开了矩阵乘法硬件模块(也称为“内核”),该矩阵乘法硬件模块基于可用于处理的数据元的数量使用可变数量的乘法累加(MAC)单元。在两个矩阵的乘法中使用的MAC单元的数量会根据矩阵计算阶段而随时间变化。第一数据总线和第二数据总线将数据提供至矩阵乘法硬件模块并且从矩阵乘法硬件模块提供数据。各个存储区均专用于将被相乘的两个输入矩阵之一。独立的数据总结可以同时被乘法硬件模块读取。可以用FPGA技术或ASIC技术实现所公开的乘法硬件模块。
在图1的实例中,单端口数据存储器103经由共享数据存储器总线130与向量矩阵乘积加速器105(或向量加速器)和微处理器内核101连接。向量加速器105与单端口数据存储器103的相互连接使向量加速器105能够在没有微处理器内核101干涉的情况下在单端口数据存储器103中访问、获取和写入相关数据。该特征可以导致明显的节能和微处理器内核101的计算负荷的减少。如下文详细描述,单端口数据存储器103保存读入向量加速器105或从向量加速器105读出的各种输入输出数据。如下文结合图2A)、图2B)和图3详细描述,向量加速器105通过定制的多路MAC(乘法累加电路)而用于将N元向量与M X N矩阵相乘,从而得出M元合成向量。
此外,微处理器内核101可以包括数据通路,该数据通道与向量加速器105的定制的多路MAC并行操作,从而为整个微处理器电路100提供较高乘法性能。可以通过向量加速器105的数据总线端口提供数据存储器总线130的适当总线仲裁,从而允许微处理器内核和向量加速器105能够在没有冲突和不可接受的等待状态的情况下访问数据存储器103。根据在微处理器内核101上运行的具体应用程序的存储器加载配置文件,可能的存储器仲裁方案包括:授权微处理器内核101对低存储器加载配置文件进行存储器访问的简单优先级仲裁器,或者对高存储器加载配置文件进行访问的循环调度仲裁器。向量加速器105本身具有高加载配置文件并且在活动时几乎消耗可用存储器带宽的100%。根据一个实施例,数据存储器103被分成若干子存储体/子存储块,并且通过使用适当仲裁和软件存储配置允许微处理器内核101和向量加速器105能够并行访问数据存储器103而具有相当多的好处。
微处理器电路100通常会包括若干额外电路(例如,中断控制器、DMA控制器和通道)、专用数字音频I/O端口(例如,基于音频端口的I2S或SLIM总线)、串行数据通信接口(例如,SPI或I2C等)。向量加速器105能够使微处理器内核101卸载与N元向量与M x N矩阵的乘法有关的许多相应乘法运算。该任务可以改为由向量加速器105处理,使得微处理器内核101可以只等待向量矩阵乘法运算的完成,其中M元合成向量已经写入数据存储器103的已知地址空间。此后,微处理器内核101可以访问计算出的M元合成向量并根据具体软件应用程序或例程应用适当的数据操控或处理运算。微处理器内核101的数据通路可以用于在等待可利用的新M元合成向量的同时执行包括数学运算在内的其他运算,从而并行使用微处理器电路100并同时占用微处理器电路的所有数学计算资源。
图2A)和图2B)是N元向量203与M x N矩阵205进行乘法运算以导出M元合成向量207的示意图。M和N均为正整数。图FIG2A)示出向量输入元或系数如何与M x N矩阵205的第一列的N矩阵输入元的相应元相乘,以计算出M元或系数合成向量207的第一合成向量元或系数。图2B)示意性示出了该计算,其中,V[0]*C[0]+V[1]*C[1]+V[2]*C[2]….V[N-1]*C[N-1]的乘法导出第一合成向量元S[0]。通过M x N矩阵205的第二列与N元向量进行相应的乘法运算来计算出第二合成向量元。通过继续进行M x N矩阵205的M列中的剩余列(M-2),依次计算出M元合成向量207的剩余合成向量元S[2],S[3],S[2]...S[M-1]。
为了方便向量输入元和矩阵输入元的寻址和读取,这些元优选以适当的预定地址和适当的预定顺序存储在数据存储器103中。向量加速器105的存储器访问部分或数据总线端口利用该地址和顺序信息以适当的顺序将向量输入元读入向量加速器105。虽然各个向量输入元的大小或位宽可以根据具体算法或应用程序的指定要求而变化,但是可以为例如8位、16位或32位中的任何一者。因此,一个向量元可以占用数据存储器的1-4个字节。单个向量输入元的N元向量203的大小(即,整数(N))也可以根据将要执行的具体算法或应用程序的指定要求而明显变化。在许多实用应用程序中,N的数值为32-1024。N向量输入元优选设置在数据存储器103的第一预定地址空间的连续存储地址中。此外,如果各个向量输入元大于8位,那么向量元的单独部分优选也按照已知顺序(例如,从MSB部分到LSB部分的连续顺序)设置,以便能够正确解释向量元的数值。
各个矩阵输入元的大小或位宽可以根据具体算法或应用程序的指定要求而变化,但是可以为例如8位或16位。M x N矩阵205自身的大小遵循所选的行数数值N,同时列数M可以根据具体算法或应用程序的指定要求而变化。在许多实用应用程序中,M的数值设置为32-256。语言命令识别系统是一种示例性算法或应用程序,并且可以使用16位位宽和8位位宽的倒谱域向量元作为特征矩阵的矩阵元。倒谱域向量可以包括大约40个倒谱或倒谱数值,即,与导出M x N矩阵205的250列(M)矩阵输入元的250个神经网络节点进行比较的40个向量输入元(N)。本发明向量矩阵乘积加速器的另一种适当应用领域涉及生物语音识别系统,其中,识别系统可以包括大约4秒的记录语音音频,该记录语音音频产生大约100个输入向量元(N),这些输入向量元均呈16位位宽的倒谱值的形式。这100个倒谱域值与表示16位位宽的匹配值的50个矩阵输入元(M)进行比较。
矩阵输入元或系数优选设置在数据存储器103的第二预定地址空间的连续存储地址中。然而,可以存在至少两种不同的存储排列方式,即按列排序或按行排序,在按列排序的实施例中,M x N矩阵205的矩阵输入元按列顺序存储,使得M列中的各个列的矩阵输入元保存在第二预定地址空间的连续存储位置中。当一列(例如,第一列的元C[0]、C[1]、C[2]和C[3]......C[N-1])完整时,直接下一列的矩阵输入元(例如,C[N])此后位于与C[N+1]C[N+2],C[N+3]......C[2N-1]有关的第二预定地址空间的连续存储位置中,使得矩阵输入元的所有M列按照连续的列顺序存储。在替换的按行顺序的实施例中,M x N矩阵205的矩阵输入元按照行顺序存储,使得N行中的各个行的矩阵输入元保存在第二预定地址空间的连续存储位置中。当一行(例如,第一行的元C[0],C[N]……C[M*N-(N-1)])完整时,直接下一行的相应矩阵输入元(例如,C[1],C[N+1]……C[M*N-(N-2)]])此后位于第二预定地址空间的连续存储位置中,使得N个矩阵行中的矩阵输入元的所有行连续地排列。如参考图4更详细地论述,矩阵输入元的按列排序组织与按行排序组织的之间的选择对于向量加速器105的多路MAC数据通路的设计和操作而言具有显著的影响。
图3是根据一个示例性实施例的向量加速器105的多路MAC数据通路301的示意性结构图。多路MAC数据通路301被优化为前述的矩阵输入元按列排序的结构。多路MAC数据通路301包括4个并行运行的与相应加法器303和305结合的数字乘法累加电路MAC1、MAC2、MAC3和MAC4。多路MAC数据通路301包括4个独立向量输入寄存器V[0]、V[1]、V[2]和V[3],向量输入寄存器分别以所选位宽和二进制表示(例如,16位整数格式)存储前述向量输入元中的相应向量输入元。保存在独立向量输入寄存器V[0]、V[1]、V[2]和V[3]中的数值适用作为MAC1-MAC4的相应被乘数输入。此外,多路MAC数据通路301还包括4个独立矩阵输入寄存器C[0]、C[1]、C[2]和C[3],矩阵输入寄存器分别以所选位宽和二进制表示(例如,8位整数格式)存储前述矩阵输入元中的相应矩阵输入元。保存在独立矩阵输入寄存器C[0]、C[1]、C[2]和C[3]的系数或元适用作为MAC1-MAC4的相应乘数输入。因此,MAC均用于将具体一对向量输入元与矩阵输入元数字相乘,并且产生中间乘积值作为输出。在本发明多路MAC数据通路301的实施例中,相应中间乘积值提供至二进制加法器303、305和307的相应输出303a、305a和307a。第一二进制加法器303用于将MAC1和MAC2传送的中间乘积值相加,而第二二进制加法器305用于将MAC3和MAC4传送的中间乘积值相加。这些二进制加法器的设计适用于向量输入元和矩阵输入元的所选位宽和二进制表示。第一二进制加法器303和第二二进制加法器305的加法器输出303a和305a优选表示位宽大于向量输入元和矩阵输入元的位宽之和(即,大于8位+16位=24位)的中间乘积值,以便保持这些中间乘积值的高度数字精确性。然后,第一二进制加法器303和第二二进制加法器305传送的中间乘积值在第三二进制加法器307中相加,并且产生另一中间乘积值作为输出307a,输出307a表示保存在相应寄存器C[0]、C[1]、C[2]和C[3]以及V[0]、V[1]、V[2]和V[3]中的向量输入元与矩阵输入元的乘法运算的总和。最后,第四二进制加法器309具有连接在第三加法器307的输出307a以接收中间乘积值的一个输入,和与保存多路MAC数据通路301的前一数据通路周期的中间乘积值S[m]的寄存器连接的另一端。因此,第四二进制加法器309的输出S[m]将会根据N元向量与N x M矩阵的第一列之间的乘法运算(参考图2)的当前完成状态来表示另一中间乘积值还是M元合成向量的合成向量元。当四个最后向量输入元(包括V[N-1])已经与四个最后矩阵输入元(包括C[N-1])如上文所述相乘时,结束该乘法运算步骤,从而留下与M元合成向量的第一合成向量元S[0](参考图2)相等的第四二进制加法器309的输出。因此,通过执行若干数据通路周期来首先计算上述中间乘积值并最终形成合成向量元的方式,来实现多路MAC数据通路301对各个合成向量元的计算。数据通路周期的实际数量取决于N的数值和数字乘法累加电路的数量。在一个示例性实施例中,N的数值为1024并且数字乘法累加电路的数量为4,导出执行256个数据通路周期来计算M个合成向量元中的每一个合成向量元。数据通路301的其他实施例可以包括管线,管线会导致计算M个合成向量元中的每一个合成向量元的计算时间略微延长,其中数据通路周期的数量等于N/4+([管线阶段数量]–1)。所示的数据通路实施例301仅包括一个管线阶段,因而根据上述公式,数据通路周期的数量为N/4+1–1。
优选的是,M元合成向量的合成向量元临时存储在例如寄存器文件或RAM等适当缓存(未示出)中,缓存以可操作的方式与第四二进制加法器309的输出S[m]连接。该缓存优选保存在向量加速器105中,使得全部M元合成向量可以在一个传输会话(如下面结合图5更详细地描述)中经由前述数据总线端口传送至微处理器系统的数据存储器。
由于32位数据存储器总线的指定位宽(即,数据线的数量)和8位矩阵输入元的指定位宽,本发明向量加速器101的数字乘法累加电路MAC1-4的数量已经按照最优的方式进行了选择。数字乘法累加电路的数量已经选择为数据存储器总线的位宽除以各个矩阵输入元的位宽=32/4,从而得出所示的四个独立并且并行运行的MAC。数据存储器总线的32位容量允许总线能够以适当顺序同时保存四个矩阵输入元,使得这些矩阵输入元可以在一个数据总线周期中写入四个独立矩阵输入寄存器C[0]、C[1]、C[2]和C[3]。因此,提供了矩阵输入元从单端口数据存储器到向量加速器105的有效传送。此外,因为以16位格式表示各个向量输入元,所以数据存储器总线的32位容量使总线能够以适当顺序同时保存两个向量输入元,使得这些向量输入元可以在一个数据总线周期中写入四个独立向量输入寄存器V[0]、V[1]、V[2]和V[3]的两个向量输入寄存器。因此,写入向量加速器105的所有四个向量输入元只占用两个数据总线周期。
图4A)是矩阵输入元C[0]、C[1]、C[2]和C[3]的前述按列排序组织以及相应的MAC数据通路拓扑或树207的示意图。四个独立MAC(MAC1-4)位于数据通路示意图的最上部分,而最后或第四加法器309由“ACCUMULATOR”表示并位于最下部。作为对比,图4B)是矩阵输入元C[0]、C[1]、C[2]和C[3]的前述替换按行排列组织以及相应的MAC数据通路拓扑或树217的示意图。四个独立MAC(MAC1-4)位于数据通路示意图的最上部,而总共四个加法器在数据通路的输出位置使用并由示意图最下部的“ACCUMULATOR”表示。
分别比较按列排序和按行排序的数据通路拓扑207和217,一些明显的重要特征是:按列排序的拓扑仅使用一个本地累加器/加法器而与并行MAC的数量无关,按行排序拓扑为每个MAC都使用一个本地累加器/加法器。对于按列排序的拓扑而言,通过建立进位保存(CS)加法器树或压缩加法器树来使用数字乘法器设计中的设计特征,可以优化在加法器树中的独立加法器的数量。对于按行排序的拓扑而言,不能利用这些设计特征来降低加法器树的复杂性并减少模片区(die area)。因此,通常使用按列排序的数据通路拓扑,其中并行MAC的数量较多(例如,超过3个)。
图5是根据一个示例性实施例的向量矩阵乘积加速器105的简化结构示意图。向量加速器105包括前述的多路MAC数据通路,并且由多路MAC电路505、最后一个二进制加法器309、表示为V[registers]的四个向量输入寄存器V[0]、V[1]、V[2]和V[3]以及表示为C[registers]的矩阵输入寄存器C[0]、C[1]、C[2]和C[3]。向量输入寄存器和矩阵输入寄存器的数量可以定制为多路MAC数据通路中的并行MAC的数量,使得在执行数据通路乘法周期之前,每一个MAC都具有相应的向量输入元和矩阵输入元。
向量加速器105包括前述数据总线端口503,数据总线端口503提供数据接口或多路MAC数据通路与数据存储器总线130之间的I/O端口并且与单端口数据存储器103连接。通过适当配置的逻辑状态机器或控制器(未示出)来控制向量加速器105的电路块(例如,数据总线端口503、向量输入寄存器、矩阵输入寄存器、多路MAC数据通路等)的相应操作。在本实施例中,控制器还构造成:在没有微处理器内核101的参与的情况下,通过数据总线端口503从单端口数据存储器103的指定存储空间获取上述向量输入元和M x N矩阵的矩阵输入元。另外,控制器还构造成:将M元合成向量的合成向量元写入单端口数据存储器103的分配为保存合成向量元的预定地址空间。为此,控制器包括若干指针寄存器(未示出),指针寄存器保存指向上述向量输入元、矩阵输入元和合成向量元的相应指针地址,从而允许控制器参考指针地址指示的存储器地址读出或写入上述输入/输出数据。通过在微处理器系统通电或引导期间由微处理器内核执行的初始化过程,微处理器内核可以将指向上述输入/输出存储器空间或地址的相应指针地址写入指针寄存器。作为选择,通过具体应用程序的初始化例程或者利用向量矩阵乘积加速器105的软件例程,微处理器内核可以写入指针地址。
除了前述电路块以外,向量加速器105包括取整饱和电路515,该取整饱和电路与分段缓存的输出连接,该分段缓存包括可同时操作的第一和第二独立单端口存储段511和513。第一存储段511用于存储奇数编号的合成向量元(即,S[1]、S[3]等),第二存储段513用于存储偶数编号的合成向量元(即,S[0]、S[2]等)。取整电路部分515的输入接收来自分段缓存的合成向量元并且生成合成向量元的相应取整数值。应当注意,由于在上述各个合成向量元的计算期间,由多路MAC数据通路进行中间乘积值的通常大量的累加加法运算,因此计算出的各个合成向量元可以用明显大于矩阵输入元位宽与向量输入元位宽之和的预定位宽进行表示和存储。一般来说,各个合成向量元的位宽(P)大约为:
X+Y+Log2(累加加法运算的数量)以避免损失合成向量元的任何数字精度,其中,Y为各个矩阵输入元的位宽,X为各个向量输入元的位宽,N为N x M矩阵的行数。因此,在X=8,Y=16并且N=1024的实施例中,合成向量元的位宽为:8+16+Log2(1024)=34。
取整饱和电路515可以构造成通过将合成向量截位为更小的位宽(例如,32位或16位)来对该合成向量元的初始34位位宽表达式进行取整。与初始合成向量元相比,可以使用更小的乘方和更少的总线周期传送截位的合成向量元并将其存储在单端口数据存储器中。饱和电路部分可以用于在从分段缓存读取期间防止由合成向量元的溢出或下溢产生的不期望的数字“环绕”效应。饱和电路可以限制合成向量元的最大值和最小值以保持在预定范围内。在一个实施例中,饱和电路可以包括上下饱和阈值,并且可以使用于接收合成向量元的输入饱和。饱和电路用于根据上下饱和阈值生成合成向量元的饱和值。取整或饱和的合成向量元经由数据总线517从取整饱和电路515的输出传送至数据总线端口503,该数据总线端口再进行处理以将取整或饱和的合成向量元写人前述单端口数据存储器103的预定或已知地址空间。
分段缓存的第一和第二独立单端口存储段511和513被交替存储奇数和偶数顺序合成向量元的控制器使用。控制器使用双输入多路转换器507的选择输入(选择器)来判断是否从第一单端口存储段511或第二单端口存储段513中减去提供给最后加法器309的第二加法器输入的前一中间乘积值。第一和第二独立单端口存储段511和513可以分别包括相应寄存器文件或相应RAM或任何其他适当类型的数字存储器。存储奇数和偶数顺序合成向量元的第一和第二独立单端口存储段511和513的使用取消了对双端口型存储装置(支持合成向量数据到缓存的同时读写)的需要。分段缓存设计或体系结构允许控制器将偶数或奇数顺序合成向量元的中间乘积值和最后合成向量元写入一个存储段,同时并行读取其他存储段的相反合成向量元以在例如取整饱和电路515中进一步处理。如果向量输入元或矩阵输入元都不在本地缓冲到向量加速器105中,则使用分段缓存设计。然而,在矩阵输入元的前述按列排序组织中,向量输入元优选在本地存储在向量加速器105中,使得分段缓存511和513被本地累加器代替。
在N元向量与M x N矩阵的乘法中,可以在控制器的控制下执行以下序列:通过数据总线端口503并按照已知向量元顺序从单端口数据存储器的指定地址空间(如前述数据指针所指)读取N元向量的四个向量输入元。四个向量输入元以有关位宽和数字格式方面的适当表达式临时存储在相应的向量输入寄存器V[registers](例如,16位寄存器或32位寄存器)中。再次使用前述数据指针,通过数据总线端口503并按照已知矩阵元顺序从单端口数据存储器的指定地址空间读取M x N矩阵的第一列的四个矩阵输入元。四个矩阵输入元以有关位宽和数字格式方面的适当表达式临时存储在相应的矩阵输入寄存器C[registers](例如,8位寄存器或16位寄存器)中。在第一乘法器或乘法周期中,然后第一向量输入元和第一矩阵输入元分别施加给第一MAC(参考图3)的乘数或被乘数输入(或者反之亦然)。同时,向量输入元与矩阵输入元的其余对按照相应的方式施加给其余MAC2-4的相应输入,使得所有MAC同时或并行运算来计算相应的中间乘积值。然后,在本实施例中通过加法器电路或加法器树(包括前述加法器307和309)对这些中间乘积值进行加法或求和运算,从而产生第一中间乘积值S[m]。中间乘积值S[m]临时存储在分段存储器中。然后,对四个连续新向量输入元和四个新矩阵输入元的各个组重复该乘法或乘法器周期若干次,直到遍历了N元向量的所有N个向量输入元和第一列的所有矩阵输入元并且计算出第一合成向量元的值(在图2中的S[0])为止。在包括1024个向量输入元并且在每个乘法器周期中使四个向量输入元相乘的实施例中,使用总共256个乘法器周期来计算一个合成向量元。
此后,对M x N矩阵的其余M-1列重复上述计算第一合成向量的乘法周期M-1次,以计算出其余M-1个合成向量元。如前文所述,第一合成向量元优选写入用于临时存储的缓存,这一点同样适用于其余的合成向量元。因此,完整的M元合成向量在读出之前临时存储在缓存中,然后可选地进行取整和/或饱和处理以及通过数据总线端口503使M个合成向量元传送到单端口数据存储器的指定存储空间(如指向合成向量的前述数据指针所指示)。
图6是根据一个示例性实施例的向量矩阵乘积加速器105的边界和接口的示意图。示意性边界图示出与控制信号和向量加速器105、微处理器内核10与单端口数据存储器103之间的数据I/O有关的优选接口。向量加速器105包括低电平有效复位输入603,该低电平有效复位输入提供向量加速器105的数字区块的全局复位并且例如为向量输入寄存器、矩阵输入寄存器、二进制加法器以及各种构造的寄存器和其他存储元件。向量加速器105的允许输入605与向量加速器的时钟网络的门控时钟电路(未示出)连接。在允许输入保持低电平的情况下,微处理器内核可以通过禁止时钟信号到达向量加速器105的数字区块来中断或停止向量加速器105的操作。当向量加速器105不被使用时,可以降低其功耗。向量加速器105还包括时钟输入,上述达到向量加速器105的数字区块的时钟信号来自该时钟输入。因此,提供至时钟输入607的时钟信号用作向量加速器105的系统时钟,并且通过前述数据总线端口使其操作独立于时钟信号的有效性,在本实施例中数据总线端口包括ABH主端口611和ABH从端口613。ABH主端口611可以与微处理器内核的存储仲裁器连接,并且与微处理器系统的前述数据存储器总线和单端口数据存储器连接。ABH从端口613可以被微处理器内核使用,从而有权写入向量加速器105的一些控制寄存器(例如,前述指针寄存器)。AHB从端口613可以包括各种适当控制端口(例如,先进外围总线(APB,Advanced Peripheral Bus)或直接寄存器控制)。AHB从端口613优选用于初始化或设置各种数据指针,启动向量加速器105的乘法并且通常配置向量加速器105的一个或多个可写子电路(例如,取整饱和电路515)的功能。向量加速器105最后包括完成输出609,该完成输出发出M元合成向量计算完成的信号。该完成输出609优选与微处理器内核101连接,从而允许微处理器内核能够从分配的存储空间读取M元合成向量并对其进行操作。出于对例如中断输入端口发送信号的目的,完成输出609可以与微处理器内核101的适当数据端口连接。
图7是根据本公开的第二示例性实施例的支持欧几里得(Euclidian)距离计算的向量矩阵乘积加速器700的简化结构示意图。该向量矩阵乘积加速器700与涉及图5的前述向量加速器105共享许多特征,并且用相应的附图标记表示相应的特征以方便对比。当在现有微处理器内核上执行时,Euclidian距离计算通常消耗大量的数值处理资源。这种资源消耗尤其是由于Euclidian距离计算涉及减法运算然后进行乘法运算的事实造成的。该顺序往往打破传统DSP内核的数据流,传统DSP内核设计成乘法之后进行加法的顺序。为了支持Euclidian距离计算的减法运算,向量矩阵乘积加速器705包括排列在多路MAC电路705之前的若干减法电路或单元721a-d。各个减法电路或单元721a-d设置成从V[registers]和C[registers]接收成对的矩阵输入元和向量输入元并且对其进行减法运算。每一个减法运算的结果都输入到一对加法器723a和723b的相应第一输入,而加法器的第二输入分别接收向量输入元和矩阵输入元。每一对加法器(例如,加法器723a和723b)的输出都施加给多路MAC电路705的乘法器的被乘数和乘数输入。最后,可选的SQRT电路717设置在取舍饱和电路715的前部并支持Euclidian距离计算的平方根运算的最后完成。值得注意的是,虽然孤立地看SQRT电路717的增加消耗了半导体模片区,但是SQRT电路717同样减少了在取舍饱和电路715中用于表示合成向量元的位数,因而减小了取舍饱和电路的尺寸并且节省了模片区。
在以上实施例的论述中,为了适应具体电路图的需要,可以容易地更换、替换或以其他方式修改电容器、时钟、加法器、存储器、总线、电阻器、放大器、开关、数字内核、晶体管和/或其他部件。此外,应当注意的是,补充电子器件、硬件、软件等的使用为实现本公开的教导提供了同样可行的选择。
在一个示例性实施例中,附图所示的许多电路都可以在基板或相关电子器件上实现。基板可以是保持电子器件的内部电子系统的各个部件并且还为其他外部设备提供连接器的普通电路板。更具体地说,基板可以提供使系统的其他部件电气相通的电气连接。基于具体配置需要、处理要求、计算机设计等,任何适当的处理器(包括数字信号处理器、微处理器、支持芯片组等)、存储元件等可以适当地连接在基板上。例如外部存储器、附加传感器、音频/视频显示器的控制器以及外部设备等其他部件可以通过电缆以插卡形式附设在基板上,或者集成到基板本身中。
在另一个示意性实施例中,附图所示电路可以以单机模块(例如,具有构造成进行特定应用或功能的相关部件和电路的装置)实现,或者以插件模块实现成电子器件的专用硬件。应当注意,本公开的具体实施例的一部分或者全部可以容易地包括在系统芯片(SOC)封装件中。SOC表示将计算机或其他电子系统的部件集成到一个芯片中的IC。它可以包括数字、模拟、混合信号以及常见的射频功能,所有这些功能都可以在一个芯片衬底上提供。其他实施例可以包括多芯片模块(MCM),其中若干独立IC位于一个电子封装件内并且构造成通过电子封装件封闭地相互作用。在不同的其他实施例中,放大功能可以在专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field ProgrammableGate Array,FPGA)以及其他半导体芯片的一个或多个硅内核中实现。
还需要注意的是,仅出于实例和教导的目的提供本文所概括的所有规格、尺寸和关系(例如,处理器的数量、逻辑运算等)。在不脱离本公开的精神或者所附权利要求的范围的情况下,这些信息可以变化很大。这些规格仅适用于一个非限制性实例,因此它们被这样解释。在前面的描述中,已经参考具体处理器和/或部件装置描述了示例性实施例。在不脱离所附权利要求的范围的情况下可以对这些实施例进行各种修改和变化。因此,说明书和附图应当认为是说明性的而不是限制性的。
应当注意的是,上面参考附图所述的活动可以应用于包括信号处理的任何集成电路,具体为可以执行专用软件程序或算法的集成电路,并且一部分集成电路可以涉及处理数字化实时数据。一些实施例可以涉及多DSP信号处理、浮点处理、信号/控制处理、固定函数处理、微控制器应用等。
在一些情况下,本文所述的特征可以应用于医疗系统、科学仪表、无线和有线通讯、雷达、工业过程控制、音频和视频设备、电流传感、(具有高精确度的)器械以及其他基于数字处理的系统。
此外,上文所述的一些实施例可以用于医疗成像、病人监护、医疗器械以及家庭护理等数字信号处理技术。这可以包括心肺监护仪、加速度计、心率检测器、心脏起搏器等。其他应用可以涉及安全系统等汽车技术(例如,稳定控制系统、驾驶员辅助系统、制动系统、信息娱乐以及任何种类的内部应用)。此外,传动系统(例如,在混合动力和电动汽车中)可以在电池监控、控制系统、报告控制、维修工作等中使用高精度数据转换产品。
在其他示例性情况中,本公开的教导可以应用于包括过程控制系统的工业市场,其中过程控制系统可以帮助提高生产率、能效和可靠性。在消费应用中,上述信号处理电路的教导可以用于图像处理、自动对焦和图像稳定(例如,用于数字静态照相机、数字摄像机等)。其他消费应用可以包括家庭影院系统的音频和视频处理器、DVD刻录机以及高清电视。其他消费应用可以包括高级触摸屏控制器(例如,任何种类的便携式媒体装置)。因此,这些技术可以容易地作为智能电话、平板电脑、安全系统、PC、游戏技术、虚拟现实、模拟练习等的一部分。
应当注意的是,根据本文提供的若干实例,描述了两个、三个、四个或更多电子部件的相互作用。然而,该描述仅出于清楚和示例的目的。应当意识到该系统可以以适当方式合并。根据类似的设计替换形式,附图所示的任何部件、模块和元件可以以各种可能的构造组合,所有的这些组合都明确地落入本说明书的广义范围之内。在一些情况下,仅通过参考有限数量的电气元件就可以比较容易地描述给定的一组流程的一个或多个功能。应当意识到,附图所示的电路及其教导可以容易地放缩并且可以容纳大量的部件以及更复杂/精密的排列方式和构造。因此,所提供的实例不应当限制可能应用于多种其他体系结构的电路的范围及其广义教导。
本领域技术人员会发现多种其他变化、替换、变形、改变和修改,并且旨在本公开涵盖落入所附权利要求的范围的所有这些变化、替换、变形、改变和修改。为了帮助美国专利和商标局(USPTO)以及在本申请中发布的任何专利的另外的任何读者解释权利要求,申请人希望注意到,申请人:(a)不希望任何权利要求援引在申请日已存在的35U.S.C.第112节第6段,除非词语“用于…的装置”或“用于…的布置”明确地被用在具体权利要求中;并且(b)不希望说明书中的任何语句以未反映在权利要求中的任何方式来限制本公开。
其他注释、实例以及实施方式
应当注意,上述装置和系统的所有可选特征也可以由本文所述的方法和过程实现,并且实例中的细节可以用于一个或多个实施例的任何位置。
在第一实例中,提供了一种方法和系统(可以包括任何适当电路、加法器、电容器、电阻器、感应器、缓冲器、存储器、总线、逻辑门、软件、硬件、链接等),方法和系统可以是任何类型的计算机的一部分并且还可以包括与若干电子部件连接的电路板。系统和方法可以涉及操作微处理器电路的向量矩阵乘积加速器以使N元向量与M x N矩阵相乘。该系统可以包括用于从数据存储器获取N元向量的若干向量输入元的装置,其中向量输入元以预定向量元顺序存储在第一预定地址空间中。该系统还可以包括用于将向量输入元存储到相应向量输入寄存器中的装置,其中各个向量输入元都由第一预定位数(X)表示。该系统还可以包括用于从数据存储器获取M X N矩阵的若干矩阵输入元的装置,其中若干矩阵输入元以预定顺序存储在第二预定地址空间中。该系统还包括用于将若干矩阵输入元存储到相应矩阵输入寄存器中的装置,其中各个矩阵输入元均由第二预定位数(Y)表示。
该系统还可以包括用于将向量输入元和矩阵输入元的相应对施加给若干数字乘法累加电路的装置、用于通过若干数字乘法累加电路将向量输入元和矩阵输入元的相应对相乘以产生中间乘积值;用于对N元向量的连续向量输入元和M x N矩阵的连续矩阵输入元进行若干乘法周期以计算出若干中间乘积值的装置;以及用于在二进制加法电路中将若干中间乘积值相加以产生M元合成向量的合成向量元。
在(以上)这些实例中的“用于...的装置”可以包括(但不限于)使用本文所述的任何适当部件,以及任何适当软件、电路、集线器、计算机代码、逻辑、算法、硬件、控制器、接口、链接、总线、通讯通道等。在第二实例中,该系统包括存储器,存储器还包括在执行时使系统进行任何上述活动的机器可读指令。

Claims (22)

1.一种微处理器电路,包括:
微处理器内核,其经由具有预定整数条(J)数据线的数据存储器总线与数据存储器连接;
所述单端口数据存储器构造成以预定向量元顺序存储N元向量的向量输入元,并且构造成存储包括M列矩阵输入元和行矩阵输入元的M x N矩阵的矩阵输入元;
向量矩阵乘积加速器,其包括构造成将所述N元向量与所述矩阵相乘以计算出M元合成向量的数据通路,所述向量矩阵乘积加速器包括:
输入/输出端口,其使所述数据存储器总线与所述向量矩阵乘积加速器连接;
若干向量输入寄存器,其用于存储通过所述输入/输出端口接收的相应输入向量元,其中各个输入向量元均由第一预定位数(X)表示;
若干矩阵输入寄存器,其用于存储通过所述输入/输出端口接收的相应矩阵输入元,其中各个矩阵输入元均由第二预定位数(Y)表示;
若干数字乘法累加电路,其包括与用于接收相应输入向量元的相应向量输入寄存器连接的相应二进制被乘数输入,并且包括与用于接收相应矩阵输入元的矩阵输入寄存器连接的相应二进制乘数输入,从而产生相应的中间乘积值;
二进制加法电路,其包括一个或多个二进制加法器,所述二进制加法器构造成使通过相应乘法器周期计算出的若干中间乘积值相加,以产生M元合成向量的合成向量元。
2.根据权利要求1所述的微处理器电路,其中,所述预定整数条数据线的条数(J)除以各个矩阵输入元的第二预定位数(Y)等于整数。
3.根据权利要求1所述的微处理器电路,其中,所述预定整数条数据线的条数(J)选自{16,32,64,128},并且其中,各个矩阵输入元由8位表示,使得所述数字乘法累加电路的数量为2、4、8和16之一。
4.根据权利要求1所述的微处理器电路,其中,所述预定整数条数据线的条数(J)选自{16,32,64,128},并且其中,各个矩阵输入元由16位表示,使得所述数字乘法累加电路的数量为2、4和8之一。
5.根据权利要求1所述的微处理器电路,其中,所述数据存储器构造成按列的顺序存储所述矩阵的矩阵输入元,使得M列中各列的矩阵输入元均保存在连续存储位置中。
6.根据权利要求1所述的微处理器电路,其中,所述向量矩阵乘积加速器还包括缓存,所述缓存与所述二进制加法电路连接并用于接收和临时存储所述M元合成向量的至少一个合成向量元。
7.根据权利要求6所述的微处理器电路,其中,所述缓存构造成临时存储所述M元合成向量的所有合成向量元。
8.根据权利要求6所述的微处理器电路,其中,所述缓存包括寄存器文件和双端口RAM存储器中的至少一者。
9.根据权利要求5所述的微处理器电路,其中,所述缓存的输出与所述输入/输出端口连接,使得所述数据存储器总线与所述向量矩阵乘积加速器连接,以便将所述至少一个合成向量元传送至所述输入/输出端口。
10.根据权利要求6所述的微处理器电路,其中,所述缓存包括可同时操作的第一独立单端口存储段和第二独立单端口存储段,其中,所述第一存储段构造成存储奇数编号的合成向量元,所述第二存储段构造成存储偶数编号的合成向量元。
11.根据权利要求10所述的微处理器电路,其中,所述向量矩阵乘积加速器还包括多路转换器,所述多路转换器包括与所述二进制加法电路的输入连接的多路转换器输出,并且所述多路转换器具有与所述第一存储段的数据读取/写入端口连接的第一输入和与所述第二存储段的数据读取/写入端口连接的第二输入。
12.根据权利要求1所述的微处理器电路,其中,所述向量矩阵乘积加速器还包括取整电路,所述取整电路包括用于接收所述合成向量元并产生所述合成向量元的相应取整数值的取整输入。
13.根据权利要求1所述的微处理器电路,其中,所述数字乘法累加电路的数量大致等于所述预定整数条数据线的条数(J)除以各个矩阵输入元的第二预定位数(Y),并且其中各个I、J、M、N、X和Y均为正整数。
14.根据权利要求1所述的微处理器电路,其中,所述向量矩阵乘积加速器还包括饱和电路,所述饱和电路包括:
上下饱和阈值;
接收所述合成向量元并根据所述上下饱和阈值生成所述合成向量元的饱和数值的饱和输入。
15.根据权利要求1所述的微处理器电路,其中,所述向量矩阵乘积加速器还包括控制器或序列发生器,所述控制器或序列发生器与所述输入/输出端口、所述若干向量输入寄存器、所述若干矩阵输入寄存器、所述若干数字乘法累加电路和所述二进制加法电路连接以控制数据的处理操作。
16.根据权利要求1所述的微处理器电路,还包括:
集成半导体模片,其包括微处理器电路。
17.一种操作微处理器电路的向量矩阵乘积加速器以使N元向量与M x N矩阵相乘的方法,包括:
从数据存储器获取所述N元向量的若干向量输入元,其中,所述向量输入元按预定向量元顺序存储在第一预定地址空间中;
将所述向量输入元存储到相应的向量输入寄存器中,其中,各个向量输入元均由第一预定位数(X)表示;
从数据存储器获取所述M X N矩阵的若干矩阵输入元,其中,所述若干矩阵输入元按预定顺序存储在第二预定地址空间中;
将所述若干矩阵输入元存储到相应的矩阵输入寄存器中,其中,各个矩阵输入元均由第二预定位数(Y)表示;
将相应对的向量输入元和矩阵输入元施加给若干数字乘法累加电路,
通过所述若干数字乘法累加电路使相应对的向量输入元和矩阵输入元相乘以产生中间乘积值;
对所述N元向量的连续向量输入元和所述M x N矩阵的连续矩阵输入元进行若干乘法器周期,以计算出若干中间乘积值;以及
在二进制加法电路中将所述若干中间乘积值相加,以产生M元合成向量的合成向量元。
18.根据权利要求17所述的方法,通过具有预定整数条(J)数据线的数据存储器总线获取所述若干矩阵输入元和所述若干向量输入元,其中,并行运行的数字乘法累加电路的数量大致等于所述预定整数条数据线的条数(J)除以各个矩阵输入元的第二预定位数(Y)。
19.根据权利要求17所述的方法,包括:
将所述M x N矩阵中各个列的矩阵输入元按列的顺序写入第二预定地址空间,使得M列中各列的矩阵输入元均保存在预定地址空间的连续存储位置中。
20.根据权利要求17所述的方法,还包括:
将M元合成向量的至少一个合成向量元从所述二进制加法电路写入所述向量矩阵乘积加速器的缓存以进行临时存储。
21.根据权利要求20所述的方法,还包括:
将M元合成向量的M个合成向量元从所述二进制加法电路写入所述向量矩阵乘积加速器的缓存以进行全部M元合成向量的临时存储。
22.根据权利要求21所述的方法,还包括:
通过总线输入/输出端口将M元合成向量的合成向量元从所述缓存写入所述数据存储器总线;以及
将所述合成向量元存储到所述数据存储器的第三预定地址空间中。
CN201410151469.5A 2013-06-11 2014-04-16 微处理器集成电路的向量矩阵乘积加速器 Active CN104238993B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/914,731 2013-06-11
US13/914,731 US9384168B2 (en) 2013-06-11 2013-06-11 Vector matrix product accelerator for microprocessor integration

Publications (2)

Publication Number Publication Date
CN104238993A true CN104238993A (zh) 2014-12-24
CN104238993B CN104238993B (zh) 2018-05-04

Family

ID=52006402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410151469.5A Active CN104238993B (zh) 2013-06-11 2014-04-16 微处理器集成电路的向量矩阵乘积加速器

Country Status (2)

Country Link
US (1) US9384168B2 (zh)
CN (1) CN104238993B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108491359A (zh) * 2016-04-22 2018-09-04 北京中科寒武纪科技有限公司 子矩阵运算装置及方法
CN108780441A (zh) * 2016-03-18 2018-11-09 高通股份有限公司 用于定点矩阵乘法的内存减少方法
CN109101272A (zh) * 2018-02-05 2018-12-28 上海寒武纪信息科技有限公司 神经网络处理装置及其执行矩阵相乘指令的方法
WO2019007095A1 (zh) * 2017-07-07 2019-01-10 华为技术有限公司 运算加速器
CN110047543A (zh) * 2017-12-19 2019-07-23 三星电子株式会社 非易失性存储器件及其操作方法和存储系统
CN110366732A (zh) * 2017-01-12 2019-10-22 德克萨斯仪器股份有限公司 用于在卷积神经网络中进行矩阵处理的方法和设备
CN110825345A (zh) * 2018-08-08 2020-02-21 闪迪技术有限公司 使用非易失性存储器单元的乘法
TWI688871B (zh) * 2019-08-27 2020-03-21 國立清華大學 矩陣乘法裝置及其操作方法
CN111079081A (zh) * 2019-12-16 2020-04-28 海光信息技术有限公司 一种矩阵乘法器、数据处理方法、集成电路器件及处理器
CN111291859A (zh) * 2018-12-07 2020-06-16 三星电子株式会社 通用矩阵-矩阵乘法数据流加速器半导体电路
CN111708723A (zh) * 2019-03-18 2020-09-25 硅谷介入有限公司 具有模拟端口的多端口存储器
CN111708634A (zh) * 2020-05-29 2020-09-25 山东云海国创云计算装备产业创新中心有限公司 一种端口分配方法、装置、设备及可读存储介质
CN112005214A (zh) * 2018-04-21 2020-11-27 微软技术许可有限责任公司 具有包括多端口存储器的向量寄存器文件的矩阵向量乘法器
CN112434255A (zh) * 2020-12-03 2021-03-02 海光信息技术股份有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
CN113110822A (zh) * 2021-04-20 2021-07-13 安徽芯纪元科技有限公司 一种可配置矩阵乘法装置及算法
CN113805940A (zh) * 2020-08-17 2021-12-17 阿里巴巴集团控股有限公司 用于人工智能和机器学习的向量加速器
TWI751500B (zh) * 2017-05-17 2022-01-01 美商谷歌有限責任公司 用於執行矩陣乘法之方法、硬體電路、運算系統及電腦儲存媒體
CN114816331A (zh) * 2017-11-03 2022-07-29 畅想科技有限公司 具有时钟选通的用于执行矩阵乘法的硬件单元
US11586920B2 (en) 2015-05-21 2023-02-21 Google Llc Neural network processor
CN110210610B (zh) * 2018-03-27 2023-06-20 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7110525B1 (en) 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US11113062B2 (en) * 2013-07-15 2021-09-07 Texas Instruments Incorporated Inserting predefined pad values into a stream of vectors
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
JP6102645B2 (ja) * 2013-09-11 2017-03-29 富士通株式会社 積和演算回路及び積和演算システム
JP5951570B2 (ja) * 2013-09-13 2016-07-13 株式会社東芝 行列演算装置
US9792118B2 (en) * 2013-11-15 2017-10-17 Qualcomm Incorporated Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods
FR3015068B1 (fr) * 2013-12-18 2016-01-01 Commissariat Energie Atomique Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal
US9465902B1 (en) * 2014-04-11 2016-10-11 Altera Corporation Method and apparatus for designing a system using weighted-cost interconnect synthesis
US9426434B1 (en) * 2014-04-21 2016-08-23 Ambarella, Inc. Two-dimensional transformation with minimum buffering
US20160378465A1 (en) * 2015-06-23 2016-12-29 Intel Corporation Efficient sparse array handling in a processor
US11244225B2 (en) 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
US10474627B2 (en) * 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
US20170116156A1 (en) * 2015-10-22 2017-04-27 International Business Machines Corporation Parallelizing matrix factorization across hardware accelerators
US10496855B2 (en) 2016-01-21 2019-12-03 Hewlett Packard Enterprise Development Lp Analog sub-matrix computing from input matrixes
CN112612521A (zh) * 2016-04-26 2021-04-06 安徽寒武纪信息科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN111651201B (zh) * 2016-04-26 2023-06-13 中科寒武纪科技股份有限公司 一种用于执行向量合并运算的装置和方法
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
US10817802B2 (en) * 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
US10796220B2 (en) 2016-05-24 2020-10-06 Marvell Asia Pte, Ltd. Systems and methods for vectorized FFT for multi-dimensional convolution operations
CN106126481B (zh) * 2016-06-29 2019-04-12 华为技术有限公司 一种计算系统和电子设备
US10241971B2 (en) 2016-12-15 2019-03-26 Hewlett Packard Enterprise Development Lp Hierarchical computations on sparse matrix rows via a memristor array
US10810281B2 (en) 2017-02-24 2020-10-20 Texas Instruments Incorporated Outer product multipler system and method
US10817587B2 (en) 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10735023B2 (en) 2017-02-24 2020-08-04 Texas Instruments Incorporated Matrix compression accelerator system and method
US11086967B2 (en) 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)
US9691019B1 (en) * 2017-03-07 2017-06-27 Google Inc. Depth concatenation using a matrix computation unit
US10896367B2 (en) 2017-03-07 2021-01-19 Google Llc Depth concatenation using a matrix computation unit
US10261786B2 (en) * 2017-03-09 2019-04-16 Google Llc Vector processing unit
US10417731B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10417734B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
DE102018110607A1 (de) 2017-05-08 2018-11-08 Nvidia Corporation Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen
US10338919B2 (en) 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US11294679B2 (en) * 2017-06-30 2022-04-05 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
WO2019005115A1 (en) 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
US10878317B2 (en) 2017-09-11 2020-12-29 Samsung Electronics Co., Ltd. Method and system for performing analog complex vector-matrix multiplication
GB2576282B (en) * 2017-11-03 2020-09-16 Imagination Tech Ltd Hardware unit for performing matrix multiplication with clock gating
GB2591713B (en) * 2017-11-03 2022-03-16 Imagination Tech Ltd Hardware unit for performing matrix multiplication with clock gating
GB2584228B (en) * 2017-11-03 2021-07-07 Imagination Tech Ltd Hardware unit for performing matrix multiplication with clock gating
US11636327B2 (en) * 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US11409525B2 (en) * 2018-01-24 2022-08-09 Intel Corporation Apparatus and method for vector multiply and accumulate of packed words
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
US10908879B2 (en) 2018-03-02 2021-02-02 Neuchips Corporation Fast vector multiplication and accumulation circuit
US10528642B2 (en) * 2018-03-05 2020-01-07 International Business Machines Corporation Multiple precision integer multiple by matrix-matrix multiplications using 16-bit floating point multiplier
US10521226B2 (en) * 2018-03-30 2019-12-31 Intel Corporation Efficient implementation of complex vector fused multiply add and complex vector multiply
US10642620B2 (en) * 2018-04-05 2020-05-05 Apple Inc. Computation engine with strided dot product
US10804925B1 (en) 2018-04-17 2020-10-13 Ali Tasdighi Far Tiny factorized data-converters for artificial intelligence signal processing
US10789046B1 (en) 2018-04-17 2020-09-29 Ali Tasdighi Far Low-power fast current-mode meshed multiplication for multiply-accumulate in artificial intelligence
US10862501B1 (en) 2018-04-17 2020-12-08 Ali Tasdighi Far Compact high-speed multi-channel current-mode data-converters for artificial neural networks
US11016732B1 (en) 2018-04-17 2021-05-25 Ali Tasdighi Far Approximate nonlinear digital data conversion for small size multiply-accumulate in artificial intelligence
US10848167B1 (en) 2018-04-17 2020-11-24 Ali Tasdighi Far Floating current-mode digital-to-analog-converters for small multipliers in artificial intelligence
US10826525B1 (en) 2018-04-17 2020-11-03 Ali Tasdighi Far Nonlinear data conversion for multi-quadrant multiplication in artificial intelligence
US10884705B1 (en) 2018-04-17 2021-01-05 Ali Tasdighi Far Approximate mixed-mode square-accumulate for small area machine learning
US11144316B1 (en) 2018-04-17 2021-10-12 Ali Tasdighi Far Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning
CN108549935B (zh) * 2018-05-03 2021-09-10 山东浪潮科学研究院有限公司 一种实现神经网络模型的装置及方法
US10929778B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10929760B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US11010132B2 (en) 2018-09-28 2021-05-18 Tenstorrent Inc. Processing core with data associative adaptive rounding
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US11526737B2 (en) 2019-02-01 2022-12-13 Lightelligence, Inc. Processing matrix operations for rate limited systems
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
US11475102B2 (en) * 2019-02-21 2022-10-18 Samsung Electronics Co., Ltd. Adaptive matrix multiplication accelerator for machine learning and deep learning applications
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US20200349217A1 (en) * 2019-05-03 2020-11-05 Micron Technology, Inc. Methods and apparatus for performing matrix transformations within a memory array
US11762658B2 (en) * 2019-09-24 2023-09-19 Advanced Micro Devices, Inc. Matrix multiplication unit with flexible precision operations
US11010862B1 (en) 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors
US11599181B1 (en) * 2019-12-23 2023-03-07 Meta Platforms, Inc. Systems and methods for reducing power consumption of convolution operations of artificial neural networks
CN113032007B (zh) * 2019-12-24 2024-06-11 阿里巴巴集团控股有限公司 一种数据处理方法及装置
US11615256B1 (en) 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
US11610104B1 (en) 2019-12-30 2023-03-21 Ali Tasdighi Far Asynchronous analog accelerator for fully connected artificial neural networks
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
KR20220154764A (ko) * 2020-03-29 2022-11-22 마이크론 테크놀로지, 인크. 추론 엔진 회로 아키텍처
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US20210216318A1 (en) * 2020-08-28 2021-07-15 Martin Langhammer Vector Processor Architectures
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US20220309126A1 (en) * 2021-03-26 2022-09-29 Advanced Micro Devices, Inc. Approximation of matrices for matrix multiply operations
US20220309125A1 (en) * 2021-03-26 2022-09-29 Advanced Micro Devices, Inc. Data compressor for approximation of matrices for matrix multiply operations
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324700A (ja) * 1992-05-19 1993-12-07 N T T Data Tsushin Kk 行列乗算装置
US5367700A (en) * 1991-01-31 1994-11-22 Sony Corporation System for multiplying digital input data in a multiplier circuit
CN1478234A (zh) * 2000-10-06 2004-02-25 英特尔公司 用于有效地执行线性变换的方法和装置
US20050027773A1 (en) * 2003-07-31 2005-02-03 Machnicki Erik P. Method and system for performing parallel integer multiply accumulate operations on packed data

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8431925D0 (en) 1984-12-18 1985-01-30 Secr Defence Digital data processor
US5099448A (en) 1989-06-28 1992-03-24 Nippon Sheet Glass Co., Ltd. Matrix-vector multiplication apparatus
US5001663A (en) 1989-05-03 1991-03-19 Eastman Kodak Company Programmable digital circuit for performing a matrix multiplication
US5170370A (en) 1989-11-17 1992-12-08 Cray Research, Inc. Vector bit-matrix multiply functional unit
US5204830A (en) 1992-02-13 1993-04-20 Industrial Technology Research Institute Fast pipelined matrix multiplier
TW360798B (en) * 1998-05-15 1999-06-11 Chung Shan Inst Of Science Monolithic radar signal processing chip
US6571268B1 (en) 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US6675187B1 (en) 1999-06-10 2004-01-06 Agere Systems Inc. Pipelined linear array of processor elements for performing matrix computations
US6477555B1 (en) * 1999-07-07 2002-11-05 Lucent Technologies Inc. Method and apparatus for performing rapid convolution
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
IL145245A0 (en) 2001-09-03 2002-06-30 Jtc 2000 Dev Delaware Inc System and method including vector-matrix multiplication
WO2003021423A2 (en) 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
US7024441B2 (en) * 2001-10-03 2006-04-04 Intel Corporation Performance optimized approach for efficient numerical computations
US7240084B2 (en) 2002-05-01 2007-07-03 Sun Microsystems, Inc. Generic implementations of elliptic curve cryptography using partial reduction
US20040122887A1 (en) 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US20050125477A1 (en) 2003-12-04 2005-06-09 Genov Roman A. High-precision matrix-vector multiplication on a charge-mode array with embedded dynamic memory and stochastic method thereof
JP4408712B2 (ja) 2004-01-26 2010-02-03 富士通マイクロエレクトロニクス株式会社 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
DE102004014658B4 (de) 2004-03-25 2010-07-01 Photeon Technologies Gmbh Optischer Matrix-Vektor Multiplizierer
ITMI20040600A1 (it) * 2004-03-26 2004-06-26 Atmel Corp Sistema dsp su chip a doppio processore a virgola mobile nel dominio complesso
US7353244B2 (en) * 2004-04-16 2008-04-01 Marvell International Ltd. Dual-multiply-accumulator operation optimized for even and odd multisample calculations
US7792895B1 (en) 2006-06-16 2010-09-07 Nvidia Corporation Efficient matrix multiplication on a parallel processing device
GB0618921D0 (en) 2006-09-26 2006-11-08 Trw Ltd Matrix multiplication
US8051124B2 (en) * 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
US8027587B1 (en) 2007-08-21 2011-09-27 Sandia Corporation Integrated optic vector-matrix multiplier
JP2009075676A (ja) 2007-09-18 2009-04-09 Nec Electronics Corp マイクロプロセッサ
US8325403B1 (en) 2008-02-28 2012-12-04 Compass Electro-Optical Systems Ltd Optical programmable matrix processor
CN101630178B (zh) 2008-07-16 2011-11-16 中国科学院半导体研究所 一种硅基集成化的光学向量-矩阵乘法器
US8458442B2 (en) 2009-08-26 2013-06-04 International Business Machines Corporation Method and structure of using SIMD vector architectures to implement matrix multiplication
US8862653B2 (en) 2011-04-26 2014-10-14 University Of South Carolina System and method for sparse matrix vector multiplication processing
US9110713B2 (en) * 2012-08-30 2015-08-18 Qualcomm Incorporated Microarchitecture for floating point fused multiply-add with exponent scaling
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367700A (en) * 1991-01-31 1994-11-22 Sony Corporation System for multiplying digital input data in a multiplier circuit
JPH05324700A (ja) * 1992-05-19 1993-12-07 N T T Data Tsushin Kk 行列乗算装置
CN1478234A (zh) * 2000-10-06 2004-02-25 英特尔公司 用于有效地执行线性变换的方法和装置
US20050027773A1 (en) * 2003-07-31 2005-02-03 Machnicki Erik P. Method and system for performing parallel integer multiply accumulate operations on packed data

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘世培 等;: "《一种基于FPGA的稀疏矩阵高效乘法器》", 《微电子学》 *
雷元武 等;: "《基于FPGA的高精度科学计算加速器研究》", 《计算机学报》 *

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI825596B (zh) * 2015-05-21 2023-12-11 美商谷歌有限責任公司 用於執行類神經網路計算之電路、方法及非暫時性機器可讀儲存裝置
US11586920B2 (en) 2015-05-21 2023-02-21 Google Llc Neural network processor
CN108780441A (zh) * 2016-03-18 2018-11-09 高通股份有限公司 用于定点矩阵乘法的内存减少方法
CN108491359A (zh) * 2016-04-22 2018-09-04 北京中科寒武纪科技有限公司 子矩阵运算装置及方法
CN110366732A (zh) * 2017-01-12 2019-10-22 德克萨斯仪器股份有限公司 用于在卷积神经网络中进行矩阵处理的方法和设备
CN110366732B (zh) * 2017-01-12 2024-05-14 德克萨斯仪器股份有限公司 用于在卷积神经网络中进行矩阵处理的方法和设备
TWI807539B (zh) * 2017-05-17 2023-07-01 美商谷歌有限責任公司 用於執行矩陣乘法之方法、硬體電路、運算系統及電腦儲存媒體
US11989258B2 (en) 2017-05-17 2024-05-21 Google Llc Performing matrix multiplication in hardware
TWI751500B (zh) * 2017-05-17 2022-01-01 美商谷歌有限責任公司 用於執行矩陣乘法之方法、硬體電路、運算系統及電腦儲存媒體
US11321423B2 (en) 2017-07-07 2022-05-03 Huawei Technologies Co., Ltd. Operation accelerator
CN112214726B (zh) * 2017-07-07 2024-05-03 华为技术有限公司 运算加速器
US11720646B2 (en) 2017-07-07 2023-08-08 Huawei Technologies Co., Ltd. Operation accelerator
CN112214726A (zh) * 2017-07-07 2021-01-12 华为技术有限公司 运算加速器
WO2019007095A1 (zh) * 2017-07-07 2019-01-10 华为技术有限公司 运算加速器
CN114816331B (zh) * 2017-11-03 2024-01-26 畅想科技有限公司 具有时钟选通的用于执行矩阵乘法的硬件单元
CN114816331A (zh) * 2017-11-03 2022-07-29 畅想科技有限公司 具有时钟选通的用于执行矩阵乘法的硬件单元
CN110047543A (zh) * 2017-12-19 2019-07-23 三星电子株式会社 非易失性存储器件及其操作方法和存储系统
CN110047543B (zh) * 2017-12-19 2024-05-28 三星电子株式会社 非易失性存储器件及其操作方法和存储系统
CN109101272A (zh) * 2018-02-05 2018-12-28 上海寒武纪信息科技有限公司 神经网络处理装置及其执行矩阵相乘指令的方法
US11836497B2 (en) 2018-02-05 2023-12-05 Shanghai Cambricon Information Technology Co., Ltd Operation module and method thereof
CN110210610B (zh) * 2018-03-27 2023-06-20 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备
CN112005214A (zh) * 2018-04-21 2020-11-27 微软技术许可有限责任公司 具有包括多端口存储器的向量寄存器文件的矩阵向量乘法器
CN112005214B (zh) * 2018-04-21 2024-02-20 微软技术许可有限责任公司 具有包括多端口存储器的向量寄存器文件的矩阵向量乘法器
CN110825345B (zh) * 2018-08-08 2024-04-19 闪迪技术有限公司 使用非易失性存储器单元的乘法
CN110825345A (zh) * 2018-08-08 2020-02-21 闪迪技术有限公司 使用非易失性存储器单元的乘法
CN111291859A (zh) * 2018-12-07 2020-06-16 三星电子株式会社 通用矩阵-矩阵乘法数据流加速器半导体电路
CN111708723B (zh) * 2019-03-18 2022-12-20 硅谷介入有限公司 具有模拟端口的多端口存储器和用于神经网络的装置
CN111708723A (zh) * 2019-03-18 2020-09-25 硅谷介入有限公司 具有模拟端口的多端口存储器
TWI688871B (zh) * 2019-08-27 2020-03-21 國立清華大學 矩陣乘法裝置及其操作方法
WO2021120711A1 (zh) * 2019-12-16 2021-06-24 成都海光微电子技术有限公司 一种矩阵乘法器、数据处理方法、集成电路器件及处理器
CN111079081A (zh) * 2019-12-16 2020-04-28 海光信息技术有限公司 一种矩阵乘法器、数据处理方法、集成电路器件及处理器
CN111708634A (zh) * 2020-05-29 2020-09-25 山东云海国创云计算装备产业创新中心有限公司 一种端口分配方法、装置、设备及可读存储介质
CN113805940A (zh) * 2020-08-17 2021-12-17 阿里巴巴集团控股有限公司 用于人工智能和机器学习的向量加速器
CN112434255B (zh) * 2020-12-03 2023-12-08 成都海光微电子技术有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
CN112434255A (zh) * 2020-12-03 2021-03-02 海光信息技术股份有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
CN113110822A (zh) * 2021-04-20 2021-07-13 安徽芯纪元科技有限公司 一种可配置矩阵乘法装置及算法

Also Published As

Publication number Publication date
US20140365548A1 (en) 2014-12-11
US9384168B2 (en) 2016-07-05
CN104238993B (zh) 2018-05-04

Similar Documents

Publication Publication Date Title
CN104238993A (zh) 微处理器集成电路的向量矩阵乘积加速器
CN109032669B (zh) 神经网络处理装置及其执行向量最小值指令的方法
CN109543832B (zh) 一种计算装置及板卡
CN108229654B (zh) 神经网络卷积运算装置及方法
CN107392309A (zh) 一种基于fpga的通用定点数神经网络卷积加速器硬件结构
CN107169563B (zh) 应用于二值权重卷积网络的处理系统及方法
JP2020518042A (ja) 処理装置と処理方法
CN109117183A (zh) 人工智能处理器及使用处理器执行向量交换指令的方法
CN108108811A (zh) 神经网络中的卷积计算方法和电子设备
CN110163361A (zh) 一种计算装置及方法
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN107423816A (zh) 一种多计算精度神经网络处理方法和系统
CN110909872B (zh) 集成电路芯片装置及相关产品
CN109583579A (zh) 计算装置及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN111260070B (zh) 运算方法、装置及相关产品
CN111258641B (zh) 运算方法、装置及相关产品
CN111260046B (zh) 运算方法、装置及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN109582277A (zh) 数据处理方法、装置及相关产品
CN111382855B (zh) 数据处理装置、方法、芯片及电子设备
CN109558110A (zh) 数据转换装置及相关产品
CN111966400A (zh) 指令处理方法、装置及相关产品
CN112394990A (zh) 浮点转半精度浮点指令处理装置、方法及相关产品
CN110070170A (zh) 基于mcu的pso-bp神经网络传感器校准系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: ANALOG DEVICES TECHNOLOGY COMPANY

Effective date: 20150105

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150105

Address after: Bermuda (UK) Hamilton

Applicant after: ANALOG DEVICES GLOBAL

Address before: Bermuda (UK) Hamilton

Applicant before: Analog Devices Global

GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Bermuda (UK), Hamilton

Patentee after: Analog Devices Global Unlimited Co.

Address before: Bermuda (UK), Hamilton

Patentee before: ANALOG DEVICES GLOBAL

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220106

Address after: Limerick

Patentee after: ANALOG DEVICES INTERNATIONAL UNLIMITED Co.

Address before: Bermuda (UK), Hamilton

Patentee before: Analog Devices Global Unlimited Co.