CN111915014B - 人工智能指令的处理方法及装置、板卡、主板和电子设备 - Google Patents

人工智能指令的处理方法及装置、板卡、主板和电子设备 Download PDF

Info

Publication number
CN111915014B
CN111915014B CN201910390366.7A CN201910390366A CN111915014B CN 111915014 B CN111915014 B CN 111915014B CN 201910390366 A CN201910390366 A CN 201910390366A CN 111915014 B CN111915014 B CN 111915014B
Authority
CN
China
Prior art keywords
artificial intelligence
instruction sequence
intelligence instruction
current
sequence
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.)
Active
Application number
CN201910390366.7A
Other languages
English (en)
Other versions
CN111915014A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910390366.7A priority Critical patent/CN111915014B/zh
Priority to CN202310856968.3A priority patent/CN117077804A/zh
Publication of CN111915014A publication Critical patent/CN111915014A/zh
Application granted granted Critical
Publication of CN111915014B publication Critical patent/CN111915014B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Advance Control (AREA)

Abstract

本申请涉及一种人工智能指令的处理方法及装置、板卡、主板和电子设备,第一人工智能指令序列对应的操作、第二人工智能指令序列对应的操作以及第三人工智能指令序列对应的操作构成三级流水线技术,即,在同一时间,实现了并行执行不同中的人工智能指令序列对应的操作,故提高了数据处理的效率。

Description

人工智能指令的处理方法及装置、板卡、主板和电子设备
技术领域
本申请涉及人工智能技术领域,特别是涉及一种人工智能指令的处理方法及装置、板卡、主板和电子设备。
背景技术
近年来,随着人工智能技术的飞速发展,人工智能技术被广泛应用于图像、语言等各个领域。并且人工智能运算装置给人工智能运算提供了硬件支持,使得其能够更为高效地进行运算。
人工智能运算装置有专属的人工智能指令集,传统的人工智能指令的处理方式由于指令间存在相关性,因此人工智能指令只能串行执行,导致人工智能指令的处理时间过长,存在处理效率低下的问题。
发明内容
基于此,有必要针对上述传统的人工智能指令的处理方式存在处理效率低下的技术问题,提供一种人工智能指令的处理方法及装置、板卡、主板和电子设备。
一种人工智能指令的处理方法,所述方法包括:
获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作;
当检测到所述当前第一人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作;
在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
上述人工智能指令的处理方法,将具有指令相关性的第一人工智能指令序列和第二人工智能指令序列串行执行,即当前第一人工智能指令序列与当前第二人工智能指令序列串行执行,而将不具有指令相关性的第一人工智能指令序列和第二人工智能指令序列并行执行,即当前第一人工智能指令序列或当前第二人工智能指令序列与下一第一人工智能指令序列并行执行。这样,在同一时间段中,不同的人工智能指令序列可并行执行,消除了指令相关所带来的性能影响,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
一种人工智能指令的处理方法,所述方法包括:
获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作;
当检测到所述当前第一人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作;
当检测到所述当前第三人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作;
在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
上述人工智能指令的处理方法,将具有指令相关性的第一人工智能指令序列、第二人工智能指令序列和第三人工智能指令序列串行执行,即当前第一人工智能指令序列、当前第二人工智能指令序列和当前第三人工智能指令序列串行执行,而将不具有指令相关性的第一人工智能指令序列、第二人工智能指令序列和当前第三人工智能指令序列并行执行,即当前第一人工智能指令序列或当前第二人工智能指令序列或和当前第三人工智能指令序列与下一第一人工智能指令序列并行执行。这样,在同一时间段中,不同的人工智能指令序列可并行执行,消除了指令相关所带来的性能影响,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
一种人工智能指令的处理方法,所述方法包括:
获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作;
当检测到所述当前第一人工智能指令序列执行完成后,获取当前第四人工智能指令序列,并执行所述当前第四人工智能指令序列对应的第四操作;
当检测到所述当前第四人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作;
当检测到所述当前第三人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作;
在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
上述人工智能指令的处理方法,将具有指令相关性的人工智能指令序列串行执行,而将不具有指令相关性的人工智能指令序列并行执行。这样,在同一时间段中,不同的人工智能指令序列可并行执行,消除了指令相关所带来的性能影响,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
一种板卡,所述板卡包括:人工智能处理器,所述人工智能处理器用于执行上述任一所述的方法。
一种主板,所述主板包括:通用处理器和上述的板卡。
一种电子设备,所述电子设备包括上述的主板。
上述板卡、主板和电子设备,将具有指令相关性的人工智能指令序列串行执行,而将不具有指令相关性的人工智能指令序列并行执行。这样,在同一时间段中,不同的人工智能指令序列可并行执行,消除了指令相关所带来的性能影响,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
附图说明
图1为一个实施例中组合处理装置的结构示意图;
图2为一个实施例中人工智能指令的处理方法的流程示意图;
图3为一个实施例中第一操作与第二操作并行执行的流程示意图;
图4为一个实施例中数据加载操作与数据计算操作并行执行的流程示意图;
图5为另一个实施例中第一操作与第二操作并行执行的流程示意图;
图6为另一个实施例中数据加载操作与数据计算操作并行执行的流程示意图;
图7为另一个实施例中人工智能指令的处理方法的流程示意图;
图8为一个实施例中第一操作、第三操作与第二操作并行执行的流程示意图;
图9为一个实施例中数据加载操作、数据计算操作与数据存储操作并行执行的流程示意图;
图10为另一个实施例中第一操作、第三操作与第二操作并行执行的流程示意图;
图11为另一个实施例中数据加载操作、数据计算操作与数据存储操作并行执行的流程示意图;
图12为又一个实施例中数据加载操作、数据计算操作与数据存储操作并行执行的流程示意图;
图13为一个实施例中第一数据计算操作、第二数据计算操作与第三数据计算操作并行执行的流程示意图;
图14为又一个实施例中人工智能指令的处理方法的流程示意图;
图15为一个实施例中第一操作、第四操作、第三操作与第二操作并行执行的流程示意图;
图16为一个实施例中根据同步指令使不相关的人工智能指令序列并行执行的流程示意图;
图17为一个实施例中根据各数据在片上存储空间的占用时长对各数据进行分类存储的流程示意图;
图18为一个实施例中乒乓存储结构的结构示意图;
图19为一个实施例中人工智能数据的存储方法的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的人工智能指令的处理方法,可以应用于如图1所示的组合处理装置10。其中,该组合处理装置10包括人工智能运算装置102、通用互联接口104、其他处理装置106和存储装置108。人工智能运算装置102与其他处理装置106进行交互,共同完成用户指定的操作。存储装置108分别与人工智能运算装置102和其他处理装置106连接。
其他处理装置106,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置106所包括的处理器数量不做限制。其他处理装置106作为人工智能运算装置102与外部数据和控制的接口,包括数据搬运,完成对人工智能运算装置102的开启、停止等基本控制;其他处理装置106也可以和人工智能运算装置102协作共同完成运算任务。
通用互联接口104,用于在上述人工智能运算装置102与其他处理装置106间传输数据和控制指令。该人工智能运算装置102从其他处理装置106中获取所需的输入数据,写入人工智能运算装置102片上的存储单元;可以从其他处理装置106中获取控制指令,写入人工智能运算装置102片上的控制缓存;也可以读取人工智能运算装置102的存储模块中的数据并传输给其他处理装置106。
存储装置108,用于保存在人工智能运算装置102和其他处理装置106的数据,尤其适用于所需要运算的数据在人工智能运算装置102或其他处理装置106的内部存储中无法全部保存的数据。
可选地,当人工智能运算装置102的处理器的类型为IPU(IntelligenceProcessing Unit,智能处理器)时,该智能处理器包括一个主处理电路和多个从处理电路。可选地,在一个实施例中,智能处理器还包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
可选地,在另一个实施例中,所述智能处理器还包括一个或多个分支处理电路,每个分支处理电路连接至少一个从处理电路,所述主处理电路,具体用于确定所述输入神经元为广播数据,权值为分发数据块,将一个分发数据输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值广播数据以及运算指令;所述多个从处理电路,用于依据该运算指令对接收到的数据块以及广播数据权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
可选地,在又一个实施例中,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将一个输入数据分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一个实施例中,如图2所示,提供了一种人工智能指令的处理方法,以该方法应用于图1中的人工智能运算装置102为例进行说明,包括以下步骤:
S202,获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作。
在本实施例中,人工智能指令包括第一人工智能指令序列和第二人工智能指令序列。其中,人工智能指令序列是任意数量的人工智能指令以预设顺序拼接形成的线性的队列。可选地,人工智能指令序列包括0条、1条或多条人工智能指令。可选地,人工智能运算装置102可以从其他处理装置106中获取第一人工智能指令序列和第二人工智能指令序列。
需要说明,人工智能运算装置102正在执行的第一人工智能指令序列称为当前第一人工智能指令序列。可选地,第一人工智能指令序列的数量为多个,第二人工智能指令序列的数量也为多个。其中,串行执行的第一人工智能指令序列与第二人工智能指令序列存在指令相关的关系,不存在指令相关关系的第一人工智能指令序列与第二人工智能指令序列可并行执行。
具体地,人工智能运算装置102获取当前第一人工智能指令序列,并执行当前第一人工智能指令序列对应的第一操作。可选地,该第一操作包括数据加载操作、数据计算操作或数据存储操作。对应地,第一人工智能指令序列包括加载人工智能指令序列、计算人工智能指令序列或存储人工智能指令序列。其中,加载人工智能指令序列和存储人工智能指令序列也可以统称为IO人工智能指令序列。
S204,当检测到所述当前第一人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作。
需要说明,人工智能运算装置102正在执行的第二人工智能指令序列称为当前第二人工智能指令序列。其中,当前第一人工智能指令序列和当前第二人工智能指令序列存在指令相关的关系,因此,当前第一人工智能指令序列和当前第二人工智能指令序列的执行存在先后关系。
具体地,当人工智能运算装置102检测到当前第一人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行当前第二人工智能指令序列对应的第二操作。可选地,该第二操作包括数据加载操作、数据计算操作或数据存储操作。对应地,第二人工智能指令序列包括加载人工智能指令序列、计算人工智能指令序列或存储人工智能指令序列。
S206,在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
具体地,在当前第二人工智能指令序列执行完成之前,人工智能运算装置102获取下一第一人工智能指令序列,并执行下一第一人工智能指令序列对应的第一操作。
可选地,作为一种实施方式,人工智能运算装置102同步执行当前第一人工智能指令序列和下一第一人工智能指令序列。这样,人工智能运算装置102在同一时间段内并行处理人工智能指令,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
可选地,请参阅图3,作为另一种实施方式,人工智能运算装置102在当前第一人工智能指令序列执行完成后,并且在当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行下一第一人工智能指令序列对应的第一操作。可以看出,本实施方式将人工智能指令以阶梯式方式进行排列,并按照该阶梯式方式进行处理,使得在某一时间段内存在不同的人工智能指令序列并行处理,同样节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
请参阅图4,此处举个例子对上述实施方式进行详细说明。图4中的“L”表示数据加载操作,即load;“C”表示数据计算操作,即compute。具体地,人工智能运算装置102先根据加载人工智能指令序列执行数据加载操作,之后根据计算人工智能指令序列执行数据计算操作,并在执行数据计算操作的某个时刻,并行执行下一个的加载人工智能指令序列对应的数据加载操作,如此循环执行,直到所有的人工智能指令序列执行完毕或者接收到指令停止执行请求时停止。
需要清楚,上述实施方式中,“当前第一人工智能指令序列”与“下一第一人工智能指令序列”仅仅是根据其先后的执行顺序进行划分的,当“当前第一人工智能指令序列”执行完成后,接下来会执行“下一第一人工智能指令序列”,此时,该“下一第一人工智能指令序列”就是人工智能运算装置102正在执行的第一人工智能指令序列,即“当前第一人工智能指令序列”。这样,无论第一人工智能指令序列的数量为多少,其都会按照上述操作循环执行,达到一种流水式执行的效果。
上述人工智能指令的处理方法,将具有指令相关性的第一人工智能指令序列和第二人工智能指令序列串行执行,即当前第一人工智能指令序列与当前第二人工智能指令序列串行执行,而将不具有指令相关性的第一人工智能指令序列和第二人工智能指令序列并行执行,即当前第一人工智能指令序列或当前第二人工智能指令序列与下一第一人工智能指令序列并行执行。这样,在同一时间段中,不同的人工智能指令序列可并行执行,消除了指令相关所带来的性能影响,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
在一个实施例中,涉及所有的人工智能指令全部执行完成的具体过程。在上述实施例的基础上,该方法还包括以下步骤:
S208,当检测到所述下一第一人工智能指令序列执行完成后,获取下一第二人工智能指令序列,并执行所述下一第二人工智能指令序列对应的第二操作;
S210,在所述下一第二人工智能指令序列执行完成前,重复执行所述S202-S208,直到最后一个第二人工智能指令序列执行完成。
具体地,当第一人工智能指令序列和第二人工智能指令序列的数量都为多个时,人工智能运算装置102按照S202-S208的执行顺序不停地对第一人工智能指令序列和第二人工智能指令序列进行处理,直到最后一个第二人工智能指令序列执行完成。
可选地,当人工智能运算装置102接收到指令停止执行请求时,人工智能运算装置102会立即停止对第一人工智能指令序列和第二人工智能指令序列的执行。
在一个实施例中,请参阅图5,涉及人工智能指令以二级流水线的方式执行的具体过程。在上述实施例的基础上,S206包括如下步骤:
S2062,在获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作时,同步执行获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
具体地,当人工智能运算装置102检测到当前第一人工智能指令序列执行完成后,一方面获取当前第二人工智能指令序列,并执行当前第二人工智能指令序列对应的第二操作,另一方面获取下一第一人工智能指令序列,并执行下一第一人工智能指令序列对应的第一操作。这样,当前第二人工智能指令序列与下一第一人工智能指令序列同步执行,并且之后的第一人工智能指令序列与第二人工智能指令序列会按照二级流水线的方式执行,减少了人工智能指令执行的等待时间,提高了人工智能指令执行的效率。
请参阅图6,此处以第一人工智能指令序列为加载人工智能指令序列,第二人工智能指令序列为计算人工智能指令序列为例,对上述实施例进行详细说明。其中,每一人工智能指令序列对应的每一操作所占用的时间用一个时间片表示。在第一个时间片内,人工智能运算装置102首先获取当前加载人工智能指令序列,根据该当前加载人工智能指令序列获得输入数据。在第二个时间片内,人工智能运算装置102获取当前计算人工智能指令序列,对输入数据进行计算,得到输出结果,并且同步执行获取下一加载人工智能指令序列,根据该下一加载人工智能指令序列获得新的输入数据。在第三个时间片内,人工智能运算装置102重复第二个时间片内的人工智能指令序列的操作…如此按照二级流水线的方式执行人工智能指令序列,直到最后一个计算人工智能指令序列执行完成。
基于同一发明构思,请参阅图7,本申请还提供了一种人工智能指令的处理方法,以该方法应用于图1中的人工智能运算装置102为例进行说明,包括以下步骤:
S302,获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作。
具体地,S302同上述S202,在此不再进行赘述。
S304,当检测到所述当前第一人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作。
在上述实施例的基础上,本实施例中的人工智能指令还包括第三人工智能指令序列。
具体地,当人工智能运算装置102检测到当前第一人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行当前第三人工智能指令序列对应的第三操作。可选地,该第三操作包括数据加载操作、数据计算操作或数据存储操作。对应地,第三人工智能指令序列包括加载人工智能指令序列、计算人工智能指令序列或存储人工智能指令序列。
S306,当检测到所述当前第三人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作。
具体地,当人工智能运算装置102检测到当前第三人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行当前第二人工智能指令序列对应的第二操作。
S308,在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
具体地,S308同上述S206,在此不再进行赘述。
上述人工智能指令的处理方法,将具有指令相关性的第一人工智能指令序列、第二人工智能指令序列和第三人工智能指令序列串行执行,即当前第一人工智能指令序列、当前第二人工智能指令序列和当前第三人工智能指令序列串行执行,而将不具有指令相关性的第一人工智能指令序列、第二人工智能指令序列和当前第三人工智能指令序列并行执行,即当前第一人工智能指令序列或当前第二人工智能指令序列或和当前第三人工智能指令序列与下一第一人工智能指令序列并行执行。这样,在同一时间段中,不同的人工智能指令序列可并行执行,消除了指令相关所带来的性能影响,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
在一个实施例中,请参阅图8,涉及所有的人工智能指令全部执行完成的具体过程。在上述实施例的基础上,该方法还包括以下步骤:
S310,当检测到所述下一第一人工智能指令序列执行完成后,获取下一第三人工智能指令序列,并执行所述下一第三人工智能指令序列对应的第三操作;
S312,当检测到所述下一第三人工智能指令序列执行完成后,获取下一第二人工智能指令序列,并执行所述下一第二人工智能指令序列对应的第二操作;
S314,在所述下一第二人工智能指令序列执行完成前,重复执行所述S302-S314,直到最后一个第二人工智能指令序列执行完成。
具体地,当第一人工智能指令序列、第三人工智能指令序列和第二人工智能指令序列的数量都为多个时,人工智能运算装置102按照S302-S314的执行顺序不停地对第一人工智能指令序列、第三人工智能指令序列和第二人工智能指令序列进行处理,直到最后一个第二人工智能指令序列执行完成。
请参阅图9,此处举个例子对上述实施例进行详细说明。图8中的“L”为第一操作,表示数据加载操作,即load;“C”为第二操作,表示数据计算操作,即compute;“S”为第三操作,表示数据存储操作,即store。具体地,人工智能运算装置102先根据加载人工智能指令序列执行数据加载操作,再根据计算人工智能指令序列执行数据计算操作,之后根据存储人工智能指令序列执行数据存储操作,并在执行数据存储操作的某个时刻,并行执行下一个的加载人工智能指令序列对应的数据加载操作,如此循环执行,直到所有的人工智能指令序列执行完毕或者接收到指令停止执行请求时停止。
进一步地,在一个实施例中,如图10所示,在上述实施例的基础上,S308包括以下步骤:
S3081,在获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作时,同步执行获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
具体地,人工智能运算装置102同步执行当前第二操作与下一第一操作,且所有的当前第二操作与下一第一操作都是同步执行,进一步提高了人工智能指令的处理效率。
请参阅图11,此处举个例子对上述实施例进行详细说明。图11中的“L”为第一操作,表示数据加载操作,即load;“C”为第二操作,表示数据计算操作,即compute;“S”为第三操作,表示数据存储操作,即store。具体地,人工智能运算装置102先根据加载人工智能指令序列执行数据加载操作,再根据计算人工智能指令序列执行数据计算操作,之后根据存储人工智能指令序列执行数据存储操作,并在执行数据存储操作时,同步执行下一个的加载人工智能指令序列对应的数据加载操作,如此循环执行,直到所有的人工智能指令序列执行完毕或者接收到指令停止执行请求时停止。
在一个实施例中,涉及人工智能指令以三级流水线的方式执行的具体过程。在上述实施例的基础上,S308包括如下步骤:
S3082,在获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作时,同步执行获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作;
和/或,
S3084,在获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作时,同步执行获取上一第二人工智能指令序列,并执行所述上一第二人工智能指令序列对应的第二操作。
具体地,当人工智能运算装置102在获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作时,一方面同步执行获取下一第一人工智能指令序列,并执行下一第一人工智能指令序列对应的第一操作,另一方面同步执行获取上一第二人工智能指令序列,并执行所述上一第二人工智能指令序列对应的第二操作。这样,当前第三人工智能指令序列分别与上一第二人工智能指令序列以及下一第一人工智能指令序列同步执行,并且之后的第一人工智能指令序列、第三人工智能指令序列和第二人工智能指令序列会按照三级流水线的方式执行,减少了人工智能指令执行的等待时间,提高了人工智能指令执行的效率。
请参阅图12,在第一个时间片内,人工智能运算装置102首先获取当前加载人工智能指令序列,根据该当前加载人工智能指令序列获得输入数据。在第二个时间片内,人工智能运算装置102获取当前计算人工智能指令序列,对输入数据进行计算,得到输出结果,并且同步执行获取下一加载人工智能指令序列,根据该下一加载人工智能指令序列获得新的输入数据。在第三个时间片内,人工智能运算装置102获取当前存储人工智能指令序列,根据该当前存储人工智能指令序列对输出结果进行存储,并且同步执行下一计算人工智能指令序列对应的数据计算操作,与此同时,还同步执行之后的加载人工智能指令序列对应的数据加载操作,如此循环执行加载人工智能指令序列、计算人工智能指令序列以及存储人工智能指令序列,使得人工智能指令序列能够按照三级流水线的方式执行,直到最后一个存储人工智能指令序列执行完成。
需要清楚,图12所示的LCS的流水排布仅仅是以示例性的形式示出了其中一种排布情况,可以不局限于LCS三个部分,也可以以其他标准划分流水线,本申请对此并不做限定。例如还可以以SLC形式,将IO指令放在一起,也可以是CCC形式。请参阅图13,第一操作可对应于第一数据计算操作,即C1,第二操作可对应于第二数据计算操作,即C2,第三操作可对应于第三数据计算操作,即C3。C1、C2和C3按照三级流水线的方式执行,对应地,第一计算人工智能指令序列、第二人工智能指令序列和第三人工智能指令序列按照三级流水线的方式执行,从而提高人工智能运算的运算效率。
基于同一发明构思,本申请又提供了一种人工智能指令的处理方法,以该方法应用于图1中的人工智能运算装置102为例进行说明,包括以下步骤:
S402,获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作。
具体地,S402同上述S202,在此不再进行赘述。
S404,当检测到所述当前第一人工智能指令序列执行完成后,获取当前第四人工智能指令序列,并执行所述当前第四人工智能指令序列对应的第四操作。
在上述实施例的基础上,本实施例中的人工智能指令还包括第四人工智能指令序列。
具体地,当人工智能运算装置102检测到当前第一人工智能指令序列执行完成后,获取当前第四人工智能指令序列,并执行当前第四人工智能指令序列对应的第四操作。可选地,该第四操作包括数据加载操作、数据计算操作或数据存储操作。对应地,第四人工智能指令序列包括加载人工智能指令序列、计算人工智能指令序列或存储人工智能指令序列。
S406,当检测到所述当前第四人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作。
具体地,当人工智能运算装置102检测到当前第四人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行当前第三人工智能指令序列对应的第二操作。
S408,当检测到所述当前第三人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作。
具体地,S408同上述S306,在此不再进行赘述。
S410,在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
具体地,S410同上述S206,在此不再进行赘述。
上述人工智能指令的处理方法,将具有指令相关性的人工智能指令序列串行执行,而将不具有指令相关性的人工智能指令序列并行执行。这样,在同一时间段中,不同的人工智能指令序列可并行执行,消除了指令相关所带来的性能影响,节省了人工智能指令的处理时间,提高了人工智能指令的处理效率。
在一个实施例中,涉及所有的人工智能指令全部执行完成的具体过程。在上述实施例的基础上,该方法还包括以下步骤:
S412,当检测到所述下一第一人工智能指令序列执行完成后,获取下一第四人工智能指令序列,并执行所述下一第四人工智能指令序列对应的第四操作;
S414,当检测到所述下一第四人工智能指令序列执行完成后,获取下一第三人工智能指令序列,并执行所述下一第三人工智能指令序列对应的第三操作;
S416,当检测到所述下一第三人工智能指令序列执行完成后,获取下一第二人工智能指令序列,并执行所述下一第二人工智能指令序列对应的第二操作;
S418,在所述下一第二人工智能指令序列执行完成前,重复执行所述S402-S418,直到最后一个第二人工智能指令序列执行完成。
具体地,当第一人工智能指令序列、第四人工智能指令序列、第三人工智能指令序列和第二人工智能指令序列的数量都为多个时,人工智能运算装置102按照S402-S416的执行顺序不停地对第一人工智能指令序列、第四人工智能指令序列、第三人工智能指令序列和第二人工智能指令序列进行处理,直到最后一个第二人工智能指令序列执行完成。
在一个实施例中,请参阅图15,涉及人工智能指令以四级流水线的方式执行的具体过程。在上述实施例的基础上,S410包括如下步骤:
S4102,在获取当前第四人工智能指令序列,并执行所述当前第四人工智能指令序列对应的第四操作时,同步执行获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
具体地,人工智能运算装置102同步执行当前第四操作与下一第一操作,则所有的人工智能指令序列的执行顺序如图15所示,会存在不具有指令相关性的第一人工智能指令序列、第四人工智能指令序列、第三人工智能指令序列和第四人工智能指令序列同步执行,并且所有的当前第四操作与下一第一操作都是同步执行,进一步提高了人工智能指令的处理效率。
可选地,在一个实施例中,上述人工智能指令的处理方法可应用于机器学习领域。机器学习的数据处理过程具体可以包括:人工神经网络运算、支持向量机运算、k-近邻(k-nn)运算、k-均值(k-means)运算、主成分分析运算等等。可选地,在一个实施例中,第一人工智能指令序列包括第一机器学习指令序列,第二人工智能指令序列包括第二机器学习指令序列,第三人工智能指令序列包括第三机器学习指令序列。本申请的人工智能指令的处理方法可应用于机器学习技术领域,使得机器学习运算装置的指令顺序更加合理,消除指令相关带来的性能影响,使得执行更加高效,故提高了机器学习运算装置的数据处理的效率。
可选地,在一个实施例中,第一机器学习指令序列包括第一人工神经网络指令序列,第二机器学习指令序列包括第二人工神经网络指令序列,第三机器学习指令序列包括第三人工神经网络指令序列。本申请的人工智能指令的处理方法可应用于人工神经网络技术领域,使得人工神经网络运算装置的指令顺序更加合理,消除指令相关带来的性能影响,使得执行更加高效,故提高了人工神经网络运算装置的数据处理的效率。
进一步地,在一个实施例中,以人工智能运算装置102最常执行的加载-计算-存储的指令处理过程对本申请的人工智能指令的处理方法进行说明。其中,该方法包括:
S2002,获取当前第一人工智能指令序列,根据所述当前第一人工智能指令序列对当前初始数据进行加载。
需要清楚,由于人工智能运算装置所需要处理的数据流量巨大,因此,预先将总的待处理数据按实际需求划分为多批初始数据,这些不同批的初始数据分批次地在人工智能运算装置中进行数据处理。还需要清楚,当前初始数据可以指任一批的初始数据,其前一批的初始数据被确定为上一初始数据,其后一批的初始数据被确定为下一初始数据。对应地,当前第一人工智能指令序列与当前初始数据对应,上一第一人工智能指令序列与上一初始数据对应,下一第一人工智能指令序列与下一初始数据对应。
具体地,人工智能运算装置102可从存储装置108中获取当前第一人工智能指令序列,并根据该当前第一人工智能指令序列对当前初始数据进行加载。
可选地,初始数据可包括图像、音频或者文本等格式的数据。图像包括静态图片、组成视频的图片、视频等。音频包括人声音频、乐曲、噪声等。文本包括结构化文本、各种语言的文本字符等。可选地,初始数据为输入神经元数据。
S2004,获取当前第三人工智能指令序列,对所述当前初始数据执行所述当前第三人工智能指令序列对应的计算操作,得到当前最终结果。
具体地,人工智能运算装置102从存储装置108中获取当前第三人工智能指令序列,对上述当前初始数据执行该当前第三人工智能指令序列对应的计算操作,得到当前最终结果。
可选地,本申请中的“计算操作”可以是数据的结构转换运算、累加运算、乘积运算等等;也可以是卷积运算、全连接运算等等,只要是人工智能领域的计算操作,包括机器学习领域以及深度学习领域,都属于本申请的保护范围。
需要清楚,当前最终结果与当前初始数据对应,其前一批的最终结果被确定为上一最终结果,其后一批的最终结果被确定为下一最终结果。对应地,当前第三人工智能指令序列与当前最终结果对应,上一第三人工智能指令序列与上一最终结果对应,下一第三人工智能指令序列与下一最终结果对应。
S2006,获取当前第二人工智能指令序列,根据所述当前第二人工智能指令序列对所述当前最终结果进行存储;并且,在所述当前最终结果存储完成之前,获取下一第一人工智能指令序列,并根据所述下一第一人工智能指令序列对下一初始数据进行加载。
具体地,人工智能运算装置102从存储装置108中获取当前第二人工智能指令序列,根据该当前第二人工智能指令序列对所述当前最终结果进行存储。并且,人工智能运算装置在当前最终结果存储完成之前,获取下一第一人工智能指令序列,并根据下一第一人工智能指令序列对下一初始数据进行加载。
需要清楚,对应地,当前第二人工智能指令序列与当前最终结果对应,上一第二人工智能指令序列与上一最终结果对应,下一第二人工智能指令序列与下一最终结果对应。
可以理解,人工智能运算装置在根据当前人工智能指令序列对数据进行处理的过程中,并行执行根据其他人工智能指令序列对数据进行处理的过程。这样,通过对人工智能指令序列重新排布,并对数据流量巨大的人工智能数据进行划分,将原循环中存在相关的人工智能指令序列分隔到不同的循环体中,从而消除指令相关,使得人工智能指令序列可以如流水线一般运行。
上述人工智能指令的处理方法,首先获取当前第一人工智能指令序列,根据该当前第一人工智能指令序列对当前初始数据进行加载;之后获取当前第三人工智能指令序列,对当前初始数据执行当前第三人工智能指令序列对应的计算操作,得到当前最终结果;之后再获取当前第二人工智能指令序列,根据该当前第二人工智能指令序列对当前最终结果进行存储;并且,在当前最终结果存储完成之前,获取下一第一人工智能指令序列,并根据下一第一人工智能指令序列对下一初始数据进行加载。这样,存在关联性的人工智能指令串行执行,而不存在关联性的人工智能指令可并行执行,即在同一时间内,实现了并行执行不相关的人工智能指令序列对应的操作,节省了人工智能指令序列的数据处理时间。可以理解,本申请使得人工智能运算装置的指令顺序更加合理,消除指令相关带来的性能影响,使得执行更加高效,故提高了人工智能运算装置的数据处理的效率。
在一个实施例中,涉及所有的人工智能指令执行完成的具体过程。在上述实施例的基础上,S2006包括以下步骤:
在所述当前最终结果存储完成之前,获取下一第一人工智能指令序列,并根据所述下一第一人工智能指令序列对下一初始数据进行加载,直到最后一个初始数据对应的最后一个最终结果,根据最后一个第二人工智能指令序列完成存储。
具体地,人工智能运算装置102循环地执行上述S2002-S2006步骤,即不停的进行数据加载、数据运算以及数据存储的过程。直到人工智能运算装置102完成对最后一个最终结果,根据最后一个第二人工智能指令序列完成存储后,本申请的人工智能指令的处理方法运行结束。本实施例中,数据流量越大,人工智能运算装置的数据处理的效率越佳,且初始数据划分的越多,人工智能运算装置的数据处理的效率也越佳。
在一个实施例中,S2006还包括以下步骤:
在所述获取当前第三人工智能指令序列,对所述当前初始数据执行所述当前第三人工智能指令序列对应的计算操作时,获取下一第一人工智能指令序列,并根据所述下一第一人工智能指令序列对下一初始数据进行加载。
具体地,人工智能运算装置102在一个时间步内,并行执行获取当前第三人工智能指令序列,对所述当前初始数据执行所述当前第三人工智能指令序列对应的计算操作,以及获取下一第一人工智能指令序列,并根据所述下一第一人工智能指令序列对下一初始数据进行加载。其中,这里的“时间步”是指两个同步指令之间的人工智能指令执行所需的时间。其中,同步指令设置在数据相关的人工智能指令之间,用于对全部人工智能指令进行划分,得到多个时间步对应的人工智能指令,相邻时间步内的人工智能指令串行执行,各时间步内的人工智能指令并行执行。
可以理解,本实施例中通过同步指令将全部人工智能指令划分为不同的时间步内需要执行的人工智能指令。这样,保证人工智能指令的有序执行,进一步提高了人工智能运算装置的数据处理的效率。
进一步地,在上述实施例的基础上,该方法还包括以下步骤:
S2008,在所述获取当前第三人工智能指令序列,对所述当前初始数据执行所述当前第三人工智能指令序列对应的计算操作时,获取上一第二人工智能指令序列,并根据所述上一第二人工智能指令序列对上一最终结果进行存储。
其中,本实施例中,所述“当前”、所述“上一”、所述“下一”仅仅是为了区别不同批次的数据处理过程。其执行顺序为:先执行“上一”对应的数据处理过程,再执行“当前”对应的数据处理过程,最后执行“下一”对应的数据处理过程。
具体地,人工智能运算装置102在一个时间步内,并行执行获取当前第三人工智能指令序列,对所述当前初始数据执行所述当前第三人工智能指令序列对应的计算操作,以及获取下一第一人工智能指令序列,并根据所述下一第一人工智能指令序列对下一初始数据进行加载,以及获取上一第二人工智能指令序列,并根据所述上一第二人工智能指令序列对上一最终结果进行存储。
本实施例中,第一人工智能指令序列对应的加载操作、第三人工智能指令序列对应的计算操作以及第二人工智能指令序列对应的存储操作构成三级流水线技术,这样的人工智能指令序列的排布方式,使得人工智能指令序列的执行更加高效,更进一步地提高了人工智能运算装置的数据处理效率。尤其是在流水线填满步骤,其数据处理效率可以为非流水线的2-3倍。
作为一种可选的实施方式,人工智能运算装置102包括人工神经网络计算装置。人工神经网络计算装置需处理的数据流量巨大,因此对应的人工神经网络指令也数量极多。举例来说,通常可以把人工神经网络的指令分为IO指令和计算指令,IO指令又可以分为load和store阶段。而人工神经网络计算装置一般包含计算部件和IO部件,计算部件执行计算指令,IO部件执行IO指令。IO指令和计算指令可以并行发射执行,而IO指令和IO指令、计算指令和计算指令,一般需要串行发射执行。如果一条计算指令需要用到之前一条load指令加载的数据,那么它必须等待前面的IO指令执行完才能执行,这就是指令的相关。人工神经网络计算装置一般典型的计算过程,是把数据加载(load)到片上,对其进行计算,之后再存储(store)到片下。
上述第一人工神经网络指令序列对应的加载操作、第三人工神经网络指令序列对应的计算操作以及第二人工神经网络指令序列对应的存储操作构成三级流水线技术,即,在同一时间,实现了并行执行不同的人工神经网络指令序列对应的操作,尤其是在流水线填满步骤,其数据处理效率理论上为非流水线的2-3倍,本申请使得人工神经网络计算装置的指令顺序更加合理,消除指令相关带来的性能影响,使得执行更加高效,故提高了数据处理的效率。
在一个实施例中,该人工智能指令的处理方法应用于一种数据处理装置,该装置包括:
IO部件,用于获取当前第一人工智能指令序列,根据所述当前第一人工智能指令序列对当前初始数据进行加载;
计算部件,用于获取当前第三人工智能指令序列,对所述当前初始数据执行所述当前第三人工智能指令序列对应的计算操作,得到当前最终结果;
IO部件,还用于获取当前第二人工智能指令序列,根据所述当前第二人工智能指令序列对所述当前最终结果进行存储,并且,在所述当前最终结果存储完成之前,获取下一第一人工智能指令序列,并根据所述下一第一人工智能指令序列对下一初始数据进行加载。
上述数据处理装置,使得第一人工智能指令序列的执行时间与第二人工智能指令序列的执行时间之和等于第三人工智能指令序列的执行时间。实现了在保证现有硬件资源不变的情况下,缩短人工智能指令的执行时间,提高数据处理的效率。
可选地,在一个实施例中,请参阅图16,该方法还包括以下步骤:
S502,获取同步指令;
S504,根据所述同步指令,判断所述同步指令之前的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列是否执行完成;
S506,若判定执行完成,则允许所述同步指令之后的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列继续发射;
S508,若判定未执行完成,则阻止所述同步指令之后的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列继续发射,直到所述同步指令之前的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列执行完成。
其中,同步指令用于对人工智能指令进行划分,得到多个时间步内所要执行的人工智能指令序列;其中,相邻时间步内的人工智能指令序列串行执行,各时间步内的人工智能指令序列并行执行。
具体地,当人工智能运算装置102获取到同步指令时,首先根据该同步指令判断该同步指令之前的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列是否执行完成。若人工智能运算装置102判定执行完成,则允许该同步指令之后的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列继续发射;若人工智能运算装置102判定未执行完成,则阻止该同步指令之后的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列继续发射,直到该同步指令之前的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列执行完成。
本实施例中,通过同步指令来保证并行执行的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列在同一个时间步内执行,即所述第一人工智能指令序列的执行时间等于所述第二人工智能指令序列的执行时间等于所述第三人工智能指令序列的执行时间,保证了数据的有效处理,进一步提高了数据处理的效率。
在一个实施例中,涉及人工智能运算装置将不同批的数据依次循环地存储至多个存储空间中的具体过程。在上述实施例的基础上,该方法还包括以下步骤:
S602,获取多个存储空间的状态;
S604,若所述多个存储空间中存在空闲状态的第一存储空间,则将串行执行的第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据中的至少一个存储至同一个所述第一存储空间中;
S606,依次将并行执行的第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据中的至少一个对应地存储至不同的所述第一存储空间中;
S608,在所述第一存储空间被存储数据后,所述第一存储空间的状态被更新为占用状态。
需要清楚,存储空间的状态包括空闲状态和占用状态,其中,空闲状态是指未存储数据的状态,占用状态是指存储有数据的状态。可选地,存储空间的状态可用状态标识进行区分。
可选地,结合上述实施例,以第一操作为数据加载操作,第三操作为数据计算操作,第二操作为数据存储操作为例对本实施例进行说明。具体地,人工智能运算装置102在进行人工智能数据的数据处理过程时,分别将每次需要输入的数据和获得的数据存储在人工智能运算装置中的存储单元中,即片上缓存中,这样,节省了数据传输的时间,提高数据传输的效率。例如,假设存储空间的数量为3个,一开始这3个存储空间中的内容均无效,即空闲状态,其不能被使用;然后在其中一个存储空间中存储上一初始数据以及上一最终结果中的至少一种,在被存储数据后,该存储空间变为占用状态;之后,在另一个存储空间中存储当前初始数据以及当前最终结果中的至少一种,使另一个存储空间变为占用状态,之后,第三个存储空间也被存储下一初始数据以及下一最终结果中的至少一种。与此同时,一旦这3个存储空间内存储的数据被全部读出后,这3个存储空间再次获取其它批的人工智能数据,依次循环,直到所有的人工智能数据被处理完。需要清楚,存储空间的数量也可以为5个,20个,甚至更多,本实施例对此并不做限定。
作为一种实施方式,在存储空间变为占用状态之后,直到此存储空间中的数据被后续指令使用完成后,该存储空间再次变为空闲状态。所述的后续指令使用此存储空间中的数据后,生成的新的中间结果或最终结果,存储至另一空闲的存储空间中,但视具体情况而定,也可能就原地存储至此存储空间,此存储空间依然保持被占用状态。
进一步地,在一个实施例中,所述存储空间的数量为两个,所述两个存储空间用于完成乒乓存储操作。在上述实施例的基础上,则S606包括以下步骤:
S6062,当所述存储空间的数量为两个时,依次循环地将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据中的至少一个对应地存储至所述两个存储空间的第一存储空间中。
具体地,两个存储空间构成乒乓存储结构,可选地,乒乓存储结构的存储空间的工作方式可以为:乒乓存储结构的两个存储空间交替地被读(即读取人工智能数据)和被写(即存储人工智能数据)。读写的过程在两个存储空间之间交替进行。一开始两个存储空间中的内容均无效,即空闲状态,其不能被读;然后在其中一个存储空间(多是乒结构的存储空间先被写)中存储上一人工智能数据,该人工智能数据包括初始数据以及最终结果的至少一种,完毕后该存储空间变为占用状态;然后在另一个存储空间中存储下一人工智能数据使另一个存储空间变为占用状态,与此同时,可以从上述其中一个存储空间中读取上一人工智能数据,读完后该存储空间变成空闲状态,其又可以存储其他人工智能数据;之后,上述另一个存储空间中的下一人工智能数据被读,该存储空间也变为空闲状态,如此循环……由此可见对于每个存储空间来说,可能的状态有四种并按如下顺序循环往复地转换:可读=>在读=>可写=>在写=>可读=>……
更进一步地,在一个实施例中,结合上一个实施例,请参阅图17,该人工智能指令的处理方法还包括以下步骤:
S612,获取所述第一操作得到的第一数据、所述第二操作得到的第二数据以及所述第三操作得到的第三数据分别在所述存储空间的各占用时长;
S614,根据所述各占用时长的大小,以从大到小的顺序将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据依次对应地存储至所述乒乓存储结构的两端至中间。
具体地,在上述实施例的基础上,人工智能运算装置在将初始数据、中间结果以及最终结果的过程中,会获取初始数据、中间结果以及最终结果分别在存储空间的各占用时长,即初始数据、中间结果以及最终结果在存储空间内存储的时间。一般而言,初始数据以及最终结果在存储空间内的占用时间较长,而中间结果相对于初始数据以及最终结果所占用的时间较少。进而人工智能运算装置根据各占用时长的大小,以从大到小的顺序将不同批的初始数据、中间结果以及最终结果依次对应地放置于乒乓存储结构的两端至中间。
举个例子,请参阅图18,“乒”存储空间与“乓”存储空间共同构成乒乓存储结构,其中,在“乒”存储空间与“乓”存储空间各划分出4块预设区域,其中,各第一预设区域放置占用时间最长的数据,各第二预设区域放置占用时间第二长的数据,各第三预设区域放置占用时间第三长的数据,各第四预设区域放置占用时间最少的数据。假设各数据占用时长顺序为:最终结果〉初始数据〉第一中间结果〉第二中间结果,其中,在人工智能领域,通常会有多个中间结果产生,本实施例以最简单的第一中间结果和第二中间结果为例进行说明,则对应地将最终结果放置于第一预设区域,初始数据放置于第二预设区域,第一中间结果放置于第三预设区域,第二中间结果放置于第四预设区域。这样的排布方式,可以减少片上存储空间碎片的出现。
在一个实施例中,还提供了一种人工智能数据的存储方法,请参阅图19,所述方法包括以下步骤:
S702,获取所述乒乓缓存中空闲的存储空间,确定为可用存储空间,其中,所述乒乓缓存依次循环地对所述人工智能数据进行存储。
具体地,以人工智能数据包括神经网络数据为例,神经网络数据包括输入神经元数据、输出神经元数据以及中间数据。该中间数据可以是多层神经网络模型中每一层人工神经网络的运算结果,其可以是神经元数据,可以是神经网络对应的权值数据。
S704,获取所述人工智能数据中的输入数据、输出数据以及中间数据分别在所述可用存储空间的各占用时长。
具体地,再次以神经网络数据为例,该占用时长为输入神经元数据、输出神经元数据以及中间数据在可用存储空间中存储的时间。其中,上述实施例涉及的初始数据可以是输入神经元数据,上述实施例涉及的最终结果可以是输出神经元数据,上述实施例涉及的中间结果可以作为中间数据。
S706,根据所述各占用时长,将所述输入数据、输出数据以及中间数据分别放置于所述可用存储空间的不同预设位置,其中,所述可用存储空间被存储至数据后,所述可用存储空间的状态被更新为占用状态。
具体地,再次以神经网络数据为例,可用存储空间被预先划分为多个不同的预设位置,每个预设位置与各占用时长关联,这样,在得到输入神经元数据、输出神经元数据以及中间数据分别在可用存储空间的各占用时长后,根据各占用时长可将不同的数据进行分类放置。
通过采用乒乓缓存来存储输入神经元数据、输出神经元数据以及中间数据,可以提高神经网络数据存储至、读取的效率,进而提升神经网络数据的处理效率。
进一步地,在一个实施例中,S706还包括以下步骤:
将占用时长最多的数据放置于所述可用存储空间的第一预设位置,将占用时长第二多的数据放置于所述可用存储空间的第二预设位置,将占用时长最少的数据放置于所述可用存储空间的第三预设位置,其中,所述第一预设位置与所述第三预设位置分别位于所述第二预设位置的两侧。
具体地,第一预设位置放置占用时间最长的数据,第二预设位置放置占用时间第二长的数据,第三预设位置放置占用时间最少的数据,假设各数据占用时长顺序为:输出神经元数据〉输入神经元数据〉中间数据,则对应地将输出神经元数据放置于第一预设位置,输入神经元数据放置于第二预设位置,中间结果放置于第三预设位置。这样的排布方式,可以减少片上存储空间碎片的出现。需要清楚,上述对各数据的排布方式仅仅是以示例性的形式示出了其中一种排布情况,本申请还可以以其他标准对各数据进行排布,本申请对此并不做限定。
需要清楚,预设位置的数量也可以为更多个,例如4个、5个,预设位置的数量可根据实际需求进行设定。设置更多的预设位置更有助于对不同类型数据的分组存储,进一步保证数据的准确性。
在一个实施例中,还提供了一种板卡,所述板卡包括:人工智能处理器,所述人工智能处理器用于执行上述任一实施例所述的人工智能指令的处理方法。
在一个实施例中,还提供了一种主板,所述主板包括:通用处理器和上述板卡。
在一个实施例中,还提供了一种电子设备,所述电子设备上述主板。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (23)

1.一种人工智能指令的处理方法,其特征在于,所述方法应用于人工智能运算装置,所述方法包括:
S202,获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作;
S204,当检测到所述当前第一人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作;
S206,在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作;
其中,当前第一人工智能指令序列和当前第二人工智能指令序列具有指令相关性,当前第一人工智能指令序列或当前第二人工智能指令序列与下一第一人工智能指令序列不具有指令相关性;
S602,获取多个存储空间的状态;所述存储空间为片上缓存;
S604,若所述多个存储空间中存在空闲状态的第一存储空间,则将串行执行的第一操作得到的第一数据、第二操作得到的第二数据中的至少一个存储至同一个所述第一存储空间中;
S606,依次将并行执行的第一操作得到的第一数据、第二操作得到的第二数据中的至少一个对应地存储至不同的所述第一存储空间中;
S608,在所述第一存储空间被存储数据后,所述第一存储空间的状态被更新为占用状态。
2.根据权利要求1所述的方法,其特征在于,所述存储空间的数量为两个,所述两个存储空间用于完成乒乓存储操作;S606包括:
S6062,当所述存储空间的数量为两个时,依次循环地将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据中的至少一个对应地存储至所述两个存储空间的第一存储空间中。
3.根据权利要求2所述的方法,其特征在于,所述两个存储空间构成乒乓存储结构,所述方法还包括:
S612,获取所述第一操作得到的第一数据、所述第二操作得到的第二数据分别在所述存储空间的各占用时长;
S614,根据所述各占用时长的大小,以从大到小的顺序将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据依次对应地存储至所述乒乓存储结构的两端至中间。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
S208,当检测到所述下一第一人工智能指令序列执行完成后,获取下一第二人工智能指令序列,并执行所述下一第二人工智能指令序列对应的第二操作;
S210,在所述下一第二人工智能指令序列执行完成前,重复执行所述S202-S208,直到最后一个第二人工智能指令序列执行完成。
5.根据权利要求1所述的方法,其特征在于,S206包括:
S2062,在获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作时,同步执行获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
6.一种人工智能指令的处理方法,其特征在于,所述方法应用于人工智能运算装置,所述方法包括:
S302,获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作;
S304,当检测到所述当前第一人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作;
S306,当检测到所述当前第三人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作;
S308,在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作;
其中,当前第一人工智能指令序列、当前第二人工智能指令序列和当前第三人工智能指令序列具有指令相关性;当前第一人工智能指令序列或当前第二人工智能指令序列或当前第三人工智能指令序列与下一第一人工智能指令序列不具有指令相关性;
S602,获取多个存储空间的状态;所述存储空间为片上缓存;
S604,若所述多个存储空间中存在空闲状态的第一存储空间,则将串行执行的第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据中的至少一个存储至同一个所述第一存储空间中;
S606,依次将并行执行的第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据中的至少一个对应地存储至不同的所述第一存储空间中;
S608,在所述第一存储空间被存储数据后,所述第一存储空间的状态被更新为占用状态。
7.根据权利要求6所述的方法,其特征在于,所述存储空间的数量为两个,所述两个存储空间用于完成乒乓存储操作;S606包括:
S6062,当所述存储空间的数量为两个时,依次循环地将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据中的至少一个对应地存储至所述两个存储空间的第一存储空间中。
8.根据权利要求7所述的方法,其特征在于,所述两个存储空间构成乒乓存储结构,所述方法还包括:
S612,获取所述第一操作得到的第一数据、所述第二操作得到的第二数据以及所述第三操作得到的第三数据分别在所述存储空间的各占用时长;
S614,根据所述各占用时长的大小,以从大到小的顺序将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据以及第三操作得到的第三数据依次对应地存储至所述乒乓存储结构的两端至中间。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
S310,当检测到所述下一第一人工智能指令序列执行完成后,获取下一第三人工智能指令序列,并执行所述下一第三人工智能指令序列对应的第三操作;
S312,当检测到所述下一第三人工智能指令序列执行完成后,获取下一第二人工智能指令序列,并执行所述下一第二人工智能指令序列对应的第二操作;
S314,在所述下一第二人工智能指令序列执行完成前,重复执行所述S302-S312,直到最后一个第二人工智能指令序列执行完成。
10.根据权利要求6所述的方法,其特征在于,S308包括:
S3082,在获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作时,同步执行获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作;
和/或,
S3084,在获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作时,同步执行获取上一第二人工智能指令序列,并执行所述上一第二人工智能指令序列对应的第二操作。
11.根据权利要求6-10任一所述的方法,其特征在于,第一人工智能指令序列包括第一机器学习指令序列,第二人工智能指令序列包括第二机器学习指令序列,第三人工智能指令序列包括第三机器学习指令序列。
12.根据权利要求11所述的方法,其特征在于,所述第一机器学习指令序列包括第一人工神经网络指令序列,所述第二机器学习指令序列包括第二人工神经网络指令序列,所述第三机器学习指令序列包括第三人工神经网络指令序列。
13.根据权利要求6-10任一所述的方法,其特征在于,所述方法还包括:
S502,获取同步指令;
S504,根据所述同步指令,判断所述同步指令之前的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列是否执行完成;
S506,若判定执行完成,则允许所述同步指令之后的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列继续发射;
S508,若判定未执行完成,则阻止所述同步指令之后的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列继续发射,直到所述同步指令之前的第一人工智能指令序列、第二人工智能指令序列和/或第三人工智能指令序列执行完成。
14.根据权利要求13所述的方法,其特征在于,所述同步指令用于对所述人工智能指令进行划分,得到多个时间步内所要执行的人工智能指令序列;其中,相邻时间步内的人工智能指令序列串行执行,各时间步内的人工智能指令序列并行执行。
15.一种人工智能指令的处理方法,其特征在于,所述方法应用于人工智能运算装置,所述方法包括:
S402,获取当前第一人工智能指令序列,并执行所述当前第一人工智能指令序列对应的第一操作;
S404,当检测到所述当前第一人工智能指令序列执行完成后,获取当前第四人工智能指令序列,并执行所述当前第四人工智能指令序列对应的第四操作;
S406,当检测到所述当前第四人工智能指令序列执行完成后,获取当前第三人工智能指令序列,并执行所述当前第三人工智能指令序列对应的第三操作;
S408,当检测到所述当前第三人工智能指令序列执行完成后,获取当前第二人工智能指令序列,并执行所述当前第二人工智能指令序列对应的第二操作;
S410,在所述当前第二人工智能指令序列执行完成前,获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作;其中,当前第一人工智能指令序列、当前第二人工智能指令序列、当前第三人工智能指令序列和当前第四人工智能指令具有指令相关性;当前第一人工智能指令序列或当前第二人工智能指令序列或当前第三人工智能指令序列或当前第四人工智能指令序列与下一第一人工智能指令序列不具有指令相关性;
S602,获取多个存储空间的状态;所述存储空间为片上缓存;
S604,若所述多个存储空间中存在空闲状态的第一存储空间,则将串行执行的第一操作得到的第一数据、第二操作得到的第二数据、第三操作得到的第三数据以及第四操作得到的第四数据中的至少一个存储至同一个所述第一存储空间中;
S606,依次将并行执行的第一操作得到的第一数据、第二操作得到的第二数据、第三操作得到的第三数据以及第四操作得到的第四数据中的至少一个对应地存储至不同的所述第一存储空间中;
S608,在所述第一存储空间被存储数据后,所述第一存储空间的状态被更新为占用状态。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
S412,当检测到所述下一第一人工智能指令序列执行完成后,获取下一第四人工智能指令序列,并执行所述下一第四人工智能指令序列对应的第四操作;
S414,当检测到所述下一第四人工智能指令序列执行完成后,获取下一第三人工智能指令序列,并执行所述下一第三人工智能指令序列对应的第三操作;
S416,当检测到所述下一第三人工智能指令序列执行完成后,获取下一第二人工智能指令序列,并执行所述下一第二人工智能指令序列对应的第二操作;
S418,在所述下一第二人工智能指令序列执行完成前,重复执行所述S402-S416,直到最后一个第二人工智能指令序列执行完成。
17.根据权利要求15所述的方法,其特征在于,S410包括:
S4102,在获取当前第四人工智能指令序列,并执行所述当前第四人工智能指令序列对应的第四操作时,同步执行获取下一第一人工智能指令序列,并执行所述下一第一人工智能指令序列对应的第一操作。
18.根据权利要求15-17任一所述的方法,其特征在于,所述第一操作包括数据加载操作、数据计算操作或数据存储操作;
和/或,所述第二操作包括数据加载操作、数据计算操作或数据存储操作;
和/或,所述第三操作包括数据加载操作、数据计算操作或数据存储操作;
和/或,所述第四操作包括数据加载操作、数据计算操作或数据存储操作。
19.根据权利要求11所述的方法,其特征在于,所述存储空间的数量为两个,所述两个存储空间用于完成乒乓存储操作;S606包括:
S6062,当所述存储空间的数量为两个时,依次循环地将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据、第三操作得到的第三数据以及第四操作得到的第四数据中的至少一个对应地存储至所述两个存储空间的第一存储空间中。
20.根据权利要求19所述的方法,其特征在于,所述两个存储空间构成乒乓存储结构,所述方法还包括:
S612,获取所述第一操作得到的第一数据、所述第二操作得到的第二数据、所述第三操作得到的第三数据以及第四操作得到的第四数据分别在所述存储空间的各占用时长;
S614,根据所述各占用时长的大小,以从大到小的顺序将并行执行的所述第一操作得到的第一数据、第二操作得到的第二数据、第三操作得到的第三数据以及第四操作得到的第四数据依次对应地存储至所述乒乓存储结构的两端至中间。
21.一种板卡,其特征在于,所述板卡包括:人工智能处理器,所述人工智能处理器用于执行如权利要求1-20任一所述的方法。
22.一种主板,其特征在于,所述主板包括:通用处理器和如权利要求21所述的板卡。
23.一种电子设备,其特征在于,所述电子设备包括如权利要求22所述的主板。
CN201910390366.7A 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡、主板和电子设备 Active CN111915014B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910390366.7A CN111915014B (zh) 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡、主板和电子设备
CN202310856968.3A CN117077804A (zh) 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910390366.7A CN111915014B (zh) 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡、主板和电子设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310856968.3A Division CN117077804A (zh) 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡和电子设备

Publications (2)

Publication Number Publication Date
CN111915014A CN111915014A (zh) 2020-11-10
CN111915014B true CN111915014B (zh) 2023-07-21

Family

ID=73242942

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910390366.7A Active CN111915014B (zh) 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡、主板和电子设备
CN202310856968.3A Pending CN117077804A (zh) 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡和电子设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310856968.3A Pending CN117077804A (zh) 2019-05-10 2019-05-10 人工智能指令的处理方法及装置、板卡和电子设备

Country Status (1)

Country Link
CN (2) CN111915014B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109711539A (zh) * 2018-12-17 2019-05-03 北京中科寒武纪科技有限公司 运算方法、装置及相关产品

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US7437544B2 (en) * 2005-04-29 2008-10-14 Arm Limited Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
JP6558037B2 (ja) * 2015-04-10 2019-08-14 富士通株式会社 運用管理プログラム、運用管理方法、および運用管理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109711539A (zh) * 2018-12-17 2019-05-03 北京中科寒武纪科技有限公司 运算方法、装置及相关产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
处理器流水线冒险及其解决策略;李云飞等;《信息技术与信息化》;20181125(第11期);第40-43页 *

Also Published As

Publication number Publication date
CN111915014A (zh) 2020-11-10
CN117077804A (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
CN109657782B (zh) 运算方法、装置及相关产品
CN109426484B (zh) 一种数据排序装置、方法及芯片
EP2565786A1 (en) Information processing device and task switching method
CN111338695A (zh) 基于流水线技术的数据处理方法及相关产品
US9965343B2 (en) System and method for determining concurrency factors for dispatch size of parallel processor kernels
CN112686379A (zh) 集成电路装置、电子设备、板卡和计算方法
CN115860066A (zh) 一种基于批处理的神经网络推理流水线复用的方法
JP4310500B2 (ja) 重要成分優先計算方式ならびに装置
CN111915014B (zh) 人工智能指令的处理方法及装置、板卡、主板和电子设备
US11200056B2 (en) Parallel union control device, parallel union control method, and storage medium
CN111191774B (zh) 面向精简卷积神经网络的低代价加速器架构及其处理方法
CN111158757A (zh) 并行存取装置和方法以及芯片
CN115543254A (zh) 一种排序电路、排序方法及电子设备
CN113222136A (zh) 卷积运算方法及芯片
CN111260043A (zh) 数据选择器、数据处理方法、芯片及电子设备
CN112463218B (zh) 指令发射控制方法及电路、数据处理方法及电路
CN112100446B (zh) 搜索方法、可读存储介质和电子设备
CN115130672A (zh) 一种软硬件协同优化卷积神经网络计算的方法及装置
CN112257870B (zh) 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN114356512A (zh) 一种数据处理方法、设备以及计算机可读存储介质
CN113448962B (zh) 数据库数据管理方法和装置
CN109948785B (zh) 一种高效的神经网络电路系统和方法
CN117785480B (zh) 处理器、归约计算方法及电子设备
CN112464157B (zh) 向量排序方法与排序系统
CN117473212B (zh) Ntt算法的gpu加速方法、装置、设备及存储介质

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