CN112541581A - 一种加速计算单元和加速计算系统 - Google Patents
一种加速计算单元和加速计算系统 Download PDFInfo
- Publication number
- CN112541581A CN112541581A CN201910900706.6A CN201910900706A CN112541581A CN 112541581 A CN112541581 A CN 112541581A CN 201910900706 A CN201910900706 A CN 201910900706A CN 112541581 A CN112541581 A CN 112541581A
- Authority
- CN
- China
- Prior art keywords
- calculation
- data
- module
- memory
- multiplexer
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/40—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
- G06F7/44—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Electromagnetism (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种加速计算单元和加速计算系统。其中,加速计算系统包括:处理器、存储器和加速计算单元。处理器分别与存储器和加速计算单元相耦接,向存储器写入待计算数据,并对加速计算单元进行控制。存储器存储由处理器写入的待计算数据。加速计算单元基于来自处理器的控制指令预先配置控制信息,并根据控制信息访问存储器,实现数据计算,再将计算的结果写入存储器,以便处理器从存储器获取计算结果。
Description
技术领域
本发明涉及处理器领域,尤其涉及加速计算单元和加速计算系统。
背景技术
越来越多的电子设备通过采用神经网络算法,来为用户提供更多元化更便捷的服务。以具有语音唤醒功能的智能设备为例,现有的多数智能语音处理芯片均是采用多核架构,其中数据计算中心是采用DSP(Digital Signal Processing)处理器来执行,这样的设计,一方面,DSP处理器与存储器是分开的,DSP处理器取得数据需要通过总线,这就导致计算过程占用总线带宽,降低了处理器的性能;另一方面,DSP处理器所需要的芯片面积大、成本高。而相较于云端的处理性能,终端产品更需要的是低成本、低功耗的产品。
因此,需要设计一种新的处理系统,能够有效提高其执行神经网络相关计算的速度,以应用于一些低成本、低功耗的场景中。
发明内容
为此,本发明提供了一种加速计算单元和加速计算系统,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种加速计算单元,包括:控制寄存模块,适于寄存控制信息,控制信息通过与之耦接的处理器所发送的指令来预先配置;计算模块,适于根据控制信息,从与之耦接的存储器中获取待计算数据,来进行计算,并将计算的结果写回存储器,以便处理器从存储器获取计算结果。
可选地,在根据本发明的加速计算单元中,控制信息包括:待计算数据信息、计算结果信息及计算类型。
可选地,在根据本发明的加速计算单元中,计算模块适于:根据待计算数据信息,从存储器中读取待计算数据,并根据计算类型在待计算数据上执行计算;以及根据计算结果信息将执行计算后的计算结果写入到存储器中。
可选地,在根据本发明的加速计算单元中,待计算数据信息包括待计算数据的起始地址和输入位宽,计算结果信息包括计算结果写回地址和结果位宽。计算模块适于根据待计算数据的起始地址和输入位宽来从存储器中读取待计算数据,以及根据计算结果写回地址和结果位宽将计算结果写入到存储器中。
可选地,在根据本发明的加速计算单元中,控制信息还包括计算使能标志,以及,计算模块适于在计算使能标识指示允许计算时,执行读取待计算数据、进行计算,写入计算结果的操作,并将计算使能标识设置为指示计算完成。
可选地,在根据本发明的加速计算单元中,计算类型包括乘累加计算、向量计算、激活函数计算、归一化指数函数计算中的一种或多种。
可选地,在根据本发明的加速计算单元中,计算模块包括乘累加计算模块、向量计算模块、最值计算模块、偏移量计算模块、激活函数计算模块和归一化指数函数计算模块中的一种或多种;以及一个或多个多路选择器,适于耦接到乘累加计算模块、向量计算模块、最值计算模块、偏移量计算模块、激活函数计算模块、归一化指数函数计算模块之间,并从其输出的数据中选择一路作为结果输出。
可选地,在根据本发明的加速计算单元中,乘累加计算模块适于对输入的数据执行乘累加计算;向量计算模块适于对输入的数据执行向量乘、向量加及向量平方和计算;最值计算模块适于对向量的最值进行求解;偏移量计算模块适于对输入的数据执行偏移量计算,来输出带偏移量的数据;激活函数计算模块适于对输入的数据执行与激活函数相关的计算;归一化指数函数计算模块适于对输入的数据进行SoftMax计算的控制逻辑。
可选地,在根据本发明的加速计算单元中,与激活函数相关的计算包括以下计算中的一种或多种:ReLU、Sigmoid、Tanh、指数、倒数计算。
可选地,在根据本发明的加速计算单元中,向量计算模块还适于复用乘累加计算模块中的乘法器,来实现向量乘及向量平方和计算;归一化指数函数计算模块还适于复用激活函数计算模块中的指数、倒数计算,且复用乘累加计算模块中的乘法器,来实现与SoftMax相关的计算逻辑。
可选地,在根据本发明的加速计算单元中,多路选择器包括:第一多路选择器,其输入端分别与乘累加计算模块和偏移量计算模块相耦接,适于选择乘累加计算模块输出的数据或偏移量计算模块输出的数据为第一多路选择器的输出数据;第二多路选择器,其输入端分别与第一多路选择器、乘累加计算模块和存储器相耦接,其输出端与激活函数计算模块相耦接,适于选择第一多路选择器输出的数据或乘累加计算模块输出的数据或从存储器读取的数据,作为激活函数计算模块的输入数据;第三多路选择器,其输入端分别与激活函数计算模块的输入端和输出端相耦接,适于选择激活函数计算模块的输出数据或输入数据作为第三多路选择器的输出数据;第四多路选择器,其输入端分别与第三多路选择器和存储器相耦接,其输出端与归一化指数函数计算模块相耦接,适于选择第三多路选择器输出的数据或从存储器中读取的数据作为归一化指数函数计算模块的输入数据;第五多路选择器,其输入端分别与归一化指数函数计算模块的输入端和输出端相耦接,适于选择归一化指数函数计算模块输出的数据或输入的数据作为写回到存储器中的数据。
根据本发明的另一个方面,提供了一种加速计算系统,包括:处理器,分别与存储器和加速计算单元相耦接,适于向存储器写入待计算数据,还适于对加速计算单元进行控制;存储器,适于存储由处理器写入的待计算数据;如上所述的加速计算单元,适于基于来自处理器的控制指令预先配置控制信息,并根据控制信息访问存储器,实现数据计算,并将计算的结果写入存储器。
可选地,在根据本发明的加速计算系统中,处理器适于在向存储器写入待计算数据后,向加速计算单元发送控制指令。
可选地,在根据本发明的加速计算系统中,加速计算单元适于根据控制指令预先配置控制信息,并根据控制信息从存储器中获取待计算数据;加速计算单元还适于在对待计算数据进行计算后,将计算结果写入存储器,并通过中断的方式通知处理器,以便处理器从存储器中获取计算结果。
可选地,在根据本发明的加速计算系统中,存储器包括多个存储空间,且各存储空间均具有单独的访问接口。
可选地,在根据本发明的加速计算系统中,处理器适于通过一个或多个访问接口,向一个或多个存储空间写入待计算数据;加速计算单元适于通过一个或多个访问接口,从对应的一个或多个存储空间读出数据,还适于在完成计算后,通过一个或多个访问接口,将计算结果写回存储空间。
根据本发明的还有一个方面,提供了一种片上系统,包括如上所述的加速计算系统。
根据本发明的方案,通过设计与处理器和存储器相耦接的加速计算单元,由加速计算单元基于来自处理器的控制指令预先配置控制信息,并从存储器中获取待计算数据,来进行与神经网络相关的计算,以达到提高处理系统执行效率的效果。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的加速计算系统100的示意图;
图2示出了根据本发明一个实施例的存储器与处理器、加速计算单元进行通信的示意图;
图3示出了根据本发明一个实施例的计算模块300的示意图;
图4示出了根据本发明一个实施例的进行SoftMax计算时的状态转换图;
图5A-图5D分别示出了根据本发明一种实施例的四个计算阶段的示意图;
图6示出了根据本发明一个实施例的片上系统600的示意图;以及
图7示出了根据本发明一个实施例的智能家居场景700的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的加速计算系统100的示意图。如图1所示,加速计算系统100包括:处理器110、存储器120和加速计算单元130。并且,三者采用紧耦合的方式,处理器110分别与存储器120和加速计算单元130相耦接,存储器120又与加速计算单元130相耦接。
根据本发明的实施方式,处理器110一方面向存储器120写入待计算数据,另一方面还通过发送控制指令给加速计算单元130,来对其进行控制。在一种实施例中,处理器110在向存储器120写入待计算数据后,向加速计算单元130发送控制指令。存储器120存储由处理器120写入的待计算数据。加速计算单元200基于来自处理器110的控制指令预先配置控制信息,并根据控制信息访问存储器120,从存储器120中获取待计算数据。另外,加速计算单元130利用所获取的待计算数据和控制信息实现数据计算,并在计算结束后,将计算的结果写入存储器120;同时,还通过中断的方式通知处理器110,以便处理器110从存储器120中获取计算结果。
另外,为实现处理器110和加速计算单元130可同时访问存储器120,存储器120采用分块技术,即,存储器120包含多个存储空间,且每个存储空间均有单独的访问接口,从而减少处理器110和加速计算单元130访问存储器120的冲突情况。图2示出了根据本发明一个实施例的存储器120与处理器110、加速计算单元130进行通信的示意图。如图2所示,存储器120中包含存储空间122_1、存储空间122_2、…、存储空间122_n(为便于描述,以下统称为存储空间122),每个存储空间通过单独的访问接口124(如图2中所示的124_1、124_2、…、124_n)与处理器110或加速计算单元130进行通信。
处理器110通过一个或多个访问接口,向对应的一个或多个存储空间写入数据;同时,加速计算单元130也可以通过一个或多个访问接口,从对应的一个或多个存储空间读出数据,在加速计算单元130完成计算后,还可以通过一个或多个访问接口将计算结果写回对应的一个或多个存储空间。如图2所示,处理器110通过访问接口124_1和124_2分别向存储空间122_1和122_2写入数据,同时,加速计算单元130通过访问接口124_n从存储空间122_n读出数据,并通过访问接口124_n-1向存储空间122_n-1写入数据。需要说明的是,存储器120中所存储的待计算数据全部由处理器110提前写入,在计算过程中不更新。此外,在根据本发明的实施例中,存储器120中还包含总线控制逻辑,该总线控制逻辑采用轮询的仲裁方式,当处理器110与加速计算单元130访问存储器120发生冲突时,依据当前轮询的顺序依次访问存储器120。
根据本发明的实施方式,通过存储器120的分块技术,实现了处理器110写入数据和加速计算单元130读取数据、写入数据的并行执行,能够更高地提高加速计算系统100的执行效率。
另外,在根据本发明的再一些实施例中,当加速计算单元130对应的一个或多个存储空间空闲时,可以将这一个或多个存储空间分配给处理器110使用,例如,处理器110通过访问接口,向这一个或多个存储空间写入其他数据。本发明的实施例对此不做限制。
继续如图1,加速计算单元130又包括控制寄存模块132和计算模块300。
其中,控制寄存模块132寄存控制信息。如前文所述,控制信息通过与之耦接的处理器110所发送的控制指令来预先配置。在一种实施例中,控制信息包括待计算数据信息、计算结果信息及计算类型。
基于上述控制信息,计算模块300向与之耦接的存储器120中获取待计算数据,来进行计算。并且,在计算结束后,将计算的结果写回到存储器120中。具体地,计算模块300根据待计算数据信息,从存储器120中读取待计算数据,并根据计算类型在待计算数据上执行计算;接着,根据计算结果信息将执行计算后的计算结果写入到存储器120中。
在一些实施例中,待计算数据信息又包括待计算数据的起始地址和输入位宽,计算结果信息又包括计算结果写回地址和结果位宽。计算模块300根据待计算数据的起始地址和输入位宽来从存储器120中读取待计算数据,再根据计算结果写回地址和结果位宽将计算结果写入到存储器120中。
根据本发明的再一些实施例,控制信息还包括计算使能标志。计算使能标志指示两种状态:指示允许计算和指示计算完成。当计算使能标识指示允许计算时,计算模块300执行上述读取待计算数据、进行计算,写入计算结果的操作,并将计算使能标识设置为指示计算完成。
在一个实施例中,可以通过将计算使能标志设置为“1”来指示允许计算,将计算使能标志设置为“0”来指示计算完成。当然,本发明的实施例对采用何种方式来设置计算使能标志并不做过多限制。在一个实施例中,在计算使能标识为1时,计算模块300根据待计算数据的起始地址、输入位宽等,从存储器120中读取待计算数据,再根据计算类型,对待计算数据进行计算。在计算完成后,将计算的结果按照计算结果写回地址写回到存储器120,并将计算使能标志置零。
根据本发明的实施例,结合神经网络中常见的计算过程,将计算类型大致定义为以下几种,包括:乘累加计算、向量计算、激活函数计算、归一化指数函数(SoftMax)计算。根据本发明实施例的计算类型可以取上述所列计算类型中的一种或多种,可以是它们分别作为一种计算类型,也可以将它们进行任意组合后,作为一种计算类型,不限于此。其中,向量计算包括向量加、向量乘、向量平方和、向量求最大值和最小值等计算。激活函数计算包括如ReLU(线性整流函数,Rectified Linear Unit)、SigMoid(S型函数)、Tanh(双曲正切函数)等神经网络中常见的激活函数的计算。
为说明计算模块300执行各种类型的计算的过程,图3示出了根据本发明一个实施例的计算模块300的示意图。
在一些实施例中,计算模块300包括:乘累加计算模块310、向量计算模块320、最值计算模块330、偏移量计算模块340、激活函数计算模块350、归一化指数函数计算模块360中的一种或多种,以及一个或多个多路选择器370。一个或多个多路选择器370耦接到上述的乘累加计算模块310、向量计算模块320、最值计算模块330、偏移量计算模块340、激活函数计算模块350、归一化指数函数计算模块370之间,并从它们输出的数据中选择一路数据,作为结果输出。
如图3所示,乘累加计算模块310对输入的数据执行乘累加计算。向量计算模块320对输入的数据执行向量乘、向量加及向量平方和计算。在根据本发明的实施例中,向量计算模块320复用乘累加计算模块310中的乘法器,来实现向量乘及向量平方和计算。为便于描述,在图3中将向量计算模块320合并入乘累加计算模块310中。这样,经由图3中的乘累加计算模块310输出的数据包含两路,一路是乘累加计算结果,一路是向量平方和(当然,还包括向量乘、向量加)计算结果。
另外,在神经网络的相关计算中,与向量相关的计算除了向量乘、向量加及向量平方和外,还包括计算向量的最值,在本实施例中,通过最值计算模块330对向量的最值(包括最大值、最小值)进行求解,并输出算得的最值。
偏移量计算模块340对输入的数据执行偏移量计算,来输出带偏移量的数据。在图3中,偏移量计算模块340的输入端与乘累加计算模块310的输出相耦接,来对乘累加计算结果再进行偏移量的计算,输出带偏移量的乘累加计算结果。
激活函数计算模块350对输入的数据执行与激活函数相关的计算。在一种实施例中,要整合上述多个激活函数的计算,需要进行指数计算和/或倒数计算,以实现ReLU、SigMoid、Tanh函数计算。因此,与激活函数相关的计算可能包括:ReLU、SigMoid、Tanh、指数、倒数计算,当然不限于此。当激活函数为其他激活函数时,还可以通过对激活函数的展开分析,添加其他与激活函数相关的计算。
归一化指数函数计算模块360对输入的数据进行SoftMax计算的控制逻辑。根据一种实施方式,SoftMax计算要用到指数计算、求和计算、除法计算、乘法计算等计算逻辑,故在根据本发明的一个实施例中,归一化指数函数计算模块360复用激活函数计算模块350中的指数计算和倒数计算,且复用乘累加计算模块310中的乘法器,来实现与SoftMax相关的计算逻辑。
此外,在上述各计算模块之间,还耦接有一个或多个多路选择器370,用于从各计算模块输出的数据中选择一路数据,作为该多路选择器的输出数据输出。
在一种实施例中,多路选择器370包括:第一多路选择器371、第二多路选择器373、第三多路选择器375、第四多路选择器377和第五多路选择器379。
结合图3所示,第一多路选择器371的输入端分别与乘累加计算模块310和偏移量计算模块340相耦接,用来选择由乘累加计算模块310输出的数据(即,累乘加计算结果)或由偏移量计算模块340输出的数据(即,带偏移量的乘累加计算结果)为第一多路选择器371的输出数据。第二多路选择器373的输入端分别与第一多路选择器371、乘累加计算模块310和存储器120相耦接,第二多路选择器373的输出端与激活函数计算模块350相耦接,用来选择第一多路选择器371输出的数据或乘累加计算模块310输出的数据(即,向量平方和计算结果)或从存储器120读取的数据,作为激活函数计算模块350的输入数据。第三多路选择器375的输入端分别与激活函数计算模块350的输入端和输出端相耦接,用来选择激活函数计算模块350的输出数据或输入数据作为第三多路选择器375的输出数据。第四多路选择器377的输入端分别与第三多路选择器375和存储器120相耦接,其输出端与归一化指数函数计算模块360相耦接,用来选择第三多路选择器375输出的数据或从存储器120中读取的数据作为归一化指数函数计算模块360的输入数据。第五多路选择器379的输入端分别与归一化指数函数计算模块360的输入端和输出端相耦接,用来选择归一化指数函数计算模块360输出的数据或输入的数据作为写回到存储器120中的数据。
如图3,在各多路选择器的输入端,还配置有相应的控制信号,该控制信号由控制寄存模块132中寄存的控制信息给出。控制信号包括乘累加控制信号(记作Acc_mode)、偏移控制信号(记作Mac_bias_bypass_n)、激活控制信号(记作Active_bypass_n)和归一化指数函数控制信号(记作Softmax_bypass_n)。各多路选择器在控制信号的控制下选择一路输入进行输出,以实现乘累加计算、向量计算、激活函数计算、归一化指数函数计算。
表1示出了控制信号与各计算类型的对应关系,以进一步说明计算模块300如何实现上述各种类型的计算。
表1控制信号与输出计算结果的对应关系
以下以SoftMax计算为例,来说明根据本发明实施例的计算模块300实现上述各类型计算的过程。
如前文所述,归一化指数函数计算模块360在进行SoftMax计算时,要用到指数计算、求和计算、除法计算、乘法计算等计算逻辑,计算逻辑可以通过复用激活函数计算模块350和乘累加计算模块310来实现。
在一种实施例中,将SoftMax的计算过程分四步进行。图4示出了根据本发明一个实施例的进行SoftMax计算时的状态转换图。
步骤一,进行求最值计算。具体地,在该状态下,从指定的存储空间中取出待计算数据,并求取最值。在步骤一完成后,进入步骤二。
步骤二,进行指数计算与累加求和计算。可选地,在该状态下,从指定的存储空间中取出待计算数据,归一化指数函数计算模块360可以将取出的数据和步骤一求得的最值,一并传送至激活函数计算模块350,由其对上述两种数据作差得到差值,再对差值结果进行指数计算,并将指数计算的结果存储到存储器指定的地址中。同时,还可以对指数计算结果进行累加,将累加的结果(记作SUM)作为中间变量寄存在寄存器中。在步骤二完成后,进入步骤三。
步骤三,进行倒数计算。可选地,在该状态下,将步骤二中得到的累加的结果(即,SUM)传送至激活函数计算模块350,进行倒数计算,并将倒数计算结果(即,1/SUM)寄存在寄存器中。在步骤三完成后,进入步骤四。
步骤四,进行乘法运算。可选地,在该状态下,从存储器中取出经步骤二得到的指数计算结果,将其与经步骤三得到的倒数计算结果一并传送至乘累加计算模块310,由其对二者进行乘法计算,并将乘积结果写回到存储器120中的结果地址中,SoftMax计算结束。需要说明的是,还可以通过寄存器的控制对乘积结果进行移位截取处理,再将处理的结果写回到存储器120中。本发明的实施例对此不做限制。
根据本发明的计算模块300,涵盖了神经网络计算中可能用到的多种计算单元硬件电路模块,包括但不限于:乘累加、矢量加、矢量乘、矢量平方和、ReLU、Sigmoid、Tanh、SoftMax、指数计算、倒数计算及求最值计算。在实际的应用过程中,可根据算法设计随意搭配各硬件电路模块,来实现神经网络计算。本发明的实施例对此不做过多限制。
另外,计算模块300中的所有模块均采用定点化设计,输入输出的数据位宽均可通过相应的寄存器配置来达到定点化的效果。
从另一方面来看,在计算模块300中,依次划分了四个计算阶段,来完成相应的计算。在根据本发明的实施例中,第一计算阶段先进行向量计算,第二计算阶段主要进行第一级累加计算,第三计算阶段进行第二级累加计算,第四计算阶段主要进行向量移位及精度控制。图5A-图5D分别示出了根据本发明一种实施例的上述四个计算阶段的示意图。
如图5A示出的是向量乘的计算。输入位宽为32位的4组数据(数据data_0、data_1和另外两组全0的32位数据32’d0),经数据选择器处理后,输出8组数据(数据位宽为8位),其中每2组数据为一路,经乘法计算后,输出1组16位的数据,再寄存到寄存器的相应位置(即,图5A中所示的Product_0(15:0]、…、Product_3(15:0])。应当指出,本发明实施例并不限制输入数据的位宽,也可以是64位、128位等,类似地,数据选择器可以是二选一、四选一数据选择器等,本发明的实施例对此均不作限制。
如图5B示出的是第一级累加计算。将四组数据分别输入两个数据选择器(其中输入第一个数据选择器的两组数据均为0-31位,输入第二个数据选择器的两组数据为32-63位),经处理后分别输出8组数据(数据位宽均为8位);接着,每2组数据为一路,经加法计算后得到一组位宽为9位的数据,再寄存到寄存器的相应位置(即,sum_0(8:0]、sum_1(8:0]、…、sum_6(8:0]、sum_7(8:0])。同样地,本发明实施例对输入及输出数据的位宽并不做限制,对采用的数据选择器的个数亦不作限制,可以是2个,也可以是4个等。
如图5C示出的是第二级累加计算。第二级累加计算除了包含多次第一级累加计算中的加法计算外,还会对输入数据(即data’,该输入数据的位宽可以是8位、16位、32位,不限于此)进行移位、循环、截取等处理,以得到固定位宽(如79位)的数据;而后,对该固定位宽的数据进行激活函数计算(如,ReLU),再经移位等处理后输出数据。在一种实施例中,最终输出的数据位宽为64位。
如图5D,在第四阶段,主要对输入数据进行移位、循环、截取等操作,以达到控制精度的目的。如图5D所述,输入数据的位宽为79位,先经移位、截取、循环处理,再经数据选择器(图中输入数据选择器的4组数据,一组为32位的全0数据,其他三组为经截取/循环处理后的数据,其中,三组截取处理可以截取不同位宽的数据,如分别截取32位、16位、8位数据,不限于此),最终选择输出32位的数据,并寄存到寄存器的相应位置。
根据本发明的加速计算方案,考虑到终端电子设备的处理器计算资源紧缺,设计了处理器110、存储器120、加速计算单元130紧耦合的加速计算系统100,将与神经网络相关的计算完全交给加速计算单元130来执行,而处理器110控制加速计算单元130,主要实现数据搬运、逻辑控制等相关功能。根据本发明的加速计算单元130在很大程度上,弥补了CPU在对神经网络处理相关计算的速度上的不足,减少了访问内存的时间,提高了处理器资源的利用率。
如表2,示出了在同等计算精度下,使用加速计算单元执行计算逻辑与使用处理器执行计算逻辑的性能评估数据。通过表2可以看到,通过根据本发明实施例的加速计算单元来执行计算逻辑,能够大大地提高计算效率。
表2性能评估数据对比
上面参考图1-3所描述的加速计算系统可以包含在处理系统中。处理系统还可以包括其它部件如各种中断源、协处理器等。这些部件和加速计算系统一起构成了一个处理系统。根据一种实施方式,这种处理系统包括SoC(片上系统)等。
图6示出了根据本发明一个实施例的片上系统(SoC)600的示意图。
片上系统600包括参考图1-3所述的加速计算系统100(包括处理器110、存储器120、加速计算单元130)、各种中断源620和协处理器630等。片上系统600可以集成在一块电路板上,并构成了一个相对完整的处理系统。中断源620例如为各种外设接口,接收外部输入并且输出经过处理器110处理之后的输出。协处理器630为一种专门的处理器,用于执行专门的处理任务,例如图像运算等。
根据本发明的片上系统(SoC)或者加速计算系统可以在各种智能设备中使用,以在智能设备中用于实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
另外,随着第5代通信技术的发展,越来越多的智能设备接入到移动网络中。根据本发明的一种实施场景,接入同一局域网的多个智能设备中,某一些智能设备具备根据本发明实施例所述的加速计算系统100,某些智能设备不具备加速计算系统100。这种情况下,智能设备之间的加速计算系统100可以共享。即,当不具备加速计算系统100的智能设备要进行诸如神经网络处理等相关计算时,可以发送请求给具备加速计算系统100的智能设备,并将待计算数据等信息发送给后者,请求通过后者的加速计算系统100,来完成相应的计算。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种IoT和AIoT设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行AI运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
如图7示出了根据本发明一个实施例的智能家居场景700的示意图。如图7所示,场景700中包括各种智能IoT设备,如语音交互设备710、视频播放设备720(例如智能电视、投影设备等)、智能空调730、智能冰箱740、智能微波炉750、智能窗帘760、智能灯具770、智能插座780等等。应当指出,图7所示的场景700仅作为一个示例,本领域技术人员可以理解,本发明对场景700中所包含的各种设备的数量均不作限制。例如,在家居场景中,可以在每个房间布置不止一个智能灯具770和智能插座780,也可以在客厅和卧室分别布置视频播放设备720,不限于此。这些IoT设备通过网络进行连接。
在一种实施例中,语音交互设备110为具有语音交互模块的设备,其可以接收用户发出的语音指令,还可以向用户返回相应的响应,该响应中可以包含语音或非语音的信息。根据一些实施方式,用户可以向语音交互设备110发出语音指令以实现某些功能,例如上网、点播歌曲、购物、了解天气预报等;也可以通过语音指令来对网络中的其他智能设备进行控制,如控制智能空调调整到某个温度、控制智能电视播放电影、控制智能灯具的开关、色温调节、控制智能窗帘的开关等等。根据本发明的片上系统或者加速计算系统可以布置在语音交互设备710中,来实现对用户输入的语音数据的处理,识别出用户意图。相较于利用云端服务来完成与识别用户意图相关的处理,利用终端设备来处理用户的语音数据,更需要低成本、低功耗的语音交互设备110,因此,根据本发明实施例的加速计算系统,能够很好地应用于嵌入式智能语音处理系统中。
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、IoT设备,AIoT设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
以上对智能设备的描述仅仅是示意性的,根据本发明的智能设备不受限于此,所有可以利用根据本发明的片上系统进行数据处理的智能设备都在本发明的保护范围之内。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (18)
1.一种加速计算单元,包括:
控制寄存模块,适于寄存控制信息,所述控制信息通过与之耦接的处理器所发送的指令来预先配置;
计算模块,适于根据所述控制信息,从与之耦接的存储器中获取待计算数据,来进行计算,并将计算的结果写回所述存储器,以便所述处理器从所述存储器获取计算结果。
2.如权利要求1所述的加速计算单元,其中,所述控制信息包括:待计算数据信息、计算结果信息及计算类型。
3.如权利要求2所述的加速计算单元,其中所述计算模块适于:
根据所述待计算数据信息,从所述存储器中读取待计算数据,并根据所述计算类型在所述待计算数据上执行计算;以及
根据所述计算结果信息将执行计算后的计算结果写入到所述存储器中。
4.如权利要求2所述的方法,其中,所述待计算数据信息包括待计算数据的起始地址和输入位宽,计算结果信息包括计算结果写回地址和结果位宽,以及
所述计算模块适于根据所述待计算数据的起始地址和输入位宽来从所述存储器中读取待计算数据,以及根据所述计算结果写回地址和结果位宽将所述计算结果写入到所述存储器中。
5.如权利要求3或者4所述的方法,其中所述控制信息还包括计算使能标志,以及
所述计算模块适于在所述计算使能标识指示允许计算时,执行所述读取待计算数据、进行所述计算,写入所述计算结果的操作,并将所述计算使能标识设置为指示计算完成。
6.如权利要求2所述的加速计算单元,其中,所述计算类型包括乘累加计算、向量计算、激活函数计算、归一化指数函数计算中的一种或多种。
7.如权利要求1-6中任一项所述的加速计算单元,其中,所述计算模块包括乘累加计算模块、向量计算模块、最值计算模块、偏移量计算模块、激活函数计算模块和归一化指数函数计算模块中的一种或多种;以及
一个或多个多路选择器,适于耦接到所述乘累加计算模块、向量计算模块、最值计算模块、偏移量计算模块、激活函数计算模块、归一化指数函数计算模块之间,并从其输出的数据中选择一路数据作为该多路选择器的输出数据。
8.如权利要求7所述的加速计算单元,其中,
所述乘累加计算模块适于对输入的数据执行乘累加计算;
所述向量计算模块适于对输入的数据执行向量乘、向量加及向量平方和计算;
所述最值计算模块适于对向量的最值进行求解;
所述偏移量计算模块适于对输入的数据执行偏移量计算,来输出带偏移量的数据;
所述激活函数计算模块适于对输入的数据执行与激活函数相关的计算;
所述归一化指数函数计算模块适于对输入的数据进行SoftMax计算的控制逻辑。
9.如权利要求8所述的加速计算单元,其中,所述与激活函数相关的计算包括以下计算中的一种或多种:ReLU、Sigmoid、Tanh、指数、倒数计算。
10.如权利要求9所述的加速计算单元,其中,
所述向量计算模块还适于复用所述乘累加计算模块中的乘法器,来实现向量乘及向量平方和计算;
所述归一化指数函数计算模块还适于复用激活函数计算模块中的指数、倒数计算,且复用所述乘累加计算模块中的乘法器,来实现与SoftMax相关的计算逻辑。
11.如权利要求7-10中任一项所述的加速计算单元,其中,所述多路选择器包括:
第一多路选择器,其输入端分别与所述乘累加计算模块和所述偏移量计算模块相耦接,适于选择所述乘累加计算模块输出的数据或所述偏移量计算模块输出的数据为第一多路选择器的输出数据;
第二多路选择器,其输入端分别与第一多路选择器、乘累加计算模块和存储器相耦接,其输出端与所述激活函数计算模块相耦接,适于选择第一多路选择器输出的数据或乘累加计算模块输出的数据或从存储器读取的数据,作为激活函数计算模块的输入数据;
第三多路选择器,其输入端分别与所述激活函数计算模块的输入端和输出端相耦接,适于选择激活函数计算模块的输出数据或输入数据作为第三多路选择器的输出数据;
第四多路选择器,其输入端分别与第三多路选择器和存储器相耦接,其输出端与归一化指数函数计算模块相耦接,适于选择第三多路选择器输出的数据或从存储器中读取的数据作为归一化指数函数计算模块的输入数据;
第五多路选择器,其输入端分别与所述归一化指数函数计算模块的输入端和输出端相耦接,适于选择所述归一化指数函数计算模块输出的数据或输入的数据作为写回到存储器中的数据。
12.一种加速计算系统,包括:
处理器,分别与存储器和加速计算单元相耦接,适于向存储器写入待计算数据,还适于对加速计算单元进行控制;
存储器,适于存储由所述处理器写入的待计算数据;
如权利要求1-11中任一项所述的加速计算单元,适于基于来自处理器的控制指令预先配置控制信息,并根据所述控制信息访问所述存储器,实现数据计算,并将计算的结果写入所述存储器。
13.如权利要求12所述的加速计算系统,其中,
所述处理器适于在向存储器写入待计算数据后,向加速计算单元发送控制指令。
14.如权利要求13所述的加速计算系统,其中,
所述加速计算单元适于根据所述控制指令预先配置控制信息,并根据控制信息从所述存储器中获取待计算数据;
所述加速计算单元还适于在对待计算数据进行计算后,将计算结果写入所述存储器,并通过中断的方式通知所述处理器,以便所述处理器从所述存储器中获取计算结果。
15.如权利要求12-14中任一项所述的加速计算系统,其中,
所述存储器包括多个存储空间,且各存储空间均具有单独的访问接口。
16.如权利要求15所述的加速计算系统,其中,
所述处理器适于通过一个或多个访问接口,向一个或多个存储空间写入待计算数据;
所述加速计算单元适于通过一个或多个访问接口,从对应的一个或多个存储空间读出数据,还适于在完成计算后,通过一个或多个访问接口,将计算结果写回存储空间。
17.一种片上系统,包括如权利要求12-16中任一项所述的加速计算系统。
18.一种智能设备,包括如权利要求17所述的片上系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900706.6A CN112541581A (zh) | 2019-09-23 | 2019-09-23 | 一种加速计算单元和加速计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900706.6A CN112541581A (zh) | 2019-09-23 | 2019-09-23 | 一种加速计算单元和加速计算系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112541581A true CN112541581A (zh) | 2021-03-23 |
Family
ID=75012924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910900706.6A Pending CN112541581A (zh) | 2019-09-23 | 2019-09-23 | 一种加速计算单元和加速计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112541581A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117807082A (zh) * | 2023-12-20 | 2024-04-02 | 中科驭数(北京)科技有限公司 | 哈希处理方法、装置、设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775599A (zh) * | 2017-01-09 | 2017-05-31 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN108446096A (zh) * | 2018-03-21 | 2018-08-24 | 杭州中天微系统有限公司 | 数据计算系统 |
CN108734281A (zh) * | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 处理装置、处理方法、芯片及电子装置 |
CN109389214A (zh) * | 2017-08-11 | 2019-02-26 | 谷歌有限责任公司 | 具有驻留在芯片上的参数的神经网络加速器 |
-
2019
- 2019-09-23 CN CN201910900706.6A patent/CN112541581A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775599A (zh) * | 2017-01-09 | 2017-05-31 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN108734281A (zh) * | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 处理装置、处理方法、芯片及电子装置 |
CN109389214A (zh) * | 2017-08-11 | 2019-02-26 | 谷歌有限责任公司 | 具有驻留在芯片上的参数的神经网络加速器 |
CN108446096A (zh) * | 2018-03-21 | 2018-08-24 | 杭州中天微系统有限公司 | 数据计算系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117807082A (zh) * | 2023-12-20 | 2024-04-02 | 中科驭数(北京)科技有限公司 | 哈希处理方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11720353B2 (en) | Processing apparatus and processing method | |
CN111291880A (zh) | 计算装置以及计算方法 | |
CN109993301B (zh) | 神经网络训练装置及相关产品 | |
JP2020522032A (ja) | 計算装置と計算方法 | |
CN111381871A (zh) | 运算方法、装置及相关产品 | |
CN111047022A (zh) | 一种计算装置及相关产品 | |
CN111161705B (zh) | 语音转换方法及装置 | |
CN111488976A (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN111488963A (zh) | 神经网络计算装置和方法 | |
CN112541581A (zh) | 一种加速计算单元和加速计算系统 | |
CN111368967B (zh) | 一种神经网络计算装置和方法 | |
CN111368987B (zh) | 一种神经网络计算装置和方法 | |
CN111367567B (zh) | 一种神经网络计算装置和方法 | |
CN111368986B (zh) | 一种神经网络计算装置和方法 | |
CN111368990B (zh) | 一种神经网络计算装置和方法 | |
CN111209230B (zh) | 数据处理装置、方法及相关产品 | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
CN110197272B (zh) | 集成电路芯片装置及相关产品 | |
CN115081603A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 | |
CN112395003A (zh) | 运算方法、装置及相关产品 | |
CN113867800A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN111381872A (zh) | 运算方法、装置及相关产品 | |
CN111290788B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111381873A (zh) | 运算方法、装置及相关产品 | |
CN113867686A (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 |