CN111611197A - 可软件定义的存算一体芯片的运算控制方法和装置 - Google Patents
可软件定义的存算一体芯片的运算控制方法和装置 Download PDFInfo
- Publication number
- CN111611197A CN111611197A CN201910143151.5A CN201910143151A CN111611197A CN 111611197 A CN111611197 A CN 111611197A CN 201910143151 A CN201910143151 A CN 201910143151A CN 111611197 A CN111611197 A CN 111611197A
- Authority
- CN
- China
- Prior art keywords
- module
- configuration information
- input
- output
- register file
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000004364 calculation method Methods 0.000 title abstract description 12
- 238000013528 artificial neural network Methods 0.000 claims abstract description 42
- 230000015654 memory Effects 0.000 claims description 95
- 238000006243 chemical reaction Methods 0.000 claims description 56
- 239000004065 semiconductor Substances 0.000 claims description 41
- 238000003491 array Methods 0.000 claims description 16
- 230000009191 jumping Effects 0.000 claims description 3
- 230000010354 integration Effects 0.000 abstract description 5
- 230000002093 peripheral effect Effects 0.000 abstract description 5
- 230000001276 controlling effect Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 16
- 210000002569 neuron Anatomy 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 11
- 239000002131 composite material Substances 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
Abstract
本发明提供的可软件定义的存算一体芯片的运算控制方法和装置,根据运算任务获取配置信息和有限状态机信息;根据配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;根据有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。其中,能够根据运算任务灵活调节芯片结构,适用各种复杂运算场合,尤其适用于神经网络运算,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
Description
技术领域
本发明涉及半导体集成电路领域,尤其涉及一种可软件定义的存算一体芯片的运算控制方法、装置。
背景技术
闪存是一种非易失性存储器,其通过调控闪存晶体管的阈值电压来实现数据的存储。根据闪存晶体管和阵列结构的不同,闪存主要分为NOR-型闪存和NAND-型闪存。NAND-型闪存的读写以页和块为单位,其容量大、成本低,广泛应用于大规模独立式存储器;NOR-型闪存支持数据的随机存取,与NAND-型闪存相比,密度较低、容量较小、成本较高,主要应用于嵌入式存储器。
近年来,为了解决传统冯诺依曼计算体系结构瓶颈,存内计算(Computing-In-Memory,CIM)芯片结构得到人们的广泛关注,其基本思想是直接利用存储器进行逻辑计算,从而减少存储器与处理器之间的数据传输量以及传输距离,降低功耗的同时提高性能。
现有存算一体芯片结构一经定制,其电路结构即被固定下来,不能根据实际任务进行灵活调节,不能适应实际多变的神经网络运算的需要。近年来,软件定义芯片技术受到业界的广泛青睐,其核心思想是根据实际应用需求,对芯片结构进行动态重构,通过软件定义方法控制重构后的芯片,完成不同的任务,从而实现高灵活性,低成本。但是,到目前为止,还没有可软件定义的存算一体芯片及其控制方法。
发明内容
有鉴于此,本发明提供了一种可软件定义的存算一体芯片的运算控制方法和装置,能够根据运算任务灵活调节芯片结构,适用各种复杂运算场合,尤其适用于神经网络运算,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种可软件定义的存算一体芯片的运算控制方法,包括:
获取运算任务;
根据该运算任务获取配置信息和有限状态机信息;
根据该配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;
根据该有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。
第二方面,提供一种可软件定义的存算一体芯片的运算控制装置,包括:
运算任务获取模块,获取运算任务;
配置信息获取模块,根据该运算任务获取配置信息和有限状态机信息;
芯片结构控制模块,根据该配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;
工作时序控制模块,根据该有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。
存储模块,存储配置信息、运算数据与控制指令;
本发明提供的可软件定义的存算一体芯片的运算控制方法和装置,根据运算任务获取配置信息和有限状态机信息;根据配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;根据有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。其中,能够根据运算任务灵活调节芯片结构,适用各种复杂运算场合,尤其适用于神经网络运算,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的运算控制方法的流程图;
图2为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图一;
图3为本发明实施例的运算控制方法的流程图二;
图4为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图二;
图5为本发明实施例的运算控制方法的流程图三;
图6示出了一种典型的神经网络结构;
图7示出了图5中步骤S210的具体步骤;
图8为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图三;
图9为本发明实施例的运算控制方法的流程图四;
图10为本发明实施例的运算控制方法的流程图五;
图11为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图四;
图12为本发明实施例中可软件定义的存算一体芯片中闪存处理子阵列的结构图一;
图13为本发明实施例中可软件定义的存算一体芯片中闪存处理子阵列的结构图二;
图14为本发明实施例中可软件定义的存算一体芯片中闪存处理子阵列的结构图三;
图15为步骤S322的具体步骤;
图16为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图五;
图17为本发明实施例中可软件定义的存算一体芯片中可编程算术运算单元30的结构图;
图18为本发明实施例可软件定义的存算一体芯片中可编程算术运算子单元的结构图;
图19为本发明实施例可软件定义的存算一体芯片中可编程算术运算模块实现复合运算的示意图;
图20为本发明实施例一种可软件定义的存算一体芯片的运算控制装置的结构图一。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例的可软件定义的存算一体芯片的运算控制方法的流程图。如图1所示,该可软件定义的存算一体芯片的运算控制方法包括:
步骤S100:获取运算任务。
其中,该运算任务即实际运算需求,可以包括简单的算术运算、多种运算组合在一起的复合运算以及复杂的神经网络运算等。
步骤S200:根据所述运算任务获取配置信息和有限状态机信息。
其中,配置信息指定参与运算任务的各个模块的状态,各个单元的配置大小;配置信息通常保存在存储器中,等任务运行时进行加载调度。有限状态机信息通常包括芯片运行状态、状态跳转条件以及控制指令等,在任务运行时,控制各模块的时序与状态。
步骤S300:根据所述配置信息配置芯片中各模块,实现芯片中电路结构的动态配置。
步骤S400:根据所述有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。
通过上述技术方案可以得知,该可软件定义的存算一体芯片的运算控制方法能够根据运算任务灵活调节芯片结构,适用各种复杂运算场合,尤其适用于神经网络运算,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
图2为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图一。如图2所示,该可软件定义的存算一体芯片包括:闪存处理阵列20、可编程算术运算模块30以及与该闪存处理阵列20和该可编程算术运算模块30连接的控制模块10,
该闪存处理阵列20包括用于分别执行不同模拟向量-矩阵乘法运算的多个闪存处理子阵列(图2中未示出)。
其中,多个闪存处理子阵列可为结构相同的闪存处理子阵列,也可以根据实际应用需求,将各个闪存处理子阵列的结构设置为不同,比如各个闪存处理子阵列的行数和列数可以根据实际应用需求进行设置,本发明实施例对此不作限制。
该可编程算术运算模块30包括用于分别实现不同算术运算的多个可编程算术运算单元(图2中未示出)。
可编程算术运算单元可以采用硬件实现,用于执行特定的算术运算。
其中,算术运算包括:乘法运算、加法运算、减法运算、除法运算、移位运算、激活函数、取最大值、取最小值、取平均值、池化等中的一种或几种的组合。
该控制模块10根据配置信息和有限状态机信息对多个闪存处理子阵列和多个可编程算术运算单元进行组合配置和工作时序控制,实现芯片结构动态配置。
具体地,该控制模块10执行如图1所示的运算控制方法,具体地,该运算控制方法根据该配置信息对该多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,选择投入工作的闪存处理子阵列和可编程算术运算单元,并对闪存处理子阵列与可编程算术运算单元的组合配对方式进行控制以实现特定运算;根据有限状态机信息控制闪存处理子阵列和可编程算术运算单元的工作时序,以利用配置后的芯片结构实现运算任务。
可以理解的是,多个可编程算术运算单元中每个可编程算术运算单元可以实现某一种或几种算术运算,多个可编程算术运算单元可以排列组合出多种复合运算,与多个闪存处理子阵列配合,能够实现多种组合配置,进而实现复杂的运算功能。
从上述描述可知,本发明实施例提供的运算控制方法应用于图2所示可软件定义的存算一体芯片中时,能够根据实际应用需求对多个闪存处理子阵列和多个可编程算术运算单元进行组合配置,实现芯片结构动态配置,不仅能够根据实际任务灵活调节芯片结构,还能实现多种复杂的运算功能,且ADC、DAC、寄存器、可编程算术运算单元等外围电路能够实现复用,进而减小了电路面积,适应集成化、小型化的需要。
在一个可选的实施例中,参见图3,该运算控制方法还可以包括:
步骤S100a:根据所述运算任务获取编程信息,所述编程信息包括:闪存处理阵列中每个可编程半导体器件(也可称为闪存单元)的阈值电压设定值,即各可编程半导体器件的权重信息,该可编程半导体器件可采用浮栅晶体管实现。
其中,该可软件定义的存算一体芯片还可以包括:编程电路20a,参见图4,该编程电路20a连接该控制模块10和该闪存处理阵列30,用于在控制模块10的控制下对该闪存处理阵列30进行编程。
步骤S100b:根据所述编程信息控制所述编程电路,以调节闪存处理阵列中每个可编程半导体器件的阈值电压至设定值。
具体地,根据该编程信息中闪存处理阵列中每个可编程半导体器件的阈值电压设定值,控制该编程电路工作,调整每个可编程半导体器件的阈值电压至设定值,实现编程。
值得说明的是,通过动态调节各可编程半导体器件的阈值电压VTH,可将各可编程半导体器件看作一个可变的等效模拟权重(记为Wk,j,其中0<k<M和0<j<N分别代表行号和列号),相当于存储一个模拟数据,而闪存处理阵列中的多个可编程半导体器件相当于存储了一个模拟数据阵列工作时,将一行模拟电压信号V1~VN分别施加至N列可编程半导体器件,根据可编程半导体器件特性,I=V×W,每个可编程半导体器件的漏极输出电流等于源极电压乘以该可编程半导体器件的权重,每一列的所有可编程半导体器件的漏极均连接至同一个模拟电流输出端,在该模拟电流输出端的电流Ij为该列所有可编程半导体器件的漏极电流之和,即为多个模拟电流输出端输出多个电流和实现矩阵乘法运算功能,而多个闪存处理子阵列可以实现对重矩阵乘法运算。
在一个可选的实施例中,该运算任务可为神经网络任务,针对该神经网络任务,该运算控制方法具体包括以下内容,参见图5:
步骤S100:获取运算任务。
步骤S210:根据神经网络任务获取各循环周期的配置信息和有限状态机信息,其中,每一层神经网络对应一个循环周期。
具体地,一个典型的神经网络结构如图6所示,图中的圆圈代表单个神经元,连线代表不同层神经元之间的运算。
该神经网络包括t层,即Layer1~Layer(t),每层中包括多个神经元,每个神经元接收上一层中多个神经元的输出作为输入,对接收的数据进行一定的运算,得到该神经元的输出,输至下一层中的多个神经元,作为下一层中对应神经元的输入,通过多层之间逐步递进的学习,实现复杂的运算识别等功能。
其中,Layer1作为输入层,用于输入待处理的数据,Layer(t)作为输出层,用于输出运算结果,Layer2~Layer(t-1)作为隐藏层,用于实现运算处理过程。
神经网络中主要涉及加权求和(即向量-矩阵乘法)运算和算术运算的组合。
结合到本实施例中,该运算控制方法为神经网络中的每一层神经网络获取一个配置信息,以利用该配置信息配置芯片结构,进而利用配置之后的芯片结构实现该层神经网络的运算任务。
步骤S300:根据所述配置信息控制配置芯片中各模块,实现芯片中电路结构的动态配置;
步骤S400:根据所述有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。
通过上述技术方案可知,本发明实施例提供的运算控制方法,可以适用于复杂的神经网络运算,将神经网络运算拆解为多个循环周期,各循环周期可以复用一套电路结构,能够极大地节省电路成本和面积,适应集成电路小型化的需要,比如,在移动终端、图像处理场合或导航、自动驾驶等场合,对于AI芯片的体积一般有较高的要求,需要将AI芯片做到很小,以便集成于设备中,通过采用上述控制方法,能够有效减小芯片的体积,应用范围广。
在一个可选的实施例中,参见图7,该步骤S210可以包括以下内容:
步骤S211:抽取所述神经网络任务中各循环周期的运算任务。
其中,抽取所述神经网络任务中各循环周期的运算任务主要是指根据该神经网络的运算需求,对该神经网络运算进行拆解,得到每一层神经网络的运算任务,即各循环周期的运算任务。
比如,对于输入层,没有对数据进行运算,其运算任务为空;对于某一隐藏层,其可能包含加权求和运算,该隐藏层至下一隐藏层之间可能会包含一特定算术运算,此时,该隐藏层的运算任务为加权求和运算+该特定算术运算。
步骤S222:根据所述运算任务获取运算结构。
具体地,针对可软件定义的存算一体芯片来说,该运算框架指该可软件定义的存算一体芯片中需要参与工作的模块形成的结构,比如,针对上述举例,对于该输入层来说,其运算结构主要是输入数据,此时对应一种能够从外部接收该输入数据的结构,此时,该结构不涉及算术和模拟运算,各用于进行运算的模块则不需要参与工作。而对于该隐藏层来说,其运算结构主要是接收上一隐藏层的计算结果,并对上一隐藏层的计算结果顺序进行加权求和运算以及该特定算术运算,并将最终的运算结果输至下一隐藏层,此时,对应一种输入端接收上一循环周期的运算结果、输出端连接下一循环周期,某一闪存处理子阵列投入工作实现该加权求和运算,运算结果输至可编程算术模块,可编程算术运算模块实现该特定算术运算的结构。
步骤S223根据所述运算结构获取配置信息和有限状态机信息。
具体地,当确定了运算结构之后,需要获取配置该运算结构时所需要的指令,即哪些模块接入工作电路,输入端的连接关系和输出端的连接关系,以及实际运算时各模块的实际运行的时序等,从而指导芯片配置与运算控制。
在一个可选的实施例中,该可软件定义的存算一体芯片还可以包括:有限状态机10b和指令寄存器10a,其中,有限状态机用于芯片工作时,表征芯片的运行状态以及状态跳转条件。
针对该可软件定义的存算一体芯片,本实施例的运算控制方法可以包括以下内容,参见图9:
步骤S100:获取运算任务。
步骤S210:根据神经网络任务获取各循环周期的配置信息和有限状态机信息,其中,每一层神经网络对应一个循环周期。
步骤S200a:根据各循环周期的配置信息配置各循环周期对应的电路模块;
步骤S200b:根据各循环周期的有限状态机信息配置指令寄存器。
举例来说,若该神经网络有10层,则对应10个循环周期;则对应10个循环周期的配置信息,以及相应的有限状态机信息;另外,该有限状态机还具有结束状态。
步骤S320:根据有限状态机的状态,基于各循环周期的配置信息依时序控制芯片结构,以实现神经网络运算。
具体地,该步骤S320可以包括以下内容(参见图10):
步骤S321:根据该有限状态机的当前状态,在所述指令寄存器中读取对应该循环周期当前状态的控制指令。
步骤S322:根据该控制指令,以及所述配置后的芯片结构,实现对应该循环周期的运算任务。
步骤S323:响应于该循环周期的运算任务结束,将所述有限状态机的状态跳转至下一状态。
步骤S324:判断所述有限状态机的当前状态是否指向结束状态。
若否,返回步骤S321,若是,执行步骤S325。
步骤S325:输出运算结果。
当然,本领域技术人员可以理解的是,在上述实施例中,也可以先对有限状态机的当前状态是否指向结束状态进行判断,当判断结果为否时,再跳转到下一个状态;若为初始化后的有限状态机,则在执行上述流程时,也可以先从其第一种状态执行,最后再判断是否指向结束状态。
通过上述方案可知,本发明实施例提供的运算控制方法,通过配置信息、有限状态机和指令寄存器的配合,能够有效实现芯片结构的动态配置与运算控制。
图11为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图四。如图11所示,该可软件定义的存算一体芯片包括:输入接口模块40、输入寄存器堆50、数模转换模块60、闪存处理阵列20、模数转换模块70、可编程算术运算模块30、输出寄存器堆80以及输出接口模块90。
其中,该闪存处理阵列20包含:用于分别执行模拟运算的闪存处理子阵列201~20n。该可编程算术运算模块30包含用于分别实现不同算术运算的可编程算术运算单元301~30n。
输入接口模块40的输入端连接外部设备,用于接收来自外部设备的外部输入数据(即需要运算的数据)。
输入寄存器堆50的输入端选择性连接该输入接口模块40的输出端和输出寄存器堆80的输出端,用于存储所述外部输入数据或该输出寄存器堆80输出的待处理数据。该输入寄存器堆50的输出端选择性连接所述数模转换模块60的输入端和所述可编程算术运算模块30的输入端.
数模转换模块60的输出端选择性连接一个闪存处理子阵列的输入端,用于将来自该输入寄存器堆50输出的外部输入数据或待处理数据转换为模拟信号并输至该闪存处理子阵列,该闪存处理子阵列对该模拟信号进行模拟运算并输出模拟运算结果。
模数转换模块70输入端选择性连接一个闪存处理子阵列,其中,该闪存处理子阵列连接该数模转换模块60,模数转换模块70输出端连接该可编程算术运算模块30,用于将该模拟运算结果转换为数字信号并输至该可编程算术运算模块30,该可编程算术运算模块30对该数字信号进行算术运算并输出算术运算结果。
该可编程算术运算模块30的输入端选择性连接该输入寄存器堆50的输出端和该模数转换模块70的输出端。
其中,算术运算包括:乘法运算、加法运算、减法运算、除法运算、移位运算、激活函数、取最大值、取最小值、取平均值、池化等中的一种或几种的组合。
输出寄存器堆80的输入端连接该可编程算术运算模块30的输出端,输出端选择性连接该输入寄存器堆50的输入端和输出接口模块90的输入端,用于将该算术运算结果通过该输出接口模块90输出或作为该待处理数据输至该输入寄存器堆50。
其中,该控制模块10连接该输入接口模块40、该输入寄存器堆50、该数模转换模块60、该闪存处理阵列20、该模数转换模块70、该输出寄存器堆80、该可编程算术运算模块30以及该输出接口模块90,用于执行本发明实施例中的运算控制方法,实现芯片结构的动态配置。
每个该闪存处理子阵列均可采用源极耦合、漏极求和的拓扑结构,参见图12,包括阵列布置的多个可编程半导体器件。每一列的所有可编程半导体器件的源极均连接至同一模拟电压输入端,多列可编程半导体器件对应连接多个模拟电压输入端;每一列的所有可编程半导体器件的漏极均连接至同一个模拟电流输出端,多列可编程半导体器件对应连接多个模拟电流输出端;每一行的所有可编程半导体器件的栅极均连接至同一偏置电压输入端,多行可编程半导体器件对应连接多个偏置电压输入端;其中,每个该可编程半导体器件的阈值电压均可调节。
当然,每个该闪存处理子阵列也可采用栅极耦合、源极求和的拓扑结构或栅极耦合、漏极求和的拓扑结构。每个该闪存处理子阵列均包括阵列布置的多个可编程半导体器件;每一行的所有可编程半导体器件的栅极均连接至同一模拟电压输入端,多行可编程半导体器件对应连接多个模拟电压输入端;每一列的所有可编程半导体器件的漏极均连接至同一第一端,多列可编程半导体器件对应连接多个第一端;每一列的所有可编程半导体器件的源极均连接至同一第二端,多列可编程半导体器件对应连接多个第二端;每个该可编程半导体器件的阈值电压均可调节;其中,该第一端为偏置电压输入端,该第二端为模拟电流输出端,实现栅极耦合、源极求和的拓扑结构,参见图13;或者,该第一端为模拟电流输出端,该第二端为偏置电压输入端,实现栅极耦合、漏极求和的拓扑结构,参见图14。
另外,该可软件定义的存算一体芯片还可以包括:编程电路(图中未示出)。该编程电路连接可编程半导体器件阵列中每一个可编程半导体器件的源极、栅极和/或衬底,用于调控可编程半导体器件的阈值电压。该编程电路可以包括:用于产生编程电压或者擦除电压的电压产生电路以及用于将所述编程电压加载至选定的可编程半导体器件的电压控制电路。
其中,上述可编程半导体器件可以采用浮栅晶体管实现。
针对图11所示的可软件定义的存算一体芯片来说,在一个可选的实施例中,该运算控制方法的步骤S322可以具体包括以下内容(参见图15):
步骤S1000:根据该闪存处理子阵列配置信息控制多个闪存处理子阵列的工作状态。
具体地,根据该闪存处理子阵列配置信息将该闪存处理阵列20划分为多个闪存处理子阵列201~20n,并控制多个闪存处理子阵列201~20n的工作时序。
步骤S1100:根据该可编程算术运算单元配置信息控制多个可编程算术运算单元的工作状态;其中,所述工作状态包括:运算状态和空闲状态。
具体地,根据该可编程算术运算单元301~30n的配置信息控制各可编程算术运算单元的工作状态,使多个可编程算术运算单元实现任意组合运算参与工作。
步骤S1200:根据所述输入寄存器堆的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据;
具体地,根据该配置信息控制该输入寄存器堆50的输入端是接收该外部输入数据还是该输出寄存器堆输出的待处理数据,以及其输出端是连接该数模转换模块的输入端还是该可编程算术运算模块的输入端。
步骤S1300:根据所述输出寄存器堆的配置信息控制该输出寄存器堆将其内的数据输出或作为待处理数据输至所述输入寄存器堆。
具体地,根据该输出寄存器堆80的配置信息控制该输出寄存器堆80将其内的数据输出或作为待处理数据输至该输入寄存器堆50;
步骤S1400:根据所述数模转换模块的配置信息控制参与实际任务的数模转换电路开闭状态。
步骤S1500:根据所述模数转换模块的配置信息控制参与实际任务的模数转换电路开闭状态。
步骤S1600根据所述输入接口模块的配置信息控制参与实际任务的输入接口电路开闭状态。
步骤S1700:根据所述输出接口模块的配置信息控制参与实际任务的输出接口电路开闭状态。
图16为采用本发明实施例的运算控制方法进行控制的可软件定义的存算一体芯片的结构图五。如图16所示,在图11所示可软件定义的存算一体芯片的基础上,该输入寄存器堆50的输入端通过多路选择器(MUX)100连接该输入接口模块40的输出端和该输出寄存器堆80的输出端,以选择性接收来自该输入接口模块40的外部输入数据或来自该输出寄存器堆80的待处理数据。该控制模块10连接该多路选择器100。
该数模转换模块60通过多路分配器(DEMUX)120选择性连接该多个闪存处理子阵列(201~20n)。控制模块10连接该多路分配器120。
该多个闪存处理子阵列(201~20n)的输出端通过一多路选择器130连接该模数转换模块70。该控制模块10连接该多路选择器130,根据配置信息控制该多路选择器130,进而选择哪一闪存处理子阵列的输出连接该模数转换模块70的输入端,即将上述的参与工作的闪存处理子阵列的输出连接至该模数转换模块70的输入端。
该可编程算术运算模块30的输入端通过多路选择器140连接该多路分配器110的输出端和该模数转换模块70的输出端。
该可编程算术运算模块30的多个该可编程算术运算单元301~30n串行连接,每个该可编程算术运算单元均包多路分配器30a、算术运算子单元30b以及多路选择器30c,参见图17。
该多路分配器30a的输入端连接上一可编程算术运算单元或该模数转换模块70,其中一个输出端连接该算术运算子单元30b,该算术运算子单元30b的输出端以及该多路分配器30a另一个输出端通过一个多路选择器30c连接下一可编程算术运算单元或输出寄存器堆80,另外,该多路分配器30a以及该多路选择器30c的控制端均连接该控制模块20。
具体地,第一可编程算术运算单元301中的多路分配器的输入端连接该模数转换模块70的输出端,其中一个输出端连接该第一可编程算术运算单元301中的算术运算子单元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接第二可编程算术运算单元302的输入端,该多路分配器和该多路选择器的控制端连接该控制模块20。
第二可编程算术运算单元302中的多路分配器的输入端连接该第一可编程算术运算单元301的输出端,其中一个输出端连接该第二可编程算术运算单元302中的算术运算子单元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接第三可编程算术运算单元303的输入端,该多路分配器和该多路选择器的控制端连接该控制模块20。依此类推,直到第n可编程算术运算单元30n,该第n可编程算术运算单元30n中的多路分配器的输入端连接第n-1可编程算术运算单元30n-1的输出端,其中一个输出端连接该第n可编程算术运算单元30n中的算术运算子单元的输入端,另一个输出端和该算术运算子单元的输出端通过一个多路选择器连接输出寄存器堆80的输入端,该多路分配器和该多路选择器的控制端连接该控制模块20。
控制模块20连接各可编程算术运算单元中的该多路分配器和该多路选择器的,根据配置信息控制各可编程算术运算单元中的该多路分配器和该多路选择器的,以选择该可编程算术运算单元中的算术运算子单元是否参与运算,以此实现多个可编程算术运算单元的排列组合配置,实现不同的复杂运算,灵活配置了算术运算功能。
在一个可选的实施例中,每个该可编程算术运算子单元均可以包括多个并排设置的算术运算器,例如乘法器、加法器、减法器、除法器、移位器、激活函数器、取最大值运算器、取最小值运算器、取平均值运算器、池化器中的一种或几种,各算术运算器之间并联,输入端分别连接至对应的多路分配器的输出端,输出端分别连接至对应的多路选择器的输入端,参见图18。
该可编程算数运算模块执行复合运算的过程如图19所示。
该输出寄存器堆80的输出端通过多路分配器150选择性连接该输出接口模块90的输入端或该输入寄存器堆50的输入端。该控制模块20连接该多路分配器150,根据配置信息控制该多路分配器150的工作状态,以选择将该输出寄存器堆80输出结果输至输出接口模块90还是输入寄存器堆50,当选择将该输出寄存器堆80输出结果输至输入寄存器堆50时,意味着将对该输出结果进行新一轮的运算处理。
该输入寄存器堆50的输出端通过一多路分配器110选择性连接该数模转换模块50的输入端或该可编程算术运算模块30的输入端,该控制模块10连接该多路分配器110,根据配置信息控制该多路分配器110的工作状态,以选择将该输入寄存器堆50的输出端连接至该数模转换模块50的输入端还是该可编程算术运算模块30的输入端,其中,当该输入寄存器堆50的输出端连接至该数模转换模块50的输入端时,意味着对该输入寄存器堆50的输出进行模拟运算和算术运算;当该输入寄存器堆50的输出端连接至该可编程算术运算模块30的输入端的输入端时,意味着对该输入寄存器堆50的输出进行一定的算术运算,以此进一步增加了芯片结构的灵活性。
针对图16和图17所示的可配置存算一体芯片,该控制模块10所执行的本发明实施例运算控制方法中,该步骤S1000包括:根据该闪存处理子阵列配置信息,控制该多路分配器120和多路选择器130的工作状态。
该步骤S1100包括:根据该可编程算术运算单元配置信息,控制各个可编程算术运算单元中选择器的工作状态,以控制该可编程算术运算单元中的算术运算子单元是否参与工作,实现多种运算组合配置;并根据该可编程算术运算单元配置信息,控制该多路选择器140的工作状态,以控制第一个可编程算术运算单元的输入端连接该输入寄存器堆的输出端或该模数转换模块的输出端。
该步骤S1200包括:根据该输入寄存器堆配置信息,控制该多路选择器100和该多路分配器110的工作状态,以控制该输入寄存器堆输入端接收输入接口模块接收的外部输入数据或该输出寄存器堆输出的待处理数据,并且,控制该输入寄存器堆输出端连接该模数转换模块的输入端或该可编程算术运算模块的输入端。
该步骤S1300包括:根据该输出寄存器堆配置信息,控制该多路分配器150的工作状态,以控制该输出寄存器堆的输出端连接所述输入寄存器堆的输入端或所述输出接口模块的输入端。
基于以上内容,本申请提供一种应用本发明实施例提供的运算控制方法,针对图16和图17所示的可软件定义的存算一体芯片进行一复合运算控制的场景,以说明该运算控制方法的工作流程。
该复合运算包括:对一输入数据G进行一加权求和运算(相当于矩阵乘法运算)之后,再进行一乘法运算,然后再进行一移位运算,最后将运算结果输出(因本申请重点在于说明运算控制方法,所以此处不对运算进行深入描述,仅描述其运算结构,以示例性说明本发明实施例的工作流程,并非对本发明的限制)。
针对该复合运算,该运算控制方法的工作流程如下:
(1)获取运算任务。
(2)根据运算任务获取运算结构。
该复合运算对应的运算结构包括:输入端口模块连接该输入寄存器堆的输入端,该输入寄存器堆的输出端连接该数模转换模块的输入端,该数模转换模块的输出端连接一闪存处理子阵列V的输入端,该闪存处理子阵列V的输出端连接该模数转换模块的输入端,该模数转换模块的输出端连接该可编程算术运算模块的输入端,该可编程算术运算模块中的乘法运算单元和移位运算单元参与工作,该可编程算术运算模块的输出端连接该输出寄存器堆的输入端,该输出寄存器堆的输出端连接该输出接口模块的输入端。
(3)根据所述运算结构获取配置信息和有限状态机信息。
具体地,根据上述运算结构获取闪存处理子阵列配置信息、可编程算术运算单元配置信息、输入寄存器堆配置信息、输出寄存器堆配置信息。
(4)根据配置信息控制芯片中的多路选择器100、多路分配器110、多路分配器120、多路选择器130、多路选择器140、多路分配器150,以实现该运算结构,并根据有限状态机信息控制芯片中各模块的工作时序,进而可利用该运算结构实现该复合运算。
(5)根据所述运算任务获取编程信息,所述编程信息包括:闪存处理子阵列中每个可编程半导体器件的阈值电压设定值,值得说明的是,编程信息主要根据加权求和运算所需的权重得到,而利用闪存处理子阵列进行加权求和运算已在上文中提到,在此不再赘述。
(6)根据编程信息控制编程电路,以调节闪存处理子阵列中每个可编程半导体器件的阈值电压至设定值。基于以上内容,本申请提供一种应用本发明实施例提供的运算控制方法,针对上述可软件定义的存算一体芯片进行神经网络运算控制的场景,以说明该运算控制方法的工作流程。
该神经网络用于实现对数据P进行运算,例如,该神经网络包含5层神经元,即输入层、三个隐藏层以及输出层,输入层用于输入数据P,输出层用于输出运算结果,第一隐藏层对数据P依次进行矩阵乘法运算1+加法运算,第二隐藏层依次进行矩阵乘法运算2+乘法运算+池化,第三隐藏层依次进行矩阵乘法运算3+激活函数,输出层进行取平均值运算后输出运算结果(此处为了说明控制方法的工作流程对神经网络各层的运算任务进行了梳理,在实际应用中,一般只给出神经网络的结构)。
针对该神经网络运算,该运算控制方法的工作流程如下:
(1)获取神经网络运算任务。
(2)抽取神经网络任务中各循环周期的运算任务,其中,每一层神经网络对应一个循环周期。
具体地,第一循环周期对应该输入层,其运算任务为空,第二循环周期对应第一隐藏层,第一隐藏层的运算任务包括:阵乘法运算1+加法运算,第三循环周期对应第二隐藏层,第二隐藏层的运算任务包括:矩阵乘法运算2+乘法运算+池化,第四循环周期对应第三隐藏层,第三隐藏层的运算任务包括:矩阵乘法运算3+激活函数,第五循环周期对应输出层,输出层的运算任务为:取平均值运算后输出运算结果。
(3)根据各循环周期的运算任务获取各循环周期的运算结构。
其中,获取运算结构时还需要考虑各运算任务之间的关联。
第一循环周期的运算结构为:输入接口模块输入的数据P传输至输入寄存器堆,第一循环周期的运算结构为:输入寄存器堆的输出端连接数模转换模块,数模转换模块的输出端连接闪存处理子阵列1(用于实现向量-矩阵乘法运算1),闪存处理子阵列1的输出端连接模数转换模块,模数转换模块的输出端连接可编程算术运算模块的输入端,可编程算术运算模块中加法运算单元参与工作,可编程算术运算模块的输出端连接输出寄存器堆的输入端,该输出寄存器堆的输出端连接输入寄存器堆的输入端,其他循环周期的运算结构不再赘述。
(4)根据所述运算结构获取各循环周期的配置信息和有限状态机信息。
第一循环周期的配置信息包括:多路选择器100的控制指令;
第二循环周期的配置信息包括:多路分配器110、多路分配器120、多路选择器130、多路选择器140、选择器、多路分配器150以及多路选择器160的控制指令,以及闪存处理子阵列1的编程信息。
(5)根据配置后的电路结构,同时根据各循环周期的有限状态机信息,从指令寄存器读取控制指令,控制配置后电路结构的工作时序。
(6)根据有限状态机的状态(例如,假设有限状态机有6种状态,1~5状态和结束状态),判断有限状态机的状态是否指向结束状态。
若否,执行步骤(7),若是,结束运算。
(7)有限状态机若为的1状态,在指令寄存器中读取第一循环周期的配置信息,根据第一循环周期的配置信息控制多路选择器100,以将该数据P传至输入寄存器堆,配置完毕后,根据状态跳转条件,有限状态机的状态跳转至下一个状态,在指令寄存器中读取第二循环周期的配置信息,根据第二循环周期的配置信息控制多路分配器110、多路分配器120、多路选择器130、多路选择器140、选择器、多路分配器150以及多路选择器160,以实现第二循环周期的运算结构,并根据编程信息对闪存处理子阵列1进行编程,以此类推,直至有限状态机的状态指向结束状态。
本领域技术人员可以理解的是,当某一层神经网络仅需要算术运算而不需要模拟运算时,只需在控制模块10配置电路时,控制该输寄存器堆50输出的多路分配器E,使得该输入寄存器堆50的输出端与该算术运算模块30的输入端连通即可,其他配置过程不再赘述。
另外,本领域技术人员可以理解的是,根据运算结构获取配置信息可以根据预先设置的指令-结构对应关系表实现。
值得说明的是,当获取到运算任务之后,即可知道需要投入的闪存处理子阵列的数量以及各个闪存处理子阵列的规模等配置信息,然后动态配置电路结构。
上述实施例中阐述的是在各个循环周期配置芯片结构时,对该循环周期对应的闪存处理子阵列进行编程,在一个可选的实施例中,也可以在执行芯片结构配置之前,根据编程信息对各个闪存处理子阵列统一进行编程,之后再执行各循环周期的配置信息,此时,每个循环周期只需要配置芯片结构,不需要再对闪存处理子阵列进行编程。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
基于同一发明构思,本申请实施例还提供了一种运算控制装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于运算控制装置解决问题的原理与上述方法相似,因此运算控制装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图20为本发明实施例一种可软件定义的存算一体芯片的运算控制装置的结构图一,如图20所示,该运算控制装置包括:运算任务获取模块1000、配置信息获取模块2000、芯片结构控制模块3000、工作时序控制模块4000、存储模块5000。
运算任务获取模块1000获取运算任务。配置信息获取模块2000根据该运算任务获取配置信息和有限状态机信息。芯片结构控制模块3000根据所述配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;工作时序控制模块4000根据所述有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务;存储模块5000存储配置信息、运算数据与控制指令。
本发明实施例还提供一种电子设备,可执行神经网络算法,该神经网络包含多层神经元,每层神经元根据其上一层神经元的输出结果进行相应运算,该电子设备包括上述可软件定义的存算一体芯片。
本发明实施例还提供另一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的运算控制方法的步骤。
其中,该电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的运算控制方法的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种可软件定义的存算一体芯片的运算控制方法,其特征在于,包括:
获取运算任务;
根据所述运算任务获取配置信息和有限状态机信息;
根据所述配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;
根据所述有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。
2.根据权利要求1所述的运算控制方法,其特征在于,所述运算任务为神经网络任务,
所述配置信息包括各模块配置大小与状态信息;
所述有限状态机信息包括芯片运行状态、状态跳转条件以及控制指令;
根据所述运算任务获取配置信息和有限状态机信息,包括:
根据所述神经网络任务获取各循环周期的配置信息和有限状态机信息,其中,每一层神经网络对应一个循环周期。
3.根据权利要求2所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片包括:有限状态机和指令寄存器;
所述运算控制方法还包括:
所述根据有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务,包括:
判断步骤:判断所述有限状态机的当前状态是否指向结束状态;
若否,则根据该有限状态机的当前状态,在所述指令寄存器中读取对应该当前状态的指令;并且,根据该循环周期的配置信息配置芯片中各模块,以利用配置后的芯片结构实现对应该循环周期的运算任务;并且,响应于该循环周期的运算任务结束,将所述有限状态机的状态跳转至下一状态,并返回所述判断步骤。
4.根据权利要求1至3任一项所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片包括:编程电路以及连接所述编程电路的闪存处理阵列,所述闪存处理阵列包含多个可编程半导体器件;
所述运算控制方法还包括:
根据所述运算任务获取编程信息,所述编程信息包括:闪存处理阵列中每个可编程半导体器件的阈值电压设定值;
根据所述编程信息控制所述编程电路,以调节闪存处理阵列中每个可编程半导体器件的阈值电压至设定值。
5.根据权利要求2或3所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片还包括:具有用于分别执行模拟运算的多个闪存处理子阵列的闪存处理阵列、具有用于分别实现不同算术运算的多个可编程算术运算单元的可编程算术运算模块,所述配置信息包括:闪存处理子阵列配置信息、可编程算术运算单元配置信息,
所述根据该循环周期的配置信息配置芯片中各模块,实现芯片中电路结构的动态配置,包括:
根据该闪存处理子阵列配置信息控制多个闪存处理子阵列的工作状态;
根据该可编程算术运算单元配置信息控制多个可编程算术运算单元的工作状态;
其中,所述工作状态包括:运算状态、编程状态和空闲状态。
6.根据权利要求5所述的运算控制方法,其特征在于,所述可软件定义的存算一体芯片还包括:输入接口模块、输入寄存器堆、数模转换模块、模数转换模块、输出寄存器堆以及输出接口模块,
所述输入接口模块用于接收外部输入数据;
所述输入寄存器堆的输入端选择性连接所述输入接口模块和所述输出寄存器堆,用于存储所述外部输入数据或该输出寄存器堆输出的待处理数据;该输入寄存器堆的输出端选择性连接所述数模转换模块的输入端和所述可编程算术运算模块的输入端;
所述数模转换模块的输出端选择性连接一个闪存处理子阵列;
所述模数转换模块的输入端选择性连接一个闪存处理子阵列,输出端连接所述可编程算术运算模块的输入端;
所述输出寄存器堆的输入端连接所述可编程算术运算模块的输出端;输出端选择性连接所述输入寄存器堆的输入端和输出接口模块的输入端;
所述配置信息还包括:数模转换模块的配置信息、模数转换模块的配置信息、输入接口模块的配置信息、输出接口模块的配置信息、输入寄存器堆配置信息、输出寄存器堆配置信息,
所述根据该循环周期的配置信息配置芯片中各模块,实现芯片中电路结构的动态配置,还包括:
根据所述数模转换模块的配置信息控制参与实际任务的数模转换电路开闭状态;
根据所述模数转换模块的配置信息控制参与实际任务的模数转换电路开闭状态;
根据所述输入接口模块的配置信息控制参与实际任务的输入接口电路开闭状态;
根据所述输出接口模块的配置信息控制参与实际任务的输出接口电路开闭状态;
根据所述输入寄存器堆的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据;
根据所述输出寄存器堆的配置信息控制该输出寄存器堆将其内的数据输出或作为待处理数据输至所述输入寄存器堆。
7.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述数模转换模块的输出端通过第一多路分配器选择性连接一个闪存处理子阵列;所述模数转换模块的输入端通过第一多路选择器选择性连接一个闪存处理子阵列;
所述根据该闪存处理子阵列配置信息控制多个闪存处理子阵列的工作状态,包括:
根据该闪存处理子阵列配置信息,控制该第一多路分配器和第一多路选择器的工作状态,以使一闪存处理子阵列的输入端连接该数模转换模块的输出端,输出端连接该模数转换模块的输入端,参与运算工作。
8.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述可编程算术运算模块的输入端通过第二多路选择器选择性连接所述输入寄存器堆的输出端和所述模数转换模块的输出端;
所述可编程算术运算模块的多个可编程算术运算单元串行连接,每个该可编程算术运算单元均包括:多路分配器、算术运算子单元以及多路选择器;
所述多路分配器的输入端连接上一可编程算术运算单元或所述模数转换模块,其中一个输出端连接所述算术运算子单元,另一个输出端与所述算术运算子单元的输出端通过所述多路选择器连接下一可编程算术运算单元或输出寄存器堆,控制端连接所述控制模块;
所述根据该可编程算术运算单元配置信息控制多个可编程算术运算单元的工作状态,包括:
根据该可编程算术运算单元配置信息,控制各个可编程算术运算单元中多路分配器和多路选择器的工作状态,以控制该可编程算术运算单元中的算术运算子单元是否参与工作,实现多种运算组合配置;
根据该可编程算术运算单元配置信息,控制该第二多路选择器的工作状态,以控制第一个可编程算术运算单元的输入端连接该输入寄存器堆的输出端或该模数转换模块的输出端。
9.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述输入寄存器堆的输入端通过第三多路选择器选择性连接所述输入接口模块的输出端和所述输出寄存器堆的输出端;所述输入寄存器堆的输出端通过第三多路分配器选择性连接所述数模转换模块的输入端和所述可编程算术运算模块的输入端;
所述根据所述输入寄存器堆的配置信息控制该输入寄存器待存储的数据来源于输入接口模块的输入数据或输出寄存器堆待处理数据,包括:
根据该输入寄存器堆配置信息,控制该第三多路选择器和该第三多路分配器的工作状态,以控制该输入寄存器堆输入端接收输入接口模块接收的外部输入数据或该输出寄存器堆输出的待处理数据,并且,控制该输入寄存器堆输出端连接该模数转换模块的输入端或该可编程算术运算模块的输入端。
10.根据权利要求6所述的运算控制方法,其特征在于,所述存算一体芯片中,所述输出寄存器堆的输出端通过第四多路分配器选择性连接所述输入寄存器堆的输入端和所述输出接口模块的输入端;
所述根据所述输出寄存器堆的配置信息控制该输出寄存器堆将其内的数据输出或作为待处理数据输至所述输入寄存器堆,包括:
根据该输出寄存器堆配置信息,控制该第四多路分配器的工作状态,以控制该输出寄存器堆的输出端连接所述输入寄存器堆的输入端或所述输出接口模块的输入端。
11.一种可软件定义的存算一体芯片的运算控制装置,其特征在于,包括:
运算任务获取模块,获取运算任务;
配置信息获取模块,根据所述运算任务获取配置信息和有限状态机信息;
存储模块,存储配置信息、运算数据与控制指令;
芯片结构控制模块,根据所述配置信息配置芯片中各模块,实现芯片中电路结构的动态配置;
工作时序控制模块,根据所述有限状态机信息控制芯片中各模块的工作时序,以利用配置后的芯片结构实现运算任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910143151.5A CN111611197B (zh) | 2019-02-26 | 2019-02-26 | 可软件定义的存算一体芯片的运算控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910143151.5A CN111611197B (zh) | 2019-02-26 | 2019-02-26 | 可软件定义的存算一体芯片的运算控制方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111611197A true CN111611197A (zh) | 2020-09-01 |
CN111611197B CN111611197B (zh) | 2021-10-08 |
Family
ID=72195848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910143151.5A Active CN111611197B (zh) | 2019-02-26 | 2019-02-26 | 可软件定义的存算一体芯片的运算控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611197B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112153139A (zh) * | 2020-09-23 | 2020-12-29 | 成都市深思创芯科技有限公司 | 基于传感器网络和存内计算神经网络的控制系统及方法 |
CN112395247A (zh) * | 2020-11-18 | 2021-02-23 | 北京灵汐科技有限公司 | 数据的处理方法、存算一体芯片 |
CN113656345A (zh) * | 2021-09-03 | 2021-11-16 | 西安紫光国芯半导体有限公司 | 一种计算器件、计算系统及计算方法 |
CN113918233A (zh) * | 2021-09-13 | 2022-01-11 | 山东产研鲲云人工智能研究院有限公司 | 一种ai芯片控制方法、电子设备及ai芯片 |
CN117111717A (zh) * | 2023-10-24 | 2023-11-24 | 荣耀终端有限公司 | 一种闪存控制方法、电子设备和存储介质 |
WO2023245823A1 (zh) * | 2022-06-22 | 2023-12-28 | 深圳市芯存科技有限公司 | 一种存算一体芯片和控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214084A (zh) * | 2011-06-17 | 2011-10-12 | 哈尔滨理工大学 | 八位高速微控制器ip软核 |
CN103390070A (zh) * | 2012-05-07 | 2013-11-13 | 北京大学深圳研究生院 | 一种可重构算子阵列结构 |
CN108777155A (zh) * | 2018-08-02 | 2018-11-09 | 北京知存科技有限公司 | 闪存芯片 |
-
2019
- 2019-02-26 CN CN201910143151.5A patent/CN111611197B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214084A (zh) * | 2011-06-17 | 2011-10-12 | 哈尔滨理工大学 | 八位高速微控制器ip软核 |
CN103390070A (zh) * | 2012-05-07 | 2013-11-13 | 北京大学深圳研究生院 | 一种可重构算子阵列结构 |
CN108777155A (zh) * | 2018-08-02 | 2018-11-09 | 北京知存科技有限公司 | 闪存芯片 |
Non-Patent Citations (1)
Title |
---|
匿名: "清华大学魏少军教授:什么是真正的通用人工智能芯片", 《HTTPS://WWW.LEIPHONE.COM/CATEGORY/INDUSTRYNEWS/Q7EPPH4MPWICG72H.HTML》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112153139A (zh) * | 2020-09-23 | 2020-12-29 | 成都市深思创芯科技有限公司 | 基于传感器网络和存内计算神经网络的控制系统及方法 |
CN112153139B (zh) * | 2020-09-23 | 2022-06-14 | 成都市深思创芯科技有限公司 | 基于传感器网络和存内计算神经网络的控制系统及方法 |
CN112395247A (zh) * | 2020-11-18 | 2021-02-23 | 北京灵汐科技有限公司 | 数据的处理方法、存算一体芯片 |
WO2022105805A1 (zh) * | 2020-11-18 | 2022-05-27 | 北京灵汐科技有限公司 | 数据的处理方法及存算一体芯片 |
CN112395247B (zh) * | 2020-11-18 | 2024-05-03 | 北京灵汐科技有限公司 | 数据的处理方法、存算一体芯片 |
CN113656345A (zh) * | 2021-09-03 | 2021-11-16 | 西安紫光国芯半导体有限公司 | 一种计算器件、计算系统及计算方法 |
CN113656345B (zh) * | 2021-09-03 | 2024-04-12 | 西安紫光国芯半导体有限公司 | 一种计算器件、计算系统及计算方法 |
CN113918233A (zh) * | 2021-09-13 | 2022-01-11 | 山东产研鲲云人工智能研究院有限公司 | 一种ai芯片控制方法、电子设备及ai芯片 |
WO2023245823A1 (zh) * | 2022-06-22 | 2023-12-28 | 深圳市芯存科技有限公司 | 一种存算一体芯片和控制方法 |
CN117111717A (zh) * | 2023-10-24 | 2023-11-24 | 荣耀终端有限公司 | 一种闪存控制方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111611197B (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111611197B (zh) | 可软件定义的存算一体芯片的运算控制方法和装置 | |
CN108416422B (zh) | 一种基于fpga的卷积神经网络实现方法及装置 | |
WO2020172951A1 (zh) | 可软件定义存算一体芯片及其软件定义方法 | |
US9411726B2 (en) | Low power computation architecture | |
CN109409510B (zh) | 神经元电路、芯片、系统及其方法、存储介质 | |
WO2019218896A1 (zh) | 计算方法以及相关产品 | |
US20140365548A1 (en) | Vector matrix product accelerator for microprocessor integration | |
CN209766043U (zh) | 存算一体芯片、存储单元阵列结构 | |
US11335400B2 (en) | Computing-in-memory chip and memory cell array structure | |
US11593628B2 (en) | Dynamic variable bit width neural processor | |
WO2017020165A1 (zh) | 自适应芯片和配置方法 | |
CN111488976B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN211016545U (zh) | 基于NAND Flash的存内计算芯片、存储装置以及终端 | |
US11256503B2 (en) | Computational memory | |
CN112988082B (zh) | 基于nvm进行ai计算的芯片系统及其运行方法 | |
CN116050492A (zh) | 一种扩展单元 | |
US20230169316A1 (en) | Indexing Operations In Neural Network Processor | |
CN112862079B (zh) | 一种流水式卷积计算架构设计方法及残差网络加速系统 | |
CN115167815A (zh) | 乘加器电路、芯片及电子设备 | |
CN115374395A (zh) | 一种通过算法控制单元进行调度计算的硬件结构 | |
US11475283B2 (en) | Multi dimensional convolution in neural network processor | |
CN115759212A (zh) | 卷积运算电路及方法、神经网络加速器和电子设备 | |
CN117291240B (zh) | 卷积神经网络加速器及电子设备 | |
CN117908830A (zh) | 数据处理装置及操作方法、计算装置、存储介质 | |
US11741043B2 (en) | Multi-core processing and memory arrangement |
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 | ||
CP03 | Change of name, title or address |
Address after: Room 213-175, 2nd Floor, Building 1, No. 180 Kecheng Street, Qiaosi Street, Linping District, Hangzhou City, Zhejiang Province, 311100 Patentee after: Hangzhou Zhicun Computing Technology Co.,Ltd. Country or region after: China Address before: 1416, shining building, No. 35, Xueyuan Road, Haidian District, Beijing 100083 Patentee before: BEIJING WITINMEM TECHNOLOGY Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |