可软件定义的存算一体芯片的运算控制方法和装置转让专利
申请号 : CN201910143151.5
文献号 : CN111611197B
文献日 : 2021-10-08
发明人 : 王绍迪
申请人 : 北京知存科技有限公司
摘要 :
权利要求 :
1.一种可软件定义的存算一体芯片的运算控制方法,其特征在于,包括:获取运算任务;
根据所述运算任务获取配置信息和有限状态机信息;
根据所述配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;
根据所述有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务;
其中,根据配置信息对多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,选择投入工作的模块,实现动态配置;所述配置信息包括各模块配置大小与状态信息。
2.根据权利要求1所述的运算控制方法,其特征在于,所述运算任务为神经网络任务,所述有限状态机信息包括芯片运行状态、状态跳转条件以及控制指令;
根据所述运算任务获取配置信息和有限状态机信息,包括:根据所述神经网络任务获取各循环周期的配置信息和有限状态机信息,其中,每一层神经网络对应一个循环周期。
3.根据权利要求2所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片包括:有限状态机和指令寄存器;
所述运算控制方法还包括:
所述根据有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务,包括:
判断步骤:判断所述有限状态机的当前状态是否指向结束状态;
若否,则根据该有限状态机的当前状态,在所述指令寄存器中读取对应该当前状态的指令;并且,根据该循环周期的配置信息配置芯片中各模块,以利用配置后的芯片结构实现对应该循环周期的运算任务;并且,响应于该循环周期的运算任务结束,将所述有限状态机的状态跳转至下一状态,并返回所述判断步骤。
4.根据权利要求1至3任一项所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片包括:编程电路以及连接所述编程电路的闪存处理阵列,所述闪存处理阵列包含多个可编程半导体器件;
所述运算控制方法还包括:
根据所述运算任务获取编程信息,所述编程信息包括:闪存处理阵列中每个可编程半导体器件的阈值电压设定值;
根据所述编程信息控制所述编程电路,以调节闪存处理阵列中每个可编程半导体器件的阈值电压至设定值。
5.根据权利要求2或3所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片还包括:具有用于分别执行模拟运算的多个闪存处理子阵列的闪存处理阵列、具有用于分别实现不同算术运算的多个可编程算术运算单元的可编程算术运算模块,所述配置信息包括:闪存处理子阵列配置信息、可编程算术运算单元配置信息,所述根据该循环周期的配置信息配置芯片中各模块,实现芯片中电路结构的动态配置,包括:
根据该闪存处理子阵列配置信息控制多个闪存处理子阵列的工作状态;
根据该可编程算术运算单元配置信息控制多个可编程算术运算单元的工作状态;
其中,所述工作状态包括:运算状态、编程状态和空闲状态。
6.根据权利要求5所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片还包括:输入接口模块、输入寄存器堆、数模转换模块、模数转换模块、输出寄存器堆以及输出接口模块,
所述输入接口模块用于接收外部输入数据;
所述输入寄存器堆的输入端选择性连接所述输入接口模块和所述输出寄存器堆,用于存储所述外部输入数据或该输出寄存器堆输出的待处理数据;该输入寄存器堆的输出端选择性连接所述数模转换模块的输入端和所述可编程算术运算模块的输入端;
所述数模转换模块的输出端选择性连接一个闪存处理子阵列;
所述模数转换模块的输入端选择性连接一个闪存处理子阵列,输出端连接所述可编程算术运算模块的输入端;
所述输出寄存器堆的输入端连接所述可编程算术运算模块的输出端;输出端选择性连接所述输入寄存器堆的输入端和输出接口模块的输入端;
所述配置信息还包括:数模转换模块的配置信息、模数转换模块的配置信息、输入接口模块的配置信息、输出接口模块的配置信息、输入寄存器堆配置信息、输出寄存器堆配置信息,
所述根据该循环周期的配置信息配置芯片中各模块,实现芯片中电路结构的动态配置,还包括:
根据所述数模转换模块的配置信息控制参与实际任务的数模转换电路开闭状态;
根据所述模数转换模块的配置信息控制参与实际任务的模数转换电路开闭状态;
根据所述输入接口模块的配置信息控制参与实际任务的输入接口电路开闭状态;
根据所述输出接口模块的配置信息控制参与实际任务的输出接口电路开闭状态;
根据所述输入寄存器堆的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据;
根据所述输出寄存器堆的配置信息控制该输出寄存器堆将其内的数据输出或作为待处理数据输至所述输入寄存器堆。
7.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述数模转换模块的输出端通过第一多路分配器选择性连接一个闪存处理子阵列;所述模数转换模块的输入端通过第一多路选择器选择性连接一个闪存处理子阵列;
所述根据该闪存处理子阵列配置信息控制多个闪存处理子阵列的工作状态,包括:根据该闪存处理子阵列配置信息,控制该第一多路分配器和第一多路选择器的工作状态,以使一闪存处理子阵列的输入端连接该数模转换模块的输出端,输出端连接该模数转换模块的输入端,参与运算工作。
8.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述可编程算术运算模块的输入端通过第二多路选择器选择性连接所述输入寄存器堆的输出端和所述模数转换模块的输出端;
所述可编程算术运算模块的多个可编程算术运算单元串行连接,每个该可编程算术运算单元均包括:多路分配器、算术运算子单元以及多路选择器;
所述多路分配器的输入端连接上一可编程算术运算单元或所述模数转换模块,其中一个输出端连接所述算术运算子单元,另一个输出端与所述算术运算子单元的输出端通过所述多路选择器连接下一可编程算术运算单元或输出寄存器堆,控制端连接控制模块;
所述根据该可编程算术运算单元配置信息控制多个可编程算术运算单元的工作状态,包括:
根据该可编程算术运算单元配置信息,控制各个可编程算术运算单元中多路分配器和多路选择器的工作状态,以控制该可编程算术运算单元中的算术运算子单元是否参与工作,实现多种运算组合配置;
根据该可编程算术运算单元配置信息,控制该第二多路选择器的工作状态,以控制第一个可编程算术运算单元的输入端连接该输入寄存器堆的输出端或该模数转换模块的输出端。
9.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述输入寄存器堆的输入端通过第三多路选择器选择性连接所述输入接口模块的输出端和所述输出寄存器堆的输出端;所述输入寄存器堆的输出端通过第三多路分配器选择性连接所述数模转换模块的输入端和所述可编程算术运算模块的输入端;
所述根据所述输入寄存器堆的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据,包括:根据该输入寄存器堆配置信息,控制该第三多路选择器和该第三多路分配器的工作状态,以控制该输入寄存器堆输入端接收输入接口模块接收的外部输入数据或该输出寄存器堆输出的待处理数据,并且,控制该输入寄存器堆输出端连接该模数转换模块的输入端或该可编程算术运算模块的输入端。
10.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述输出寄存器堆的输出端通过第四多路分配器选择性连接所述输入寄存器堆的输入端和所述输出接口模块的输入端;
所述根据所述输出寄存器堆的配置信息控制该输出寄存器堆将其内的数据输出或作为待处理数据输至所述输入寄存器堆,包括:根据该输出寄存器堆配置信息,控制该第四多路分配器的工作状态,以控制该输出寄存器堆的输出端连接所述输入寄存器堆的输入端或所述输出接口模块的输入端。
11.一种可软件定义的存算一体芯片的运算控制装置,其特征在于,包括:运算任务获取模块,获取运算任务;
配置信息获取模块,根据所述运算任务获取配置信息和有限状态机信息;
存储模块,存储配置信息、运算数据与控制指令;
芯片结构控制模块,根据所述配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;
工作时序控制模块,根据所述有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务;
其中,根据配置信息对存算一体芯片中各模块进行组合配置,选择投入工作的模块,实现动态配置。
说明书 :
可软件定义的存算一体芯片的运算控制方法和装置
技术领域
背景技术
闪存的读写以页和块为单位,其容量大、成本低,广泛应用于大规模独立式存储器;NOR‑型
闪存支持数据的随机存取,与NAND‑型闪存相比,密度较低、容量较小、成本较高,主要应用
于嵌入式存储器。
从而减少存储器与处理器之间的数据传输量以及传输距离,降低功耗的同时提高性能。
业界的广泛青睐,其核心思想是根据实际应用需求,对芯片结构进行动态重构,通过软件定
义方法控制重构后的芯片,完成不同的任务,从而实现高灵活性,低成本。但是,到目前为
止,还没有可软件定义的存算一体芯片及其控制方法。
发明内容
算,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面
积,适应集成化、小型化的需要。
的动态配置;根据有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结
构实现运算任务。其中,能够根据运算任务灵活调节芯片结构,适用各种复杂运算场合,尤
其适用于神经网络运算,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复
用,进而减小了电路面积,适应集成化、小型化的需要。
附图说明
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
具体实施方式
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
行状态、状态跳转条件以及控制指令等,在任务运行时,控制各模块的时序与状态。
ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适
应集成化、小型化的需要。
运算模块30以及与该闪存处理阵列20和该可编程算术运算模块30连接的控制模块10,
数可以根据实际应用需求进行设置,本发明实施例对此不作限制。
投入工作的闪存处理子阵列和可编程算术运算单元,并对闪存处理子阵列与可编程算术运
算单元的组合配对方式进行控制以实现特定运算;根据有限状态机信息控制闪存处理子阵
列和可编程算术运算单元的工作时序,以利用配置后的芯片结构实现运算任务。
存处理子阵列配合,能够实现多种组合配置,进而实现复杂的运算功能。
算单元进行组合配置,实现芯片结构动态配置,不仅能够根据实际任务灵活调节芯片结构,
还能实现多种复杂的运算功能,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够
实现复用,进而减小了电路面积,适应集成化、小型化的需要。
的权重信息,该可编程半导体器件可采用浮栅晶体管实现。
理阵列30进行编程。
和列号),相当于存储一个模拟数据,而闪存处理阵列中的多个可编程半导体器件相当于存
储了一个模拟数据阵列 工作时,将一行模拟电压信号V1~VN分别施加
至N列可编程半导体器件,根据可编程半导体器件特性,I=V×W,每个可编程半导体器件的
漏极输出电流等于源极电压乘以该可编程半导体器件的权重,每一列的所有可编程半导体
器件的漏极均连接至同一个模拟电流输出端,在该模拟电流输出端的电流Ij为该列所有可
编程半导体器件的漏极电流之和,即为 多个模拟电流输出端输出多个
电流和 实现矩阵乘法运算功能,
而多个闪存处理子阵列可以实现对重矩阵乘法运算。
的输出,输至下一层中的多个神经元,作为下一层中对应神经元的输入,通过多层之间逐步
递进的学习,实现复杂的运算识别等功能。
络的运算任务。
能够极大地节省电路成本和面积,适应集成电路小型化的需要,比如,在移动终端、图像处
理场合或导航、自动驾驶等场合,对于AI芯片的体积一般有较高的要求,需要将AI芯片做到
很小,以便集成于设备中,通过采用上述控制方法,能够有效减小芯片的体积,应用范围广。
的运算任务。
藏层的运算任务为加权求和运算+该特定算术运算。
其运算结构主要是输入数据,此时对应一种能够从外部接收该输入数据的结构,此时,该结
构不涉及算术和模拟运算,各用于进行运算的模块则不需要参与工作。而对于该隐藏层来
说,其运算结构主要是接收上一隐藏层的计算结果,并对上一隐藏层的计算结果顺序进行
加权求和运算以及该特定算术运算,并将最终的运算结果输至下一隐藏层,此时,对应一种
输入端接收上一循环周期的运算结果、输出端连接下一循环周期,某一闪存处理子阵列投
入工作实现该加权求和运算,运算结果输至可编程算术模块,可编程算术运算模块实现该
特定算术运算的结构。
实际运行的时序等,从而指导芯片配置与运算控制。
转条件。
化后的有限状态机,则在执行上述流程时,也可以先从其第一种状态执行,最后再判断是否
指向结束状态。
存器堆50、数模转换模块60、闪存处理阵列20、模数转换模块70、可编程算术运算模块30、输
出寄存器堆80以及输出接口模块90。
~30n。
入寄存器堆50的输出端选择性连接所述数模转换模块60的输入端和所述可编程算术运算
模块30的输入端.
子阵列,该闪存处理子阵列对该模拟信号进行模拟运算并输出模拟运算结果。
该模拟运算结果转换为数字信号并输至该可编程算术运算模块30,该可编程算术运算模块
30对该数字信号进行算术运算并输出算术运算结果。
该输出接口模块90输出或作为该待处理数据输至该输入寄存器堆50。
以及该输出接口模块90,用于执行本发明实施例中的运算控制方法,实现芯片结构的动态
配置。
模拟电压输入端,多列可编程半导体器件对应连接多个模拟电压输入端;每一列的所有可
编程半导体器件的漏极均连接至同一个模拟电流输出端,多列可编程半导体器件对应连接
多个模拟电流输出端;每一行的所有可编程半导体器件的栅极均连接至同一偏置电压输入
端,多行可编程半导体器件对应连接多个偏置电压输入端;其中,每个该可编程半导体器件
的阈值电压均可调节。
件;每一行的所有可编程半导体器件的栅极均连接至同一模拟电压输入端,多行可编程半
导体器件对应连接多个模拟电压输入端;每一列的所有可编程半导体器件的漏极均连接至
同一第一端,多列可编程半导体器件对应连接多个第一端;每一列的所有可编程半导体器
件的源极均连接至同一第二端,多列可编程半导体器件对应连接多个第二端;每个该可编
程半导体器件的阈值电压均可调节;其中,该第一端为偏置电压输入端,该第二端为模拟电
流输出端,实现栅极耦合、源极求和的拓扑结构,参见图13;或者,该第一端为模拟电流输出
端,该第二端为偏置电压输入端,实现栅极耦合、漏极求和的拓扑结构,参见图14。
调控可编程半导体器件的阈值电压。该编程电路可以包括:用于产生编程电压或者擦除电
压的电压产生电路以及用于将所述编程电压加载至选定的可编程半导体器件的电压控制
电路。
是该可编程算术运算模块的输入端。
器堆50的输入端通过多路选择器(MUX)100连接该输入接口模块40的输出端和该输出寄存
器堆80的输出端,以选择性接收来自该输入接口模块40的外部输入数据或来自该输出寄存
器堆80的待处理数据。该控制模块10连接该多路选择器100。
选择哪一闪存处理子阵列的输出连接该模数转换模块70的输入端,即将上述的参与工作的
闪存处理子阵列的输出连接至该模数转换模块70的输入端。
图17。
配器30a另一个输出端通过一个多路选择器30c连接下一可编程算术运算单元或输出寄存
器堆80,另外,该多路分配器30a以及该多路选择器30c的控制端均连接该控制模块20。
元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接第二可
编程算术运算单元302的输入端,该多路分配器和该多路选择器的控制端连接该控制模块
20。
单元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接第三
可编程算术运算单元303的输入端,该多路分配器和该多路选择器的控制端连接该控制模
块20。依此类推,直到第n可编程算术运算单元30n,该第n可编程算术运算单元30n中的多路
分配器的输入端连接第n‑1可编程算术运算单元30n‑1的输出端,其中一个输出端连接该第n
可编程算术运算单元30n中的算术运算子单元的输入端,另一个输出端和该算术运算子单
元的输出端通过一个多路选择器连接输出寄存器堆80的输入端,该多路分配器和该多路选
择器的控制端连接该控制模块20。
编程算术运算单元中的算术运算子单元是否参与运算,以此实现多个可编程算术运算单元
的排列组合配置,实现不同的复杂运算,灵活配置了算术运算功能。
器、取最小值运算器、取平均值运算器、池化器中的一种或几种,各算术运算器之间并联,输
入端分别连接至对应的多路分配器的输出端,输出端分别连接至对应的多路选择器的输入
端,参见图18。
控制该多路分配器150的工作状态,以选择将该输出寄存器堆80输出结果输至输出接口模
块90还是输入寄存器堆50,当选择将该输出寄存器堆80输出结果输至输入寄存器堆50时,
意味着将对该输出结果进行新一轮的运算处理。
配置信息控制该多路分配器110的工作状态,以选择将该输入寄存器堆50的输出端连接至
该数模转换模块50的输入端还是该可编程算术运算模块30的输入端,其中,当该输入寄存
器堆50的输出端连接至该数模转换模块50的输入端时,意味着对该输入寄存器堆50的输出
进行模拟运算和算术运算;当该输入寄存器堆50的输出端连接至该可编程算术运算模块30
的输入端的输入端时,意味着对该输入寄存器堆50的输出进行一定的算术运算,以此进一
步增加了芯片结构的灵活性。
器120和多路选择器130的工作状态。
工作,实现多种运算组合配置;并根据该可编程算术运算单元配置信息,控制该多路选择器
140的工作状态,以控制第一个可编程算术运算单元的输入端连接该输入寄存器堆的输出
端或该模数转换模块的输出端。
入数据或该输出寄存器堆输出的待处理数据,并且,控制该输入寄存器堆输出端连接该模
数转换模块的输入端或该可编程算术运算模块的输入端。
块的输入端。
制方法的工作流程。
说明运算控制方法,所以此处不对运算进行深入描述,仅描述其运算结构,以示例性说明本
发明实施例的工作流程,并非对本发明的限制)。
闪存处理子阵列V的输入端,该闪存处理子阵列V的输出端连接该模数转换模块的输入端,
该模数转换模块的输出端连接该可编程算术运算模块的输入端,该可编程算术运算模块中
的乘法运算单元和移位运算单元参与工作,该可编程算术运算模块的输出端连接该输出寄
存器堆的输入端,该输出寄存器堆的输出端连接该输出接口模块的输入端。
息控制芯片中各模块的工作时序,进而可利用该运算结构实现该复合运算。
需的权重得到,而利用闪存处理子阵列进行加权求和运算已在上文中提到,在此不再赘述。
制方法,针对上述可软件定义的存算一体芯片进行神经网络运算控制的场景,以说明该运
算控制方法的工作流程。
对数据P依次进行矩阵乘法运算1+加法运算,第二隐藏层依次进行矩阵乘法运算2+乘法运
算+池化,第三隐藏层依次进行矩阵乘法运算3+激活函数,输出层进行取平均值运算后输出
运算结果(此处为了说明控制方法的工作流程对神经网络各层的运算任务进行了梳理,在
实际应用中,一般只给出神经网络的结构)。
层,第二隐藏层的运算任务包括:矩阵乘法运算2+乘法运算+池化,第四循环周期对应第三
隐藏层,第三隐藏层的运算任务包括:矩阵乘法运算3+激活函数,第五循环周期对应输出
层,输出层的运算任务为:取平均值运算后输出运算结果。
出端连接闪存处理子阵列1(用于实现向量‑矩阵乘法运算1),闪存处理子阵列1的输出端连
接模数转换模块,模数转换模块的输出端连接可编程算术运算模块的输入端,可编程算术
运算模块中加法运算单元参与工作,可编程算术运算模块的输出端连接输出寄存器堆的输
入端,该输出寄存器堆的输出端连接输入寄存器堆的输入端,其他循环周期的运算结构不
再赘述。
阵列1的编程信息。
毕后,根据状态跳转条件,有限状态机的状态跳转至下一个状态,在指令寄存器中读取第二
循环周期的配置信息,根据第二循环周期的配置信息控制多路分配器110、多路分配器120、
多路选择器130、多路选择器140、选择器、多路分配器150以及多路选择器160,以实现第二
循环周期的运算结构,并根据编程信息对闪存处理子阵列1进行编程,以此类推,直至有限
状态机的状态指向结束状态。
输入寄存器堆50的输出端与该算术运算模块30的输入端连通即可,其他配置过程不再赘
述。
程信息对各个闪存处理子阵列统一进行编程,之后再执行各循环周期的配置信息,此时,每
个循环周期只需要配置芯片结构,不需要再对闪存处理子阵列进行编程。
执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可
以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处
理的环境)。
方法相似,因此运算控制装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所
使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施
例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能
并被构想的。
片结构控制模块3000、工作时序控制模块4000、存储模块5000。
块,实现芯片中电路结构的动态配置;工作时序控制模块4000根据所述有限状态机信息控
制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务;存储模块5000存储
配置信息、运算数据与控制指令。
可软件定义的存算一体芯片。
骤。
穿戴设备或者这些设备中的任何设备的组合。
依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内
容不应理解为对本发明的限制。