CN111445016A - 加速非线性数学计算的系统及方法 - Google Patents

加速非线性数学计算的系统及方法 Download PDF

Info

Publication number
CN111445016A
CN111445016A CN202010016390.7A CN202010016390A CN111445016A CN 111445016 A CN111445016 A CN 111445016A CN 202010016390 A CN202010016390 A CN 202010016390A CN 111445016 A CN111445016 A CN 111445016A
Authority
CN
China
Prior art keywords
function
accelerator
linear
mathematical
processor
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
CN202010016390.7A
Other languages
English (en)
Other versions
CN111445016B (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.)
MediaTek Inc
Original Assignee
MediaTek Inc
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 MediaTek Inc filed Critical MediaTek Inc
Publication of CN111445016A publication Critical patent/CN111445016A/zh
Application granted granted Critical
Publication of CN111445016B publication Critical patent/CN111445016B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/556Logarithmic or exponential functions
    • 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
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • 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
    • 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/548Trigonometric functions; Co-ordinate transformations
    • 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

Landscapes

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

Abstract

系统包括加速器来加速非线性数学函数的计算。所述加速器包括一组第一评估器以及一组第二评估器。每一所述多个第一评估器以及所述多个第二评估器是为评估一各自的非线性函数指定的一固定功能硬件电路。所述系统进一步包括一处理器,其解码一指令集中的一数学指令,发送识别一非线性函数的一信号到加速器,所述非线性函数对应于所述数学指令,以及从所述加速器接收所述非线性函数的一输出。根据所述信号,所述加速器使用一个第一评估器评估所述非线性函数。当所述信号识别所述非线性函数为一复合函数时,所述加速器对所述一个第一评估器的一输出额外地使用一个第二评估器。

Description

加速非线性数学计算的系统及方法
相关应用
本申请要求于2019年1月16日递交的,美国临时专利申请号为62/792,985的优先权,其整体内容在此藉由参考纳入其中。
技术领域
本发明的实施例涉及用于人工智能(artificial intelligence,AI)计算的处理器以及加速器(accelerator)。
背景技术
深度学习(deep learning)由于其在计算机视觉(computer vision)、语义识别(speech recognition)、自然语言处理(natural language)、生物信息学(bioinformatics)等等领域中的优越性能而得到广泛认可。深度学习是机器学习(machinelearning)的分支,其使用包括超过一个隐藏层(hidden layer)的人工神经网络(artificial neural network)。神经网络计算的负载是密集的以及通常涉及非线性函数的评估(evaluation),也即计算所述非线性函数。
例如,在特征提取中、神经网络计算可以包括用一组滤波器的输入数据的卷积(convolution),紧接着是非线性计算、下采样计算以及类分数计算(class scorescomputation)。非线性计算已经被示出为高度资源需求,以及会造成长延迟以及高功率消耗。因此,需要在神经网络计算中的改善以增加系统性能。
发明内容
在一个实施例中,系统被提供来加速非线性数学计算。所述系统包括加速器与处理器。所述加速器包括一组第一评估器以及一组第二评估器。每一所述多个第一评估器与所述多个第二评估器是为评估各自的非线性函数指定的固定功能硬件电路。所述处理器用于解码指令集中数学指令,发送识别非线性函数的信号到所述加速器,所述非线性函数对应于所述数学指令,以及从所述加速器接收所述非线性函数的输出。所述加速器根据所述信号用于使用一个第一评估器评估所述非线性函数。当所述信号识别所述非线性函数为复合函数时,所述加速器对所述一个第一加速器的输出额外地使用一个第二加速器。
在另一个实施例中,由加速器执行的方法被提供用于加速非线性数学计算。所述方法包括:从处理器接收识别非线性函数的信号,所述非线性函数对应于所述处理器的指令集中的数学指令。由根据所述信号使用一个第一评估器评估所述非线性函数,以及,当所述信号识别所述非线性函数为复合函数时,对一个第一评估器的输出额外地使用一个第二评估器,其中每一所述多个第一评估器以及所述多个第二评估器是为评估各自的非线性函数指定的固定功能硬件电路。所述方法进一步包括发送所述非线性函数的输出到所述处理器。
藉由本发明之方面可以有效改善非线性计算中纯软件方案造成的大延迟以及高功率效率的问题。
在结合附图阅读具体实施例的下文描述后,其他方面以及特征对本领域习知技术者将是显而易见的。
附图说明
在后续附图的图示中以示例的方式而不是限制的方式示出本发明,其中相似的附图标记表示相同的元件。注意到的是,本公开中对“一(an)”或者“一个(one)”实施例的不同引用不一定指相同的实施例,以及这种引用意指至少一个。此外,当结合一实施例描述特定特征、结构或者特性时,认为无论是否明确描述,结合其他实施例实施这样的特征、结构或特性在本领域习知技术者的知识范围内。
图1示出了根据一个实施例的用于加速的数学函数计算的系统。
图2示出了根据一个实施例的一加速器中的一些硬件电路。
图3示出了根据一个实施例的由处理器以及加速器执行的管线(pipeline)操作。
图4示出了根据一个实施例的复合(compound)指令格式。
图5是示出了根据一个实施例的用于评估softmax函数的方法的流程图。
图6是示出了根据一个实施例的用于加速的数学函数计算的方法的流程图。
具体实施方式
在后续描述中,给出了许多具体的细节。然而,能理解,可以在没有这些具体细节的情况下实施本发明。在其他情况下,公知的电路、结构以及技术未被详细示出以不混淆这些描述的理解。然而,本领域习知技术者将能理解,本发明可以在没有这些特定细节被实施。具有所包括描述的本领域习知技术者将能够实现适当的功能而不需要过度实验。
本发明的实施例提供了一指令集用于处理器来支持由数学加速器(也称为加速器)执行的数学计算。所述指令集包括数学(“math”)指令,当由处理器执行时,其使得加速器对输入值评估(即,计算)数学函数。所述数学函数包括但不限于在如人工神经网络(artificial neural network,ANN)的人工智能(AI)计算中通常作为激活函数的非线性函数。在一个实施例中,每一数学函数在加速器中具有对应的评估路径(path)用于执行对应的数学操作。每一评估路径由为对应的非线性数学函数的评估指定的硬件电路组成。
在描述处理器以及加速器的硬件架构之前,描述与ANN相关的一些技术可能是有用的。ANN在输入层与输出层之间可以包括多个层。这一神经网络有时被称为深度学习神经网络或深度神经网络(deep neural network,DNN)。DNN可以包括卷积层、轮询(pooling)层、整流器线性单元(ReLU)层、全连接(FC)层的、softmax层等的组合。在许多这些层中执行的计算包括应用非线性激活函数到一组数据值。这些函数可以包括但不限于指数函数(exponential function)、双曲线正切函数(hyperbolic tangent function)、对数函数(log function)、自然对数函数(natural log function)、sigmoid函数、softmax函数等等。根据本发明的实施例,当处理器解码数学指令时,其发送具有输入参数的选择信号到加速器,其中所述选择信号指示由数学指令指定或对应于数学指令的非线性函数。所述加速器赋能一个或多个评估器来评估非线性函数,以及发送评估输出到加速器用于进一步的处理器。
图1是示出了根据一个实施例的耦合到加速器120的处理器110的图示。加速器120包括硬件电路来加速非线性数学计算。处理器110的指令集包括由处理器110执行的指令,例如加载、储存、加法、乘法等等,以及由加速器120执行的数学指令。在一个实施例中,处理器110也可以被称为中央处理器单元(CPU)、核心或处理器核心。处理器110可以包括解码器111、一个或多个算术与逻辑单元(ALU)、存储器113以及累加器114(如,耦合到暂存器的加法器)。存储器113可以包括易失性存储器、非易失性存储器或两者的组合。存储器113可以储存指令集中的定义的指令。
在一个实施例中,当解码器111解码数学指令时,其生成选择信号到加速器120来指示将被评估的非线性函数。解码器111可以查阅一表115,其将每一非线性函数与索引相关联,所述索引识别所述非线性函数以及输入参数,如数据、格式、尺寸等。在一个实施例中,所述表内容可以被合成到包括组合的逻辑多工器(multiplexer)的硬件电路。被发送到加速器120的所述选择信号可以包括索引。处理器110还向加速器120发送非线性函数的输入值。所述加速器120然后评估非线性函数以及返回输出到处理器110。
加速器包括第一评估单元123以及第二评估单元125。所述第一评估单元123评估第一组非线性函数,以及所述第二评估单元125评估第二组非线性函数。在一个实施例中,加速器120进一步包括输入接口121与输出接口122来在其他操作中执行数据转换(如,整数与浮点数之间的转换)以及比特移位操作。所述数据转换确保处理器110与加速器120之间的数据可靠性。
第一评估单元123具有两个可选输出路径:所述第一输出路径耦合到所述第二评估单元125的输入,以及第二输入路径旁路(bypass)所述第二评估单元125来到达加速器120的输出。当评估复合函数(composite function)时,加速器120赋能所述第一输出路径。否则,所述加速器120赋能所述第二输出路径。在本公开中,复合函数被定义为至少两个非线性函数的复合。
系统100可以包括为了简便说明未在图1示出的额外硬件元件。例如,系统100可以包括额外的处理器,如额外的CPU、图像处理单元(GPU)、数字信号处理器(DSP)或者其他通用与/或专用处理器电路。系统100还可以包括耦合到处理器110的存储器装置,如易失性与/或非易失性存储器装置,如动态随机存取存储器(DRAM)、闪速存储器等。系统100还可以包括用于连接到网络(如,个人区域网络、区域网络、广域网络等等)的网络接口与/或用户接口装置,如显示屏、触摸传感器、摄像头、麦克风、扬声器等等。系统100可以是计算装置、通信装置或计算与通信装置的组合的一部分。系统100的示例可以包括但不限于智能手机、智能家电、游戏装置、娱乐装置、物联网(IOT)装置等等。
图2是示出了根据一个实施例的加速器120进一步细节的图示。第一评估单元123包括一组第一评估器230,其每一者评估一非线性函数。每一第一评估器230是为评估对应的非线性函数指定的固定功能硬件电路单元。除了第一评估器230,加速器120还包括所述第二评估单元125中的一组第二评估器250。仅当加速器120评估复合函数时使用所述第二评估器250。每一第二评估器250评估非线性函数,其中所述函数的输入是一个第一评估器230的输出。每一第二评估器250是为评估对应的非线性函数指定的固定功能硬件电路。
例如,第一评估单元123可以包括n个第一评估器230来分别评估非线性函数f1、f2、f3,…,fn,以及所述第二评估单元125可以包括m个第二评估器250来分别评估非线性函数g1、g2、g3,…,gm,其中n与m可以是任何正整数。当处理器110将输入值与识别非线性函数的选择信号一起发送时,加速器120作为响应赋能一个第一评估器120,如fi,其中i是[1,n]中的整数。如果非线性函数是复合函数,加速器120额外地赋能一个第二加速器250(如,gj),其中j是[1,m]中的整数。每一第一评估器230以及第二评估器250是为评估各自的非线性函数指定的固定功能硬件电路。加速器120的输出被发送回处理器110。
由第一评估器230评估的非线性函数fi的示例可以包括但不限于指数函数、对数函数、倒数函数、三角函数等等。例如,非线性函数fi可以包括但不限于:f1(x)=ln(x);f2(x)=ex
Figure BDA0002359040810000061
f4(x)=log2(x);f5(x)=cos(x);f6(x)=sin(x)。
由第二评估器250评估的非线性函数gj的示例可以包括但不限于以下:
Figure BDA0002359040810000062
其与f2组合形成sigmoid函数
Figure BDA0002359040810000063
Figure BDA0002359040810000064
其与f2组合形成双曲线正切函数
Figure BDA0002359040810000065
Figure BDA0002359040810000071
其与f2组合形成另一个双曲线正切函数
Figure BDA0002359040810000072
Figure BDA0002359040810000073
Figure BDA0002359040810000074
其与f2组成形成复合函数
Figure BDA0002359040810000075
Figure BDA0002359040810000076
其与f4组合形成复合函数
Figure BDA0002359040810000077
注意到由第一评估器230以及第二评估器250评估的非线性函数可以包括以上所描述函数、相关函数(如,双曲线正切函数)与/或其他非线性函数的替换形式。
图3是示出了根据一个实施例的由处理器110以及加速器120执行的管线操作的图示。这一示例示出了用于三个指令(如,instr_0、instr_M1以及instr_M2)的管线操作。在处理器110的操作中有五个管线阶段,其中所述五个阶段是:指令提取(IF)、指令解码(ID)、执行(EX)、存储器存取(MEM)以及写回(WB)。在一个可选实施例中,处理器的管线阶段的数目可以大于或小于5。第一指令Instr_0是由处理器110执行的指令(如,加载储存指令、或者由处理器110中ALU 112执行的ALU指令)。第二以及第三指令分别是数学指令instr_M1以及instr_M2。在这一示例中,instr_0以及instr_M1并行的被提取以及解码。在EX阶段(时钟3),处理器110使用其内部硬件电路(如,由ALU 112)执行instr_0,以及赋能加速器120(由math_en指示)来执行f1(x),其是Instr_M1中指定的非线性函数,x是函数的输入值。处理器110然后等待加速器120完成f1(x),其通常消耗1到5个时钟周期。在这一示例中,加速器120在时钟7输出结果,以及处理器110写回结果。
处理器110可以赋能加速器120在连续的时钟周期来评估两个非线性函数。作为示例,处理器110在晚于instr_0以及instr__M1的一个时钟后提取以及解码第三指令instr_M2。处理器110在EX阶段(时钟4)赋能加速器120(由math_en指示)去执行instr_M2。在这一示例中,instr_M2指定复合函数,其可以被评估为g2(f2(x)),其中x是复合函数的输入。加速器120首先评估函数f2(x),以及然后评估g2(f2(x))。每一函数f2(x)以及g2(x)的评估通常消耗一个到五个时钟周期。在时钟10,加速器120输出结果到处理器110,以及处理器110写回结果。
从图3的示例,注意到,加速器120对非线性函数执行管线操作。例如,加速器120可以在重叠的时钟周期中评估f1(x)以及f2(x),因为使用不同的硬件电路(即,不同的第一评估器230)评估两个函数,因此硬件电路可以被独立地执行。在上述示例中,在完成第一非线性函数f1(x)的评估前,加速器120评估第二非线性函数f2(x)。
从图3的示例中也注意到,处理器110可以并行执行两个(或多个)指令。图4是示出了根据一个实施例的处理器110的指令集中复合指令400的格式。在这一示例中,复合指令400包括是三个扩充槽(slot):Slot_a、Slot_b以及Slot_c。每一扩充槽由一个指令占用,如由处理器110执行的指令或者指定非线性函数的数学指令。在可选实施例中,复合指令可以包括至少为2的任何数目的扩充槽。不管扩充槽的数目,复合指令中多个扩充槽中的一个可以是数学指令。在图3的示例中,instr_0以及instr_M1可以是复合指令的一部分。当处理器遇到复合指令时,处理器110并行提取以及解码所述复合指令的多个扩充槽中的所有指令。
通常在AI计算中使用的一个非线性函数是softmax函数。softmax是将k实数(realnumber)的向量作为输入的函数,以及将数归一化成由K个可能性组合的概率分布。对于[x1,x2,…xk]的输入向量,softmax函数输出K个元素的向量,每一元素被表示为:
Figure BDA0002359040810000091
在一个实施例中,处理器110与加速器120结合可以执行指令用于计算softmax函数。在一个实施例中,加速器110可以包括用于计算分母(即,指数的和)的累加器114。处理器110可以计算K个迭代(iretation)回路的和,以及在每一迭代中,处理器110赋能加速器120来评估K个指数函数之一。
图5是示出了根据一个实施例的用于评估前述所提到的softmax函数的进程500。在步骤510,当处理器110进入环路将循环索引j初始化为0时,进程500开始。当索引j还没有达到K时(步骤520),每一迭代(步骤530)中所述处理器110赋能加速器120来评估指数函数
Figure BDA0002359040810000093
(图5中标记为exp(xj))。在步骤540,加速器120评估指数函数以及输出结果到处理器110。还参考图1,在步骤550,处理器110使用累加器114来累加指数函数的输出,以及将每一指数的值储存在存储器113中。迭代随着递增的j值继续进行。当循环结束时(即,当j=K时),在步骤560,处理器110赋能加速器120来计算累加结果(即,指数的和)的倒数,以及在步骤570,加速器120评估所述倒数;如,藉由评估
Figure BDA0002359040810000092
其中x等于指数的和。在步骤580,处理器110用每一先前计算的指数乘以所述倒数函数的输出来获得softmax输出的对应元素。
图5的示例示出了藉由加速非线性函数的评估,加速器120可以节省大量时间;例如,平均从几十或上百个时钟周期到1~5个时钟周期。特别地,当评估涉及大量迭代时,时间节省可以显著地改善系统性能。
在一个实施例中,非暂态计算机可读媒介在其上储存指令,当由系统100中的处理器110执行时,使得系统执行图5的进程500。
图6是示出了根据一个实施例的用于加速非线性数学计算的方法600的流程图。在一个实施例中,方法600可以由图1以及图2中的加速器120执行。
方法600开始于加速器在步骤610从处理器接收识别非线性函数的信号,所述非线性函数对应于所述处理器的一指令集中的一数学指令。处理器的示例是图1中的处理器110。在步骤620,所述加速器根据所述信号使用一个第一评估器(如图2中的第一评估器230)评估所述非线性函数。当所述信号将所述非线性函数是被为复合函数时,所述加速器藉由对所述一个第一评估器的输出额外地使用一个第二评估器来评估所述非线性函数。每一第一评估器以及第二评估器是为评估各自的非线性函数指定的固定功能硬件电路。所述硬件电路通常包括晶体管。在步骤630,加速器发送非线性函数的输出到处理器。
图5以及图6的流程图的操作已经参考图1以及图2的示例性实施例进行描述。然而,将能理解,图5以及图6的流程图的操作可以由除了参考图1以及图2所讨论的实施例之外的本发明的其他实施例来执行,以及参考图1以及图2所讨论的实施例可以执行不同于参考所述流程图讨论的这些操作。虽然图5以及图6示出了由本发明某些实施例执行的操作的特定次序,将能理解,这一次序是示例性的(例如,可选的实施例可以以不同的次序、组合某些操作、重叠某些操作等来执行操作)。
虽然本发明已经在几个实施例的方面进行描述,本领域习知技术者将意识到,本发明不限于所描述的实施例,以及可以用所附申请专利范围的精神以及范围内的修正以及改变来实施。因此描述被认为是说明性的而非限制性的。

Claims (20)

1.一种用于加速非线性数学计算的系统,包括:
加速器,包括一组第一评估器以及一组第二评估器,其中每一所述第一评估器以及所述第二评估器是为评估各自的非线性函数指定的固定功能硬件电路;以及
处理器,耦合于所述加速器,所述处理器用于解码指令集中的数学指令,发送识别非线性函数的信号到所述加速器,所述非线性函数对应于所述数学指令,以及从所述加速器接收所述非线性函数的输出,
其中所述加速器根据所述信号用于使用一个第一评估器来评估所述非线性函数,以及,当所述信号识别所述非线性函数为复合函数时,对所述一个第一评估器的输出额外地使用一个第二评估器。
2.如权利要求1所述的用于加速非线性数学计算的系统,其中所述指令集包括至少一个复合指令,所述复合指令指定所述数学指令以及由所述处理器执行的一个或多个指令,以及其中所述处理器用于并行解码所述复合指令中的所述数学指令以及所述一个或多个指令。
3.如权利要求1所述的用于加速非线性数学计算的系统,其中所述加速器包括多个管线阶段来在完成第一非线性函数的评估之前,评估一第二非线性函数。
4.如权利要求3所述的用于加速非线性数学计算的系统,其中所述处理器包括多个管线阶段来在连续的时钟周期中赋能所述加速器来评估所述第一非线性函数以及所述第二非线性函数。
5.如权利要求1所述的用于加速非线性数学计算的系统,其中所述加速器包括进一步第一评估单元以及第二评估单元,所述第一评估单元进一步包括所述一组第一评估器以及所述第二评估单元进一步包括所述一组第二评估器,以及
其中所述第一评估单元具有耦合于所述第二评估单元第一输出路径,以及旁路所述第二评估单元的第二输出路径。
6.如权利要求1所述的用于加速非线性数学计算的系统,其中所述处理器进一步包括累加器,来在多次迭代中累加来自所述加速器的非线性函数输出。
7.如权利要求6所述的用于加速非线性数学计算的系统,其中所述处理器用于执行指令来使用所述累加的非线性函数输出来计算softmax函数。
8.如权利要求1所述的用于加速非线性数学计算的系统,其中所述指令集包括指定复合函数的数学指令,以及其中每一复合函数是至少两个非线性函数的复合。
9.如权利要求8所述的用于加速非线性数学计算的系统,其中所述复合函数包括至少一个sigmoid函数或双曲线正切函数。
10.如权利要求1所述的用于加速非线性数学计算的系统,其中所述第一评估器用于评估非线性函数,所述非线性函数包括至少指数函数、对数函数、倒数函数以及三角函数。
11.如权利要求1所述的用于加速非线性数学计算的系统,其中所述处理器进一步包括存储器来储存查找表,所述查找表将所述非线性函数与索引以及输入参数相关联,所述索引识别所述非线性函数以及所述输入参数将与所述信号一起被发送到所述加速器。
12.如权利要求1所述的用于加速非线性数学计算的系统,其中所述加速器进一步包括输入接口以及输出接口来分别转换输入数据格式转换以及输出数据格式。
13.一种用于加速非线性数学计算的方法,包括:
由加速器从处理器接收识别非线性函数的信号,所述非线性函数对应于所述处理器的指令集中的数学指令;
由所述加速器根据所述信号使用一个第一评估器评估所述非线性函数,以及,当所述信号识别所述非线性函数为复合函数时,对一个第一评估器的输出额外地使用一个第二评估器,其中所述第一评估器以及所述第二评估器是为评估各自的非线性函数指定的固定功能硬件电路;以及
发送来自所述加速器的所述非线性函数的输出到所述处理器。
14.如权利要求13所述的用于加速非线性数学计算的方法,其中所述指令集包括至少一个复合指令,所述复合指令指定所述数学指令以及由所述处理器执行的一个或多个指令,以及其中所述处理器用于并行解码所述复合指令中的所述数学指令以及所述一个或多个指令。
15.如权利要求13所述的用于加速非线性数学计算的方法,进一步包括:
由所述加速器在多个管线阶段中评估第一非线性函数以及第二非线性函数,其中所述第二非线性函数在完成所述第一非线性函数的评估前被评估。
16.如权利要求13所述的用于加速非线性数学计算的方法,其中所述加速器包括第一评估单元以及第二评估单元,所述第一评估单元进一步包括多个第一评估器以及所述第二评估单元进一步包括多个第二评估器,以及其中所述方法进一步包括:
由所述加速器根据所述信号选择耦合于所述第二评估单元的输入的第一路径与旁路所述第二评估单元的第二路径之间选择所述第一评估单元的输出路径。
17.如权利要求13所述的用于加速非线性数学计算的方法,其中所述指令集包括数学指令,当由所述处理器执行所述数学指令时,其使得所述处理器在多次迭代中累加来自的所述加速器的非线性函数输出,以及使用所述累加的非线性函数输出计算softmax函数。
18.如权利要求13所述的用于加速非线性数学计算的方法,其中所述指令集包括指定复合函数的数学指令,以及其中每一复合函数是至少两个非线性函数的复合。
19.如权利要求18所述的用于加速非线性数学计算的方法,其中所述复合函数包括至少一个sigmoid函数或双曲线正切函数。
20.如权利要求13所述的用于加速非线性数学计算的方法,其中所述使用一个第一评估器评估所述非线性函数进一步包括:
所述非线性函数包括至少一个指数函数、对数函数、倒数函数以及三角函数。
CN202010016390.7A 2019-01-16 2020-01-08 加速非线性数学计算的系统及方法 Active CN111445016B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962792985P 2019-01-16 2019-01-16
US62/792,985 2019-01-16
US16/731,527 2019-12-31
US16/731,527 US11144282B2 (en) 2019-01-16 2019-12-31 Mathematical accelerator for artificial intelligence applications

Publications (2)

Publication Number Publication Date
CN111445016A true CN111445016A (zh) 2020-07-24
CN111445016B CN111445016B (zh) 2023-06-09

Family

ID=71516073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010016390.7A Active CN111445016B (zh) 2019-01-16 2020-01-08 加速非线性数学计算的系统及方法

Country Status (3)

Country Link
US (1) US11144282B2 (zh)
CN (1) CN111445016B (zh)
TW (1) TWI743648B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455144B1 (en) * 2019-11-21 2022-09-27 Xilinx, Inc. Softmax calculation and architecture using a modified coordinate rotation digital computer (CORDIC) approach
EP3882823A1 (en) * 2020-03-17 2021-09-22 Samsung Electronics Co., Ltd. Method and apparatus with softmax approximation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN108009106A (zh) * 2016-10-27 2018-05-08 谷歌公司 神经网络计算模组
US20180174036A1 (en) * 2016-12-15 2018-06-21 DeePhi Technology Co., Ltd. Hardware Accelerator for Compressed LSTM
US20190004995A1 (en) * 2017-06-28 2019-01-03 Wisconsin Alumni Research Foundation High-Speed, Fixed-Function, Computer Accelerator

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11527523B2 (en) * 2018-12-10 2022-12-13 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
US10482337B2 (en) * 2017-09-29 2019-11-19 Infineon Technologies Ag Accelerating convolutional neural network computation throughput
US10725742B2 (en) * 2018-06-05 2020-07-28 Texas Instruments Incorporated Transcendental function evaluation
US20200226444A1 (en) * 2019-01-15 2020-07-16 BigStream Solutions, Inc. Systems, apparatus, methods, and architecture for precision heterogeneity in accelerating neural networks for inference and training

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN108009106A (zh) * 2016-10-27 2018-05-08 谷歌公司 神经网络计算模组
US20180174036A1 (en) * 2016-12-15 2018-06-21 DeePhi Technology Co., Ltd. Hardware Accelerator for Compressed LSTM
US20190004995A1 (en) * 2017-06-28 2019-01-03 Wisconsin Alumni Research Foundation High-Speed, Fixed-Function, Computer Accelerator

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
WEI DING,ZEYU HUANG ET AL: "Designing efficient accelerator of depthwise separable convolutional neural network on FPGA" *
孙凡: "卷积神经网络加速器的实现与优化" *
张奕玮: "基于FPGA的高能效比LSTM预测算法加速器的设计与实现" *

Also Published As

Publication number Publication date
TWI743648B (zh) 2021-10-21
US20200225913A1 (en) 2020-07-16
TW202029063A (zh) 2020-08-01
US11144282B2 (en) 2021-10-12
CN111445016B (zh) 2023-06-09

Similar Documents

Publication Publication Date Title
KR102443546B1 (ko) 행렬 곱셈기
US11531540B2 (en) Processing apparatus and processing method with dynamically configurable operation bit width
CN106484362B (zh) 利用使用者指定二维定点算术运算的装置
US20190102671A1 (en) Inner product convolutional neural network accelerator
CN110689125A (zh) 计算装置
KR101137403B1 (ko) Simd 아키텍처에서 조건적 데이터 선택을 위한 빠른 벡터 마스킹 알고리즘
CN110889439B (zh) 一种图像特征提取方法、装置及电子设备和存储介质
US20200356837A1 (en) Fast deep learning fully-connected inference
US10089078B2 (en) Circuit for performing a multiply-and-accumulate operation
US11275561B2 (en) Mixed precision floating-point multiply-add operation
EP3769208B1 (en) Stochastic rounding logic
CN111445016B (zh) 加速非线性数学计算的系统及方法
JP7495194B2 (ja) 積和演算用のプロセッサ・ユニット
US8972471B2 (en) Arithmetic module, device and system
US20220156567A1 (en) Neural network processing unit for hybrid and mixed precision computing
CN114510217A (zh) 处理数据的方法、装置和设备
CN113867799A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
Kang et al. Datapath Extension of NPUs to Support Nonconvolutional Layers Efficiently
Walker et al. Automatic code generation on a MOVE processor using cartesian genetic programming
JP7506276B2 (ja) 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法
US11593114B1 (en) Iterating group sum of multiple accumulate operations
WO2023071780A1 (en) Fused modular multiply and add operation
TWI812524B (zh) 藉由算數及/或逐位元單元執行條件敘述的方法及系統
Menard et al. Exploiting reconfigurable SWP operators for multimedia applications
CN116578342A (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
GR01 Patent grant
GR01 Patent grant