首页 / 算法运算电路、算法运算方法以及算法芯片

算法运算电路、算法运算方法以及算法芯片实质审查 发明

技术领域

[0001] 本申请涉及芯片设计领域,尤其涉及算法运算电路、算法运算方法以及算法芯片。

相关背景技术

[0002] 音频算法复杂度的提高对芯片算力和要求越来越高,为了适应满足算法的算力需求,一种常规的做法是将算法硬件化,即通过利用硬件算法电路来实现算法,算法硬件化的问题在于,算法流程和算法配置完全固化在硬件算法电路中,在硬件算法电路设计完成后,算法流程不可更改,如果算法流程需要修改,则需要更换新的硬件算法电路,复用性和可移植性较差,难以适应算法的灵活性需求。

具体实施方式

[0029] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0030] 需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本申请所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
[0031] 本申请的技术方案适用于算法运算的场景。在算法运算场景中,一种可行的算法芯片设计方案为通过处理器执行软件运算来进行算法运算,通过处理器进行算法运算的方案可以称为软件设计方案,在软件设计方案中,需要通过提高处理器的主频或多核并行来满足算法的算力需求和灵活性需求,这样会增加芯片成本和功耗。另一种可行的算法芯片设计方案为通过硬件算法电路来进行算法运算,通过硬件算法电路进行算法运算的方案可以称为硬件设计方案,在硬件设计方案中,算法流程和算法配置完全固化在硬件算法电路中,在硬件算法电路设计完成后,算法流程不可更改,如果算法流程需要修改,则需要更换新的硬件算法电路,复用性和可移植性较差,难以适应算法的灵活性需求。
[0032] 有鉴于此,本申请提出了一种新的算法芯片设计方案,能够兼顾芯片成本、功耗以及算法的灵活性需求,以下具体介绍本申请的技术方案。
[0033] 其中,本申请的技术方案的算法运算电路可以为算法芯片中的电路。算法芯片可以为任意一种需要执行算法的目标设备中的运算芯片,算法芯片用于执行目标设备中需执行的算法。例如,目标设备可以为音频设备,算法芯片为音频设备中的运算芯片,算法芯片用于执行音频设备中的音频算法。有关于算法芯片执行的算法和目标设备的类型,可基于实际需求进行设置,本申请不做限制。
[0034] 参见图1,图1为本申请实施例提供的一种算法运算电路的结构框图,如图1所示,算法运算电路10包括处理单元101、存储单元102和硬件计算单元103,存储单元102与处理单元101连接,硬件计算单元103与处理单元101和存储单元102连接。其中:
[0035] 存储单元102中存储有算法控制链,算法控制链用于定义算法流程和算法配置参数。
[0036] 算法配置参数为描述算法功能的参数,算法配置参数可用于描述算法执行过程中需进行的各种数据运算,算法配置参数可包括各种数据运算的控制信号、转态以及进行数据运算所需的运算数据的地址指针等。
[0037] 以数据运算为卷积运算为例,卷积运算的运算公式为:
[0038]
[0039] 则算法配置参数用于描述卷积运算,算法配置参数可包括卷积运算的控制信号、转态以及指向存放运算数据h()、x()以及y(n)的存储地址的地址指针,通过该指向存放运算数据h()、x()以及y(n)的存储地址的地址指针,可确定运算数据h()、x()以及h(n)的存储地址,进而可从相应的存储地址中读取到运算数据。
[0040] 算法流程用于描述算法执行过程中需进行的各种数据运算之间的先后顺序,不同数据运算对应的算法配置参数可以以节点的形式存储在算法控制链中,并通过下一节点指针连接起来,节点之间的连接关系即标识算法执行过程中的各种数据运算之间的先后顺序。该下一节点指针可以为next ptr指针,算法控制链中的每个节点中均有next ptr指针,当前节点中的next ptr指针指向当前节点的下一节点,访问该当前节点中的next ptr指针,可以获取到当前节点的下一节点的地址,进而跳转当前节点的下一节点中存储的算法配置参数,节点与节点之间通过下一节点指针连接形成链表,链表中的节点的先后顺序即表示节点对应的数据运算之间的先后顺序。
[0041] 例如,假设算法包括算法A和算法B,算法A和算法B的先后顺序为:先执行算法A,再执行算法B,算法A中需执行的数据运算依次有数据运算a1、数据运算a2以及数据运算a3,算法B中需执行的数据运算依次有数据运算b1、数据运算b2以及数据运算b3,即算法执行过程中的数据运算的先后顺序为:数据运算a1——数据运算a2——数据运算a3——数据运算b1——数据运算b2——数据运算b3,用于描述算法对应的各种数据运算的算法配置参数可以形成如图2所示的算法控制链,该算法控制链包括6个节点,依次为节点CS1~CS6,节点CS1用于存储数据运算a1对应的算法配置参数cp1和下一节点指针next ptr1,next ptr1指向节点CS2,节点CS2用于存储数据运算a2对应的算法配置参数cp2和和下一节点指针next ptr2,next ptr2指向节点CS3,节点CS3中用于存储数据运算a3对应的算法配置参数cp3和和下一节点指针next ptr3,next ptr3指向节点CS4,节点CS4中用于存储数据运算b1对应的算法配置参数cp4和指和下一节点指针next ptr4,next ptr4指向节点CS5,节点CS5中用于存储数据运算b2对应的算法配置参数cp5和和下一节点指针next ptr5,next ptr5指向节点CS6节点CS6中用于存储数据运算b3对应的算法配置参数cp6,节点C65中的下一节点指针为空。
[0042] 其中,存储单元102中存储的算法控制链的数量可以有一条或多条,存储单元102中存储的算法控制链由处理单元101通过软件创建并保存在存储单元102中。存储单元102可以为通用目的随机存储存储器(general purpose random access memory,GPRAM)。
[0043] 处理单元101用于将待执行的目标算法对应的算法启动指令发送给硬件计算单元103,待执行的目标算法由存储单元102中存储的算法控制链决定。例如,存储单元102中存储的算法控制链如图2所示,则待执行的目标算法为由算法A和算法B组成的算法。目标算法对应的算法启动指令用于指示硬件计算单元103执行目标算法。如用于指示硬件计算单元
103执行由算法A和算法B组成的算法。
[0044] 处理单元101可以为中央处理器(central processing unit,CPU)。
[0045] 硬件计算单元103中集成有多种运算子电路,运算子电路是指使用电子器件和逻辑电路来实现算法的硬件电路,不同的运算子电路包括不同的电子器件和逻辑电路。例如,硬件计算单元103可包括逻辑门、多路选择器、加法器、乘法器、计数器、寄存器、状态机等用于执行各种算术运算和逻辑运算的逻辑电路器件。
[0046] 硬件计算单元103用于响应处理单元101发送的目标算法对应的算法启动指令,从存储单元101中读取目标算法对应的算法控制链。
[0047] 硬件计算单元103还用于根据目标算法对应的算法控制链,执行目标算法。
[0048] 例如,目标算法对应的算法控制链如图2所示,则硬件计算单元可根据图2所示的算法控制链,依次执行数据运算a1、数据运算a2以及数据运算a3,从而执行算法A,再依次执行数据运算b1、数据运算b2以及数据运算b3,从而执行算法B,完成对目标算法的执行。
[0049] 在上述图1对应的技术方案中,算法运算电路包括处理单元、存储单元和硬件计算单元,存储单元与处理单元连接,存储单元中存储有算法控制链,算法控制链用于定义算法流程和算法配置参数,硬件计算单元与处理单元连接,硬件计算单元中集成有多种运算子电路,处理单元用于将待执行的目标算法对应的算法启动指令发送给硬件计算单元,硬件计算单元用于响应算法启动指令,从存储单元中读取目标算法对应的算法控制链,并根据目标算法对应的算法控制链,控制目标算法对应的运算子电路执行目标算法;由于定义算法流程和算法配置参数的算法控制链是存储在存储单元中,在需要执行算法时,硬件计算单元才响应处理单元发送的算法启动指令,从存储单元中读取算法控制链并根据算法控制链执行算法,在需要修改算法时,修改存储单元中存储的算法控制链路来修改算法流程和算法配置即可修改硬件计算单元执行的算法,无需更换新的电路,使得算法运算电路能得到复用,不需要更换新的硬件算法电路,可满足算法的灵活性需求;由于是由硬件计算单元根据算法控制链执行算法,执行算法不消耗处理单元的资源,可以降低处理单元的功耗和成本。
[0050] 在一些可能的情况中,可以通过链路标识来标识和区分算法控制链。存储单元102中可存储有链路标识,链路标识与算法控制链一一对应,链路标识用于标识算法控制链,处理单元101在向硬件计算单元103发送目标算法对应的算法启动指令时,可以将目标链路标识携带在目标算法对应的算法启动指令中,发送给硬件计算单元103,目标链路标识为目标算法对应的算法控制链的链路标识,硬件计算单元103根据目标链路标识,可以从存储单元102中找到目标算法对应的算法控制链,从而读取目标算法控制链。
[0051] 例如,假设图2所示的算法控制链对应的链路标识为pacc‑id1,在需要执行图2所示的算法控制链对应的算法时,处理单元101可向硬件计算单元103携带pacc‑id1的算法启动指令,硬件计算单元103在接收到算法启动指令后,可根据pacc‑id1从存储单元102找到图2所示的算法控制链,根据图2所示的算法控制链,执行图2所示的算法控制链对应的算法。
[0052] 其中,存储单元102中存储的链路标识的数量可以有多个,不同链路标识用于标识不同算法控制链,不同算法控制链对应的算法流程和/或算法配置参数不同。对于存储单元102中存储的不同算法控制链,处理单元101可用于分时向硬件计算单元103发送不同的算法启动指令,不同的算法启动指令中携带不同的链路标识,硬件计算单元103可根据不同的链路标识,分时从存储单元102中读取不同的算法控制链,从而分时执行不同算法控制链对应的算法。
[0053] 例如,存储单元102中存储的链路标识有3个,分别为pacc‑id1、pacc‑id2以及pacc‑id3,则处理单元101可以在不同的时间片中,分别将携带pacc‑id1、pacc‑id2以及pacc‑id3的算法启动指令发送给硬件计算单元103,硬件计算单元103可以在不同的时间片中,分别执行链路标识为pacc‑id1、pacc‑id2以及pacc‑id3的算法控制链对应的算法。
[0054] 通过分时启动不同的算法控制链,能够分时执行不同的算法,由于不需要消耗处理单元的资源,能够实现对多个算法的加速计算。
[0055] 在一些可能的情况中,处理单元101还可以用于修改目标算法对应的算法控制链,以修改目标算法。
[0056] 其中,处理单元101可以修改目标算法对应的算法控制链中的下一节点指针,来修改目标算法的算法流程。例如,目标算法对应的算法控制链如图2所示,如果处理单元101将图2中的节点CS1中的下一节点指针next ptr1修改为指向节点C3,将节点CS3中的下一节点指针next ptr3修改为指向节点CS2,将节点CS2中的下一节点指针next ptr2修改为指向节点CS4,可得到新的算法控制链,新的算法控制链可以如图3所示,由图3所示的算法控制链的可知,修改后的目标算法的算法流程为:数据运算a1——数据运算a3——数据运算a2——数据运算b1——数据运算b2——数据运算b3。
[0057] 处理单元101还可以修改目标算法对应的算法控制链中的节点中存储的算法配置参数,来修改目标算法的算法功能。例如,目标算法对应的算法控制链如图2所示,处理单元可以修改图2中的节点CS1中存储的算法配置参数cp1来修改数据运算a1,处理单元可以修改图2中的节点CS2中存储的算法配置参数cp2来修改数据运算a2,以此类推。
[0058] 处理单元101还可以在目标算法对应的算法控制链中删除或增加节点来修改目标算法的算法流程和算法功能。
[0059] 在一些可能的情况中,硬件计算单元103的组成结构可以如图4所示,硬件计算单元103包括外部控制模块1031、读写控制模块1032和算法执行模块1033,其中:
[0060] 外部控制模块1031与处理单元101、读写控制模块1032以及算法执行模块1033连接,外部控制模块1031用于接收处理单元101发送的目标算法对应的算法启动指令,并将目标算法对应的算法启动指令发送给读写控制模块1032和算法执行模块1033;
[0061] 读写控制模块1032与存储单元102和算法执行模块1033连接,读写控制模块1032用于响应目标算法对应的算法启动指令,从存储单元102中读取目标算法对应的算法控制链,并将目标算法对应的算法控制链发送给算法执行模块1033;
[0062] 算法执行模块1033中设置有多个逻辑门、多路选择器、加法器、计数器、寄存器、状态机等实现硬件运算的运算子电路,算法执行模块1033用于响应目标算法对应的算法启动指令,根据目标算法对应的算法控制链,执行目标算法。
[0063] 其中,存储单元102中还存储有各种运算数据,运算数据包括运算需求数据和运算结果数据,运算需求数据是指进行某种数据运算所需的输入数据,运算需求数据例如可以为前述的h()、x(),运算结果数据是指进行某种数据运算后所输出的数据,运算结果数据例如可以为前述的y(n)。运算结果数据可以作为运算需求数据进行数据运算,以算法控制链为图2所示为例,由于进行数据运算a1后需进行数据运算a2,则进行数据运算a1后输出的数据为进行数据运算a2的输入数据,则进行数据运算a1后得到的运算结果数据为进行数据运算a2的运算需求数据。
[0064] 算法执行模块1033可以包括链表解析子模块10331和数据运算子模块10332。
[0065] 链表解析子模块10331中设置有状态机等用于进行链表识别和状态控制的硬件电路,链表解析子模块10331与外部控制模块1031、读写控制模块1032以及数据运算子模块10332连接,链表解析子模块10331用于响应目标算法对应的算法启动指令,对目标算法对应的算法控制链进行解析,得到目标算法对应的算法解析结果,目标算法对应的算法解析结果包括目标算法的算法流程和目标算法的算法配置参数。
[0066] 链表解析子模块10331还用于根据目标算法对应的算法解析结果,向读写控制模块1032发送数据读取指令,以及向数据运算子模块10332发送数据运算指令,数据读取指令用于指示读写控制模块1032从存储单元102中读取执行目标算法中的数据运算所需的运算需求数据,数据运算指令用于指示数据运算子模块10332对运算需求数据进行相应的数据运算。
[0067] 数据运算子模块10332与读写控制模块1032连接,读写控制模块1032还用于响应链表解析子模块10331发送的数据运算指令,从存储单元102中读取目标算法对应的运算需求数据,并将目标算法对应的运算需求数据发送给数据运算子模块10332;
[0068] 数据运算子模块10332中设置有逻辑门、多路选择器、加法器、乘法器、计数器、寄存器等进行运算所需的硬件电路,数据运算子模块10332用于响应链表解析子模块10331发送的数据运算指令,对目标算法对应的运算需求数据进行运算,得到目标算法对应的运算结果数据。
[0069] 数据运算子模块10332还用于将目标算法对应的运算结果数据发送给读写控制模块1032;读写控制模块1032还用于将目标算法对应的运算结果数据发送给所述存储单元进行存储。
[0070] 举例进行说明,例如,目标算法对应的算法控制链如图2所示,在读写控制模块1032将从存储单元102中的读取到的算法控制链发送给链表解析子模块10331后,链表解析子模块10331对图2所示的算法控制链进行解析,链表解析子模块10331会首先解析节点CS1,从节点CS1中解析得到数据运算a1对应的算法配置参数cp1,算法配置参数cp1中包含进行数据运算a1所需的运算需求数据的地址指针(以下称地址指针1),链表解析子模块
10331根据地址指针1确定进行数据运算a1所需的运算需求数据的存储地址(以下称数据存储地址1),链表解析子模块10331向读写控制模块1032发送携带数据存储地址1的数据读取指令,读写控制模块1032从存储单元的数据存储地址1中获取进行数据运算a1所需的运算需求数据,并发送给数据运算子模块10332,链表解析子模块10331解析法配置参数cp1中包含的运算公式,确定需执行数据运算a1,链表解析子模块10331向数据运算子模块10332发送执行数据运算a1的数据运算指令,数据运算子模块10332对读写控制模块发送的运算需求数据进行数据运算a1,得到数据运算a1的结果数据;数据运算子模块10332将数据运算a1的结果数据发送给读写控制模块1032,读写控制模块1032将数据运算a1的结果数据保存到存储单元102中,至此,完成数据运算a1;由于数据运算a1的运算结果数据为数据运算a2的运算需求数据,存储单元102可以将数据运算a1的运算结果数据保存到进行数据运算a2所需的运算需求数据的地址指针所指向的存储地址中;由于节点CS1中的下一节点指针next ptr1指向节点CS2,链表解析子模块10331从节点CS1中解析得到下一节点指针next ptr1后,可根据下一节点指针next ptr1确定节点CS2,链表解析子模块参照解析节点CS1的方式解析节点CS2并完成数据运算a2,以此类推,直至完成图2所示的算法控制链的所有节点对应的数据运算,得到最终的算法结果。
[0071] 结合上述内容可知,由于算法控制链是存储在存储单元中,处理单元可以对算法控制链进行修改来修改算法的流程和功能,相较于将算法流程和算法配置固化在硬件算法电路中,本申请中由硬件计算单元根据算法控制链来执行算法,可以满足算法的灵活性需求,并且也不需要占用处理单元的资源,能够兼顾成本、功耗和算法的灵活性需求。
[0072] 基于图1‑图4所示的算法运算电路,可以实现本申请的算法运算方法。参见图5,图5为本申请实施例提供的一种算法运算方法的流程示意图,该算法运算方法可应用于本申请中的算法运算电路,算法运算电路可以如图1所示,如图5所示,该方法包括如下步骤:
[0073] S201,算法运算电路的处理单元将待执行的目标算法对应的算法启动指令发送给算法运算电路的硬件计算单元。
[0074] 这里,有关于算法启动指令的有关描述,可参考前述描述,此处不再赘述。
[0075] S202,算法运算电路的硬件计算单元响应目标算法对应的算法启动指令,从算法运算电路的存储单元中读取目标算法对应的算法控制链。
[0076] 这里,硬件计算单元响应目标算法对应的算法启动指令,从算法运算电路的存储单元中读取目标算法对应的算法控制链的方式,可参考前述描述,此处不再赘述。
[0077] S203,算法运算电路的硬件计算单元根据目标算法对应的算法控制链,执行目标算法。
[0078] 其中,算法运算电路的硬件计算单元可通过如下步骤A1‑A3,执行目标算法:
[0079] A1、算法运算电路的硬件计算单元对目标算法对应的算法控制链进行解析,得到目标算法对应的算法解析结果,目标算法对应的算法解析结果包括目标算法的算法流程和目标算法的算法配置参数。
[0080] A2、算法运算电路的硬件计算单元根据目标算法对应的解析结果,从算法运算电路的存储单元中读取目标算法对应的运算需求数据。
[0081] A3、算法运算电路的硬件计算单元根据目标算法对应的解析结果,对目标算法对应的运算需求数据进行运算,得到目标算法对应的运算结果数据。
[0082] 有关于步骤A1‑A3的具体实现方式,可参考前述图4对应的介绍,此处不再赘述。
[0083] 在图5对应的技术方案中,算法运算电路包括处理单元、存储单元和硬件计算单元,存储单元与处理单元连接,存储单元中存储有算法控制链,算法控制链用于定义算法流程和算法配置参数,硬件计算单元与处理单元连接,硬件计算单元中集成有多种运算子电路,处理单元用于将待执行的目标算法对应的算法启动指令发送给硬件计算单元,硬件计算单元用于响应算法启动指令,从存储单元中读取目标算法对应的算法控制链,并根据目标算法对应的算法控制链,控制目标算法对应的运算子电路执行目标算法;由于定义算法流程和算法配置参数的算法控制链是存储在存储单元中,在需要执行算法时,硬件计算单元才响应处理单元发送的算法启动指令,从存储单元中读取算法控制链并根据算法控制链执行算法,在需要修改算法时,修改存储单元中存储的算法控制链路来修改算法流程和算法配置即可修改硬件计算单元执行的算法,无需更换新的电路,使得算法运算电路能得到复用,不需要更换新的硬件算法电路,可满足算法的灵活性需求;由于是由硬件计算单元根据算法控制链执行算法,执行算法不消耗处理单元的资源,可以降低处理单元的功耗和成本。
[0084] 在一些可能的情况中,图5所示的算法运算方法还包括如下步骤:算法运算电路中的处理单元修改目标算法对应的算法控制链,以修改目标算法。其中,有关于算法运算电路中的处理单元修改目标算法对应的算法控制链的方式,可参考前述对处理单元的描述,此处不再赘述。
[0085] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read‑Only memory,ROM)或随机存储记忆体(Random Access memory,RAM)等。
[0086] 以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

当前第1页 第1页 第2页 第3页
相关技术
电路算法相关技术
算法芯片相关技术
林锦鸿发明人的其他相关专利技术