CN116029386A - 基于数据流的人工智能芯片及其驱动方法、装置 - Google Patents
基于数据流的人工智能芯片及其驱动方法、装置 Download PDFInfo
- Publication number
- CN116029386A CN116029386A CN202111241462.9A CN202111241462A CN116029386A CN 116029386 A CN116029386 A CN 116029386A CN 202111241462 A CN202111241462 A CN 202111241462A CN 116029386 A CN116029386 A CN 116029386A
- Authority
- CN
- China
- Prior art keywords
- data
- group
- multiplexing circuit
- memory
- memory modules
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System (AREA)
Abstract
本公开提供了一种基于数据流的人工智能芯片及其驱动方法、装置,涉及人工智能领域,所述基于数据流的人工智能芯片包括:多个存储模块;多个计算电路,不同计算电路被配置为执行机器学习算法模型中不同类型的计算;和第一多路复用电路,被配置为响应于任务对应的第一驱动信号,读取与所述第一驱动信号对应的第一组存储模块中的第一数据,并将所述第一数据传输到与所述第一驱动信号对应的第一组计算电路。所述第一多路复用电路包括:多个第一输入端,与所述多个存储模块一一对应连接;和多个第一输出端,包括与所述多个计算电路一一对应连接的第一组第一输出端。
Description
技术领域
本公开涉及人工智能领域,尤其是一种基于数据流的人工智能芯片及其驱动方法、装置。
背景技术
作为人工智能技术的重要组成部分,机器学习被广泛地应用于各行各业以提高生产效率。然而,机器学习的算法比较复杂且涉及大量的计算,这限制了机器学习算法模型的运行速度。
相关技术中,可以使用定制化的基于数据流的人工智能芯片来执行机器学习算法以提高机器学习算法模型的运行速度。这种人工智能芯片包括用于执行机器学习算法中各种类型的计算的多个计算电路。这些计算电路与人工智能芯片中的存储单元连接,从而可以在需要进行计算时直接从存储单元读取执行计算需要的数据。这降低了数据传输的时延,从而提高了人工智能芯片的计算速度。
发明内容
发明人注意到,相关技术中的方式下,人工智能芯片的计算速度仍然较低。
发明人经分析发现,这种人工智能芯片中的存储单元被设计成多个存储模块,每个存储模块固定用于存储对应的一种类型的数据。为了便于计算电路读取数据,将每个存储模块与执行计算时需要对应类型的数据的一个计算电路连接。
然而,在实际的应用场景中,普遍存在不同计算电路执行计算时需要使用相同数据的情况。在这种情况下,需要耗费时间将数据从原本的存储模块搬运至另一存储模块,从而降低了人工智能芯片的计算速度。
为了解决上述问题,本公开实施例提出了如下解决方案。
根据本公开实施例的一方面,提供一种基于数据流的人工智能芯片,包括:多个存储模块;多个计算电路,不同计算电路被配置为执行机器学习算法模型中不同类型的计算;以及第一多路复用电路,被配置为响应于任务对应的第一驱动信号,读取与所述第一驱动信号对应的第一组存储模块中的第一数据,并将所述第一数据传输到与所述第一驱动信号对应的第一组计算电路,所述第一多路复用电路包括:多个第一输入端,与所述多个存储模块一一对应连接,和多个第一输出端,包括与所述多个计算电路一一对应连接的第一组第一输出端。
在一些实施例中,所述第一多路复用电路还被配置为:响应于另一任务对应的另一第一驱动信号,读取所述第一组存储模块中的所述第一数据,并将所述第一数据传输到与所述另一第一驱动信号对应的第二组计算电路。
在一些实施例中,所述人工智能芯片还包括:第二多路复用电路,被配置为响应于所述任务对应的第二驱动信号,读取所述人工智能芯片外的存储结构中的第二数据,并将所述第二数据存储到与所述第二驱动信号对应的第二组存储模块,所述第二数据被包含在所述第一数据中,所述第二组存储模块被包含在所述第一组存储模块中,其中,所述第二多路复用电路包括:多个第二输入端,包括与所述存储结构连接的第一组第二输入端,和多个第二输出端,与所述多个存储模块一一对应连接。
在一些实施例中,所述第二多路复用电路还被配置为:响应于所述第二驱动信号,读取所述第二数据中同一种类型的数据,并将所述同一种类型的数据存储到所述第二组存储模块中的至少两个存储模块。
在一些实施例中,所述多个第一输出端还包括与所述存储结构连接的第二组第一输出端;所述第一多路复用电路还被配置为:响应于第三驱动信号,读取与所述第三驱动信号对应的第三组存储模块中的第三数据,并将所述第三数据存储到所述存储结构;其中,所述第三组存储模块中的至少一个被包含在所述第二组存储模块中。
在一些实施例中,所述多个第二输入端还包括与所述多个计算电路的输出端一一对应连接的第二组第二输入端;所述第二多路复用电路还被配置为:响应于第四驱动信号,将一个计算电路的输出存储到与所述第四驱动信号对应的存储模块。
在一些实施例中,所述机器学习算法模型包括神经网络算法模型,所述任务为所述神经网络算法模型的多个计算层中的一个或连续的至少两个计算层的计算。
根据本公开实施例的另一方面,提供上述任意一个实施例的基于数据流的人工智能芯片的驱动方法,包括:确定执行任务需要的第一组计算电路,所述任务包括所述第一组计算电路对应的至少一种类型的计算;确定执行所述任务需要的第一数据对应的第一组存储模块;向所述第一多路复用电路发送与所述第一组计算电路和所述第一组存储模块对应的第一驱动信号,以使得所述第一多路复用电路读取所述第一数据并将所述第一数据传输到所述第一组计算电路。
在一些实施例中,所述方法还包括:确定执行另一任务需要的第二组计算电路,所述另一任务包括所述第二组计算电路对应的至少一种类型的计算;向所述第一多路复用电路发送与所述第二组计算电路和所述第一组存储模块对应的另一第一驱动信号,以使得所述第一多路复用电路读取所述第一数据并将所述第一数据传输到所述第二组计算电路。
在一些实施例中,所述人工智能芯片还包括第二多路复用电路,所述第二多路复用电路包括与所述人工智能芯片外的存储结构连接的第一组第二输入端、以及与所述多个存储模块一一对应连接的多个第二输出端;所述方法还包括:确定存储所述存储结构中的第二数据中每种类型的数据需要的第一容量,所述第二数据被包含在所述第一数据中;确定所述多个存储模块中空闲的第四组存储模块;确定所述第四组存储模块中每个存储模块的第二容量;根据所述第一容量和所述第二容量从所述第四组存储模块中确定所述第二数据对应的第二组存储模块,所述第二组存储模块被包含在所述第一组存储模块中;向所述第二多路复用电路发送与所述第二组存储模块对应的第二驱动信号,以使得所述第二多路复用电路读取所述第二数据并将所述第二数据存储到所述第二组存储模块。
在一些实施例中,根据所述第一容量和所述第二容量从所述第四组存储模块中确定所述第二数据对应的第二组存储模块包括:在所述第二数据中某一种类型的数据的第一容量大于所述第四组存储模块中每个存储模块的第二容量的情况下,确定该种类型的数据对应的至少两个存储模块;其中,所述第二组存储模块包括所述至少两个存储模块。
在一些实施例中,所述多个第一输出端还包括与所述存储结构连接的第二组第一输出端;所述方法还包括:在确定所述第四组存储模块之前,确定所述多个存储模块中空闲的第五组存储模块,其中,所述第五组存储模块的总容量小于存储所述第二数据需要的总容量,或者,所述第五组存储模块中存储模块的数量小于所述第二数据中数据的类型的数量;确定所述任务之后的其他任务需要的第三数据对应的第三组存储模块;向所述第一多路复用电路发送与所述第三组存储模块对应的第三驱动信号,以使得所述第一多路复用电路读取所述第三数据并将所述第三数据存储到所述存储结构。
在一些实施例中,所述多个第二输入端还包括与所述多个计算电路的输出端一一对应连接的第二组第二输入端;所述方法还包括:确定存储正在执行计算的计算电路的输出需要的第三容量;根据所述第二容量和所述第三容量确定所述输出对应的存储模块;向所述第二多路复用电路发送与所述计算电路和所述存储模块对应的第四驱动信号,以使得所述第二多路复用电路将所述输出存储到所述存储模块。
在一些实施例中,所述任务为神经网络算法模型的多个计算层中的一个或连续的至少两个计算层的计算。
根据本公开实施例的还一方面,提供上述任意一个实施例的基于数据流的人工智能芯片的驱动装置,包括:确定模块,被配置为确定执行任务需要的第一组计算电路,所述任务包括所述第一组计算电路对应的至少一种类型的计算;确定执行所述任务需要的第一数据对应的第一组存储模块;发送模块,被配置为向所述第一多路复用电路发送与所述第一组计算电路和所述第一组存储模块对应的第一驱动信号,以使得所述第一多路复用电路读取所述第一数据并将所述第一数据传输到所述第一组计算电路。
根据本公开实施例的还一方面,提供上述任意一个实施例的基于数据流的人工智能芯片的驱动装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行上述任意一个实施例所述的驱动方法。
根据本公开实施例的还一方面,提供一种人工智能加速器,包括:上述任意一个实施例所述的基于数据流的人工智能芯片;和上述任意一个实施例所述的驱动装置。
根据本公开实施例的还一方面,提供一种服务器,包括:上述任意一个实施例所述的人工智能加速器。
根据本公开实施例的还一方面,提供一种计算机可读存储介质,包括计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述任意一个实施例所述的驱动方法。
根据本公开实施例的还一方面,提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现上述任意一个实施例所述的驱动方法。
本公开实施例中,多个存储模块经由第一多路复用电路与多个计算电路连接,而非直接与多个计算电路连接。第一多路复用电路根据驱动信号能够从任意一个存储模块中读取需要的数据,并将读取的数据传输至任意一个计算电路,而不再需要耗费时间在存储模块之间进行数据搬运。如此,可以提高人工智能芯片的计算速度。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是根据本公开一些实施例的基于数据流的人工智能芯片的结构示意图;
图1B是根据本公开一些实施例的基于数据流的人工智能芯片100的驱动方法的流程示意图;
图2A是根据本公开另一些实施例的基于数据流的人工智能芯片的结构示意图;
图2B是根据本公开一些实施例的基于数据流的人工智能芯片200的驱动方法的流程示意图;
图3是根据本公开一些实施例的基于数据流的人工智能芯片的驱动装置的结构示意图;
图4是根据本公开另一些实施例的基于数据流的人工智能芯片的驱动装置的结构示意图;
图5是根据本公开一些实施例的人工智能加速器的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1A是根据本公开一些实施例的基于数据流的人工智能芯片的结构示意图。
如图1A所示,基于数据流的人工智能芯片100包括多个存储模块(图1A示意性地示出4个,即,存储模块11a、存储模块11b、存储模块11c和存储模块11d)、多个计算电路(图1A示意性地示出4个,即,计算电路12a、计算电路12b、计算电路12c和计算电路12d)和第一多路复用电路13。
多个存储模块可以是例如,随机存取存储器(Random Access Memory,RAM)。
不同的计算电路被配置为执行机器学习算法模型中不同类型的计算。例如,不同的计算电路可以被配置为执行神经网络算法模型中不同类型的计算,包括例如,卷积计算、直连(shortcut)计算等。
第一多路复用电路13包括多个第一输入端131和多个第一输出端。
多个第一输入端131与多个存储模块一一对应地连接。多个第一输出端包括与多个计算电路一一对应地连接的第一组第一输出端132a。
第一多路复用电路13被配置为响应于任务对应的第一驱动信号,读取与第一驱动信号对应的第一组存储模块中的第一数据,并将第一数据传输到与第一驱动信号对应的第一组计算电路。
在一些实施例中,任务为神经网络算法模型的多个计算层中的一个或连续的至少两个计算层的计算。
应理解,第一组存储模块可以包括多个存储模块中的一个或多个,并且,第一组计算电路可以包括多个计算电路中的一个或多个。
上述实施例中,多个存储模块经由第一多路复用电路与多个计算电路连接,而非直接与多个计算电路连接。第一多路复用电路根据驱动信号能够从任意一个存储模块中读取需要的数据,并将读取的数据传输至任意一个计算电路,而不再需要耗费时间在存储模块之间进行数据搬运。如此,可以提高人工智能芯片的计算速度。
此外,相关技术中,数据无法从原本的存储模块直接搬运至另一存储模块,而是需要首先从原本的存储模块搬运至人工智能芯片外的存储结构,然后再从存储结构搬运至另一存储模块。这增大了人工智能芯片访问外部存储结构的频率,从而增加了人工智能芯片执行计算的功耗。本公开一些实施例中,不需要进行复杂的数据搬运就能够允许不同计算电路在执行计算时使用相同的数据,从而可以降低人工智能芯片访问外部存储结构的频率,降低人工智能芯片执行计算的功耗。
可以执行图1B所示的人工智能芯片的驱动方法以驱动人工智能芯片100。图1B是根据本公开一些实施例的基于数据流的人工智能芯片100的驱动方法的流程示意图。
如图1B所示,基于数据流的人工智能芯片100的驱动方法包括步骤110~步骤130。
在步骤110,确定执行任务需要的第一组计算电路。
例如,可以通过总线从上位机(例如,计算机、服务器等)获取要运行的机器学习算法模型的具体架构。以神经网络算法模型为例,可以基于神经网络算法模型的具体架构确定当前任务对应的计算层的计算的类型。然后,可以确定执行对应类型的计算的第一组计算电路。
在步骤120,确定执行任务需要的第一数据对应的第一组存储模块。
例如,多个存储模块具有预设的多个地址,每个地址属于对应的某一个存储模块。可以首先确定第一数据在多个存储模块中的地址,并据此确定对应的第一组存储模块。
在步骤130,向第一多路复用电路发送与第一组计算电路和第一组存储模块对应的第一驱动信号,以使得第一多路复用电路读取第一数据并将第一数据传输到第一组计算电路。
例如,可以经由第一多路复用电路13的信号输入端133(参见图1A)向第一多路复用电路13发送第一驱动信号。响应于任务对应的第一驱动信号,第一多路复用电路13可以首先调整多个第一输入端131与第一组第一输出端132a之间的连接关系,以使得第一组存储模块经由第一多路复用电路13与第一组计算电路相连。然后,第一多路复用电路13可以从第一组存储模块读取第一数据,并将第一数据传输到第一组计算电路。
应理解,响应于不同的第一驱动信号,第一多路复用电路13可以调整多个第一输入端131与第一组第一输出端132a之间不同的连接关系。
例如,响应于携带“1100”的指令的第一驱动信号,第一多路复用电路13可以将存储模块11a与计算电路12a相连,并将存储模块11b与计算电路12b相连;响应于携带“1101”的指令的第一驱动信号,第一多路复用电路13可以将存储模块11b与计算电路12a相连,并将存储模块11a与计算电路12b相连;响应于携带“1110”的指令的第一驱动信号,第一多路复用电路13可以将计算电路12a分别与存储模块11a和11b相连。
这里仅仅是一些示例。在实际应用中,可以按照人工智能芯片100的寄存器配置方式将第一驱动信号写入人工智能芯片100。
在一些实施例中,第一驱动信号携带表示第一数据在多个存储模块中的地址的地址信息。第一多路复用电路13可以对地址信息进行解码以得到第一数据在多个存储模块中的地址。然后,第一多路复用电路13可以从这一地址读取第一数据。
在第一数据被传输到第一组计算电路后,第一组计算电路可以对第一数据进行处理以执行任务。
上述实施例中,在确定执行任务需要的数据对应的存储模块和执行任务的计算电路后,向第一多路复用电路发送对应的驱动信号。如此,可以驱动第一多路复用电路准确地读取任务需要的数据,并将数据准确地传输至计算电路,从而可以使人工智能芯片准确地执行计算。
下面结合一些实施例进一步说明人工智能芯片100和人工智能芯片100的驱动方法。
在一些实施例中,第一多路复用电路13还可以被配置为响应于另一任务对应的另一第一驱动信号,读取第一组存储模块中的第一数据,并将第一数据传输到与另一第一驱动信号对应的第二组计算电路。
应理解,第二组计算电路与第一组计算电路不同。例如,第一组计算电路包括计算电路12a,而第二组计算电路包括计算电路12d。
例如,步骤110中的任务是神经网络算法模型的某一个计算层的计算,另一任务可以是这一神经网络算法模型中该计算层之前或之后的其他计算层的计算。
可以按照类似于图1B的方式向第一多路复用电路13发送另一任务对应的另一第一驱动信号。即,可以确定执行另一任务需要的第二组计算电路。类似地,另一任务包括第二组计算电路对应的至少一种类型的计算。然后,可以向第一多路复用电路13发送与第二组计算电路和第一组存储模块对应的另一第一驱动信号,以使得第一多路复用电路13读取第一数据并将第一数据传输到第二组计算电路。
上述实施例中,向第一多路复用电路13发送两个任务各自对应的第一驱动信号。如此,不同的第一组计算电路和第二组计算电路可以在没有进行数据搬运的情况下使用相同的第一数据,从而可以提高人工智能芯片的计算速度并降低人工智能芯片执行计算的功耗。
在一些实施例中,第一组计算电路包括按顺序执行计算的至少两个计算电路,并且,第一数据包括与至少两个计算电路一一对应地至少两组第一数据。
在这些实施例中,第一多路复用电路13还可以被配置为按照该顺序读取与至少两个计算电路一一对应地至少两组第一数据。
可以确定至少两个计算电路执行计算的顺序,并向第一多路复用电路13发送携带表示这一顺序的信息的第一驱动信号,以使得第一多路复用电路13按照这一顺序读取至少两组第一数据。
例如,第一组计算电路包括先后执行计算的计算电路12a和12b。计算电路12b需要对计算电路12a的计算结果进行处理。第一驱动信号携带的表示顺序的信息可以为例如,开始读取计算电路12a需要的一组数据的时刻A和开始读取计算电路12b需要的另一组数据的时刻B。时刻A和时刻B之间的时间间隔可以是计算电路12a完成至少部分计算需要的时长。可以基于计算电路12a要处理的数据量估计得到计算电路12a完成至少部分计算需要的时长。
上述实施例中,第一多路复用电路13按照第一组计算电路执行计算的顺序读取第一数据。如此,可以使计算电路按照数据流驱动的方式执行计算,以提高人工智能芯片的计算速度。
发明人还注意到,相关技术中,存储某种类型的数据的存储模块是固定的,即,存储该种类型的数据的可用容量也是固定的。这导致在某一存储模块的容量不足以存储对应的数据的情况下,这些数据需要被分批次地存储和计算。这进一步限制了人工智能芯片的计算速度。
然而,发明人发现,执行一个任务对应的计算仅仅需要少数几种类型的数据。换言之,在执行任务对应的计算时,仅仅利用了少数几个存储模块的存储空间,而浪费了其余存储模块的存储空间。有鉴于此,本公开还提供如下解决方案。
图2A是根据本公开另一些实施例的基于数据流的人工智能芯片的结构示意图。
如图2A所示,除多个存储模块、多个计算电路和第一多路复用电路13之外,人工智能芯片200还包括第二多路复用电路21。
第二多路复用电路21包括多个第二输入端和多个第二输出端212。
多个第二输入端包括与人工智能芯片200外的存储结构SS(例如,计算机的内存)连接的第一组第二输入端211a(图2A示意性地示出2个)。多个第二输出端212与多个存储模块一一对应地连接。
第二多路复用电路21被配置为响应于任务对应的第二驱动信号,读取存储结构SS中的第二数据,并将第二数据存储到与第二驱动信号对应的第二组存储模块。
这里,第二数据被包含在第一数据中,第二组存储模块被包含在第一组存储模块中。
例如,在开始执行任务之前,计算电路12a和12b执行计算需要的数据全部存储在存储结构SS中。通过向第二多路复用电路21发送第二驱动信号即可将这些数据作为第二数据存储到第二组存储模块(例如,存储模块11a和11b)中。在这些数据开始被存储到存储模块11a和11b后,向第一多路复用电路13发送与第一组存储模块(即,存储模块11a和11b)和第一组计算电路(即,计算电路12a和12b)对应的第一驱动信号即可将这些数据作为第一数据传输给计算电路12a和12b执行计算。
上述实施例中,与多个存储模块连接的第二多路复用电路根据驱动信号能够将一种类型的数据存储到任意的存储模块,而不再需要将一种类型的数据固定地存储到对应的存储模块。如此,可以更有效地利用多个存储模块的存储空间,改善数据需要被分批次地存储和计算的问题,从而可以进一步提高人工智能芯片的计算速度。
可以执行图2B所示的人工智能芯片的驱动方法以驱动人工智能芯片200。图2B是根据本公开一些实施例的基于数据流的人工智能芯片200的驱动方法的流程示意图。
如图2B所示,人工智能芯片200的驱动方法包括步骤210~步骤250。
在步骤210,确定存储存储结构中的第二数据中每种类型的数据需要的第一容量。
例如,存储结构SS中的第二数据为神经网络算法模型中当前任务需要的数据。可以基于神经网络算法模型的具体架构和输入该神经网络算法模型的数据量确定存储第二数据中每种类型的数据需要的第一容量。
以卷积计算为例,卷积计算需要的数据对应的类型包括例如,输入特征图数据(input featuremap data)和偏置(bias)数据。可以分别确定当前任务对应的输入特征图数据和偏置数据的长度,从而得到存储每种类型的数据需要的第一容量。
在步骤220,确定多个存储模块中空闲的第四组存储模块。
例如,可以确定该任务之后的其他任务是否还需要某一存储模块当前存储的数据。如果不再需要,则确定该存储模块空闲;如果需要,则确定该存储模块非空闲。
在步骤230,确定第四组存储模块中每个存储模块的第二容量。
在步骤240,根据第一容量和第二容量从第四组存储模块中确定第二数据对应的第二组存储模块。
可以分别确定第二数据中每种类型的数据对应的存储模块,以得到第二数据对应的第二组存储模块。
例如,第二数据包括输入特征图数据和偏置数据,存储输入特征图数据需要的容量为180,存储偏置数据需要的容量为120。第四组存储模块包括存储模块11a~d,它们的容量分别为50、80、100和200。可以确定输入特征图数据对应容量为200的存储模块11d,偏置数据对应容量为50和80的2个存储模块11a和11b。
在步骤250,向第二多路复用电路发送与第二组存储模块对应的第二驱动信号,以使得第二复用电路读取第二数据并将第二数据存储到第二组存储模块。
例如,可以经由第二多路复用电路21的信号输入端213(参见图2A)向第二多路复用电路21发送第二驱动信号。响应于第二驱动信号,第二多路复用电路21可以首先调整第一组第二输入端211a与多个第二输出端212之间的连接关系,以使得存储结构SS经由第二多路复用电路21与第二组存储模块相连。然后,第二多路复用电路21可以读取第二数据,并将第二数据传输到第二组存储模块。
在一些实施例中,第二驱动信号携带表示第二数据在存储结构SS中的地址的地址信息。第二多路复用电路21可以对地址信息进行解码以得到第二数据在存储结构SS中的地址。然后,第二多路复用电路21可以从这一地址读取第二数据。
在一些实施例中,第二驱动信号还携带表示第二数据中每种类型的数据对应的地址的信息。第二多路复用电路21可以根据这一信息将第二数据存储到对应的地址中。
上述实施例中,根据存储每种类型的数据需要的容量和空闲的存储模块的容量来确定数据对应的存储模块,并向第二多路复用电路发送对应的第二驱动信号。如此,可以驱动第二多路复用电路将数据灵活地存储到任何合适的空闲存储模块,以提升多个存储模块的存储空间的利用率,确保数据需要被分批次地存储和计算的问题能够得到改善。
下面结合一些实施例进一步说明人工智能芯片200和人工智能芯片200的驱动方法。
在一些实施例中,在第二数据中某一种类型的数据的第一容量大于第四组存储模块中每个存储模块的第二容量的情况下,可以确定该种类型的数据对应的至少两个存储模块。这里,确定的该种类型的数据对应的至少两个存储模块被包含在第二数据对应的第二组存储模块中。例如,可以向第二多路复用电路21发送对应的第二驱动信号,以使得第二多路复用电路21读取第二数据中该种类型的数据,并将该种类型的数据存储到确定的至少两个存储模块。
上述实施例中,在某一种数据大于每个空闲的存储模块的情况下,可以确定该种数据对应的多个存储模块并发送对应的驱动信号以使得第二多路复用电路将这些数据存储到确定的多个存储模块。后续在使用该种数据时再由第一多路复用电路从多个存储模块读取这些数据供计算电路一次完成计算。如此,可以进一步改善数据需要被分批次地存储和计算的问题,从而进一步提高了人工智能芯片的计算速度。
在一些实施例中,参见图2A,人工智能芯片200的第一多路复用电路13的多个第一输出端132还包括与存储结构SS连接的第二组第一输出端132b(图2A示意性地示出1个)。
在这些实施例中,第一多路复用电路13还可以被配置为响应于第三驱动信号,读取与第三驱动信号对应的第三组存储模块中的第三数据,并将第三数据存储到存储结构SS。这里,第三组存储模块中的至少一个被包含在第二组存储模块中。
例如,第一多路复用电路13可以在第二多路复用电路21接收第二驱动信号之前,接收第三驱动信号。又例如,第一多路复用电路13可以在第二多路复用电路21接收第二驱动信号的同时接收第三驱动信号,在这种情况下,第一多路复用电路13可以首先开始执行响应于第三驱动信号的操作,第二多路复用电路21可以稍后开始执行响应于第二驱动信号的操作。
如前所述,响应于第二驱动信号,第二多路复用电路21可以读取某一种类型的数据,并将该种类型的数据存储到例如,两个存储模块11c和11d。在这种情况下,第一多路复用电路13可以将这种类型的数据作为第三数据从这两个存储模块11c和11d一并读取出来,并存储到存储结构SS。换言之,两个存储模块11c和11d(即,第三组存储模块)的存储空间被一并释放。那么,在这种情况下,第二组存储模块可以仅包括一个存储模块11c或一个存储模块11d,或者,第二组存储模块可以同时包括两个存储模块11c和11d。
人工智能芯片200的驱动方法还包括如下步骤。
在确定第四组存储模块之前,首先确定多个存储模块中空闲的第五组存储模块。这里,第五组存储模块的总容量小于存储第二数据需要的总容量,或者,第五组存储模块中存储模块的数量小于第二数据中数据的类型的数量。
例如,第二数据包括输入特征图数据和偏置数据两种类型的数据,而第五组存储模块仅有1个存储模块11a。这意味着第五组存储模块中存储模块的数量小于第二数据中数据的类型的数量。
然后,确定任务之后的其他任务需要的第三数据对应的第三组存储模块(即,第三数据当前已被存储在人工智能芯片200的存储模块)。之后,向第一多路复用电路13发送与第三组存储模块对应的第三驱动信号,以使得第一多路复用电路13读取第三数据并将第三数据存储到存储结构SS。
在第三数据被存储到存储结构SS后,第三组存储模块由非空闲调整为空闲。换言之,第三组存储模块被包含在后续确定的空闲第四组存储模块中。例如,确定的第五组存储模块包括存储模块11a,第三组存储模块包括存储模块11b,则可以确定第四组存储模块包括存储模块11a和11b。如此,可以进一步改善数据需要被分批次地存储和计算的问题,从而可以更进一步地提高人工智能芯片的计算速度。
在一些实施例中,参见图2A,人工智能芯片200的第二多路复用电路21的多个第二输入端还包括与多个计算电路的输出端一一对应连接的第二组第二输入端211b。
在这些实施例中,第二多路复用电路21还可以被配置为响应于第四驱动信号,将一个计算电路的输出存储到与第四驱动信号对应的存储模块。
人工智能芯片200的驱动方法还包括如下步骤。
首先,可以确定存储正在执行计算的计算电路的输出需要的第三容量。然后,可以根据每个空闲的存储模块的第二容量和第三容量确定输出对应的存储模块。之后,可以向第二多路复用电路21发送与计算电路和存储模块对应的第四驱动信号,以使得第二多路复用电路21将输出存储到所确定的存储模块。
上述实施例中,计算电路的输出被存储到人工智能芯片的存储模块中,后续可以直接被其他任务使用。这既能够进一步提高人工智能芯片的计算速度,又能够进一步降低人工智能芯片访问存储结构的频率,从而进一步降低人工智能芯片执行计算的功耗。
应理解,本公开各种实施例并未对人工智能芯片100/200中多个存储模块的数量和容量进行限定,而是可以任意设置多个存储模块的数量和容量。
作为一些实现方式,可以对期望使用的多个机器学习算法模型的架构进行分析以得到每个机器学习算法模型需要使用的多种类型的数据和存储每种类型的数据需要容量。可以根据多个机器学习算法模型中各种类型的数据的使用频率和对应的容量来设置多个存储模块的数量和容量。如此,人工智能芯片100/200能够更好地满足实际使用需求。
作为又一些实现方式,由于存储某一任务需要的各种类型的数据的容量通常不相同,故,可以设置多个存储模块的容量不相同,从而可以将每种类型的数据存储到与该种类型的数据的长度更匹配的存储模块中。
例如,空闲的第四组存储模块包括存储模块11a~c,存储模块11a~c的容量分别为30、50、100。如果存储数据需要的容量为70,则可以将这些数据存储到容量为30和50这两个存储模块11a和11b,而不是将这些数据存储到容量为100的存储模块11c。
如此,可以进一步提高存储模块的利用率。这更进一步地改善了数据需要被分批次地存储和计算的问题,从而可以再进一步地提高人工智能芯片的计算速度。
图3是根据本公开一些实施例的基于数据流的人工智能芯片的驱动装置的结构示意图。
如图3所示,驱动装置300包括确定模块301和发送模块302。
确定模块301被配置为确定执行任务需要的第一组计算电路,任务包括第一组计算电路对应的至少一种类型的计算;确定执行任务需要的第一数据对应的第一组存储模块。
发送模块302被配置为向第一多路复用电路13发送与第一组计算电路和第一组存储模块对应的第一驱动信号,以使得第一多路复用电路13读取第一数据并将第一数据传输到第一组计算电路。
应理解,确定模块301和发送模块302还可以被配置为执行其他操作,以使得驱动装置300能够执行上述任意一个实施例的人工智能芯片100/200的驱动方法。
图4是根据本公开另一些实施例的基于数据流的人工智能芯片的驱动装置的结构示意图。
如图4所示,驱动装置400包括存储器401以及耦接至该存储器401的处理器402,处理器402被配置为基于存储在存储器401中的指令,执行上述任意一个实施例的驱动方法。
存储器401例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如可以存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
驱动装置400还可以包括输入输出接口403、网络接口404、存储接口405等。这些接口403、404、405之间、以及存储器401与处理器402之间例如可以通过总线406连接。输入输出接口403为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口404为各种联网设备提供连接接口。存储接口405为卡、U盘等外置存储设备提供连接接口。
图5是根据本公开一些实施例的人工智能加速器的结构示意图。
如图5所示,人工智能加速器包括上述任意一个实施例的基于数据流的人工智能芯片100/200和上述任意一个实施例的驱动装置300/400。
本公开实施例还提供了一种服务器,包括上述任意一个实施例的人工智能加速器。
本公开实施例还提供了一种计算机可读存储介质,包括计算机程序指令,该计算机程序指令被处理器执行时实现上述任意一个实施例的驱动方法。
本公开实施例还提供了一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现上述任意一个实施例的驱动方法。
至此,已经详细描述了本公开的各实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于驱动装置、人工智能加速器和服务器实施例而言,由于其与基于数据流的人工智能芯片及其驱动方法的实施例基本对应,所以描述的比较简单,相关之处参见人工智能芯片及其驱动方法的实施例的部分说明即可。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解,可由计算机程序指令实现流程图中一个流程或多个流程和/或方框图中一个方框或多个方框中指定的功能。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生被配置为实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供被配置为实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
Claims (20)
1.一种基于数据流的人工智能芯片,包括:
多个存储模块;
多个计算电路,不同计算电路被配置为执行机器学习算法模型中不同类型的计算;
第一多路复用电路,被配置为响应于任务对应的第一驱动信号,读取与所述第一驱动信号对应的第一组存储模块中的第一数据,并将所述第一数据传输到与所述第一驱动信号对应的第一组计算电路,所述第一多路复用电路包括:
多个第一输入端,与所述多个存储模块一一对应连接,和
多个第一输出端,包括与所述多个计算电路一一对应连接的第一组第一输出端。
2.根据权利要求1所述的人工智能芯片,其中,所述第一多路复用电路还被配置为:
响应于另一任务对应的另一第一驱动信号,读取所述第一组存储模块中的所述第一数据,并将所述第一数据传输到与所述另一第一驱动信号对应的第二组计算电路。
3.根据权利要求1或2所述的人工智能芯片,还包括:
第二多路复用电路,被配置为响应于所述任务对应的第二驱动信号,读取所述人工智能芯片外的存储结构中的第二数据,并将所述第二数据存储到与所述第二驱动信号对应的第二组存储模块,所述第二数据被包含在所述第一数据中,所述第二组存储模块被包含在所述第一组存储模块中,其中,所述第二多路复用电路包括:
多个第二输入端,包括与所述存储结构连接的第一组第二输入端,和
多个第二输出端,与所述多个存储模块一一对应连接。
4.根据权利要求3所述的人工智能芯片,其中,所述第二多路复用电路还被配置为:响应于所述第二驱动信号,读取所述第二数据中同一种类型的数据,并将所述同一种类型的数据存储到所述第二组存储模块中的至少两个存储模块。
5.根据权利要求3所述的人工智能芯片,其中,所述多个第一输出端还包括与所述存储结构连接的第二组第一输出端;
所述第一多路复用电路还被配置为:响应于第三驱动信号,读取与所述第三驱动信号对应的第三组存储模块中的第三数据,并将所述第三数据存储到所述存储结构;
其中,所述第三组存储模块中的至少一个被包含在所述第二组存储模块中。
6.根据权利要求3所述的人工智能芯片,其中,所述多个第二输入端还包括与所述多个计算电路的输出端一一对应连接的第二组第二输入端;
所述第二多路复用电路还被配置为:响应于第四驱动信号,将一个计算电路的输出存储到与所述第四驱动信号对应的存储模块。
7.根据权利要求1所述的人工智能芯片,其中,所述机器学习算法模型包括神经网络算法模型,所述任务为所述神经网络算法模型的多个计算层中的一个或连续的至少两个计算层的计算。
8.一种权利要求1-7任意一项所述的基于数据流的人工智能芯片的驱动方法,包括:
确定执行任务需要的第一组计算电路,所述任务包括所述第一组计算电路对应的至少一种类型的计算;
确定执行所述任务需要的第一数据对应的第一组存储模块;
向所述第一多路复用电路发送与所述第一组计算电路和所述第一组存储模块对应的第一驱动信号,以使得所述第一多路复用电路读取所述第一数据并将所述第一数据传输到所述第一组计算电路。
9.根据权利要求8所述的方法,还包括:
确定执行另一任务需要的第二组计算电路,所述另一任务包括所述第二组计算电路对应的至少一种类型的计算;
向所述第一多路复用电路发送与所述第二组计算电路和所述第一组存储模块对应的另一第一驱动信号,以使得所述第一多路复用电路读取所述第一数据并将所述第一数据传输到所述第二组计算电路。
10.根据权利要求8或9所述的方法,其中,所述人工智能芯片还包括第二多路复用电路,所述第二多路复用电路包括与所述人工智能芯片外的存储结构连接的第一组第二输入端、以及与所述多个存储模块一一对应连接的多个第二输出端;
所述方法还包括:
确定存储所述存储结构中的第二数据中每种类型的数据需要的第一容量,所述第二数据被包含在所述第一数据中;
确定所述多个存储模块中空闲的第四组存储模块;
确定所述第四组存储模块中每个存储模块的第二容量;
根据所述第一容量和所述第二容量从所述第四组存储模块中确定所述第二数据对应的第二组存储模块,所述第二组存储模块被包含在所述第一组存储模块中;
向所述第二多路复用电路发送与所述第二组存储模块对应的第二驱动信号,以使得所述第二多路复用电路读取所述第二数据并将所述第二数据存储到所述第二组存储模块。
11.根据权利要求10所述的方法,其中,根据所述第一容量和所述第二容量从所述第四组存储模块中确定所述第二数据对应的第二组存储模块包括:
在所述第二数据中某一种类型的数据的第一容量大于所述第四组存储模块中每个存储模块的第二容量的情况下,确定该种类型的数据对应的至少两个存储模块;
其中,所述第二组存储模块包括所述至少两个存储模块。
12.根据权利要求10所述的方法,其中,所述多个第一输出端还包括与所述存储结构连接的第二组第一输出端;
所述方法还包括:
在确定所述第四组存储模块之前,确定所述多个存储模块中空闲的第五组存储模块,其中,所述第五组存储模块的总容量小于存储所述第二数据需要的总容量,或者,所述第五组存储模块中存储模块的数量小于所述第二数据中数据的类型的数量;
确定所述任务之后的其他任务需要的第三数据对应的第三组存储模块;
向所述第一多路复用电路发送与所述第三组存储模块对应的第三驱动信号,以使得所述第一多路复用电路读取所述第三数据并将所述第三数据存储到所述存储结构。
13.根据权利要求10所述的方法,其中,所述多个第二输入端还包括与所述多个计算电路的输出端一一对应连接的第二组第二输入端;
所述方法还包括:
确定存储正在执行计算的计算电路的输出需要的第三容量;
根据所述第二容量和所述第三容量确定所述输出对应的存储模块;
向所述第二多路复用电路发送与所述计算电路和所述存储模块对应的第四驱动信号,以使得所述第二多路复用电路将所述输出存储到所述存储模块。
14.根据权利要求8所述的方法,其中,所述任务为神经网络算法模型的多个计算层中的一个或连续的至少两个计算层的计算。
15.一种权利要求1-7任意一项所述的基于数据流的人工智能芯片的驱动装置,包括:
确定模块,被配置为确定执行任务需要的第一组计算电路,所述任务包括所述第一组计算电路对应的至少一种类型的计算;确定执行所述任务需要的第一数据对应的第一组存储模块;
发送模块,被配置为向所述第一多路复用电路发送与所述第一组计算电路和所述第一组存储模块对应的第一驱动信号,以使得所述第一多路复用电路读取所述第一数据并将所述第一数据传输到所述第一组计算电路。
16.一种权利要求1-7任意一项所述的基于数据流的人工智能芯片的驱动装置,包括:
存储器;以及
耦接至所述存储器的处理器,被配置为基于存储在所述存储器中的指令,执行权利要求8-14任意一项所述的驱动方法。
17.一种人工智能加速器,包括:
权利要求1-7任意一项所述的基于数据流的人工智能芯片;和
权利要求15或16所述的驱动装置。
18.一种服务器,包括:
权利要求17所述的人工智能加速器。
19.一种计算机可读存储介质,包括计算机程序指令,其中,所述计算机程序指令被处理器执行时实现权利要求8-14任意一项所述的驱动方法。
20.一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现权利要求8-14任意一项所述的驱动方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111241462.9A CN116029386A (zh) | 2021-10-25 | 2021-10-25 | 基于数据流的人工智能芯片及其驱动方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111241462.9A CN116029386A (zh) | 2021-10-25 | 2021-10-25 | 基于数据流的人工智能芯片及其驱动方法、装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116029386A true CN116029386A (zh) | 2023-04-28 |
Family
ID=86074788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111241462.9A Pending CN116029386A (zh) | 2021-10-25 | 2021-10-25 | 基于数据流的人工智能芯片及其驱动方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116029386A (zh) |
-
2021
- 2021-10-25 CN CN202111241462.9A patent/CN116029386A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN110147251B (zh) | 用于计算神经网络模型的系统、芯片及计算方法 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
CN115880132A (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN110059809B (zh) | 一种计算装置及相关产品 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
CN111860773A (zh) | 处理装置和用于信息处理的方法 | |
CN116029386A (zh) | 基于数据流的人工智能芯片及其驱动方法、装置 | |
CN111078286A (zh) | 数据通信方法、计算系统和存储介质 | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
CN111340202B (zh) | 运算方法、装置及相关产品 | |
CN111382853B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
CN111381875B (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN111966399A (zh) | 指令处理方法、装置及相关产品 | |
CN111382855B (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN117291240B (zh) | 卷积神经网络加速器及电子设备 | |
TWI768497B (zh) | 智慧處理器、資料處理方法及儲存介質 | |
CN111222632B (zh) | 计算装置、计算方法及相关产品 | |
WO2020192587A1 (zh) | 人工智能计算装置及相关产品 | |
CN111723921B (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 |