首页 / 专利库 / 人工智能 / 人工智能 / 通用人工智能 / 人工智能芯片以及用于人工智能芯片的指令执行方法

人工智能芯片以及用于人工智能芯片的指令执行方法

阅读:944发布:2020-05-18

专利汇可以提供人工智能芯片以及用于人工智能芯片的指令执行方法专利检索,专利查询,专利分析的服务。并且本 申请 实施例 公开了 人工智能 芯片以及用于人工 智能芯片 的指令执行方法。该人工智能芯片的一具体实施方式包括:指令 存储器 、数据存储器、至少一个通用执行部件和至少一个专用执行部件;指令存储器被配置成:接收包括至少一个代码 块 的 内核 代码;通用执行部件被配置成:接收代码块, 锁 定与所接收的代码块相关联的专用执行部件,以及将所接收的代码块中的指令发送到所锁定的专用执行部件;专用执行部件被配置成:执行所接收的指令,以及将执行结果存储在数据存储器中;数据存储器被配置成存储专用执行部件发送的执行结果。该实施方式避免在内核代码执行期间与CPU频繁通信,并且避免频繁加锁/解锁专用执行部件,提高了人工智能芯片的性能。,下面是人工智能芯片以及用于人工智能芯片的指令执行方法专利的具体信息内容。

1.一种人工智能芯片,包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件;
指令存储器被配置成:接收中央处理单元发送的内核代码,所述内核代码包括至少一个代码,所述至少一个代码块中的代码块与通用执行部件和专用执行部件相关联;
通用执行部件被配置成:接收代码块,定与所接收的代码块相关联的专用执行部件,以及将所接收的代码块中的指令发送到所锁定的专用执行部件;
专用执行部件被配置成:接收通用执行部件发送的指令,执行所接收的指令,以及将执行结果存储在数据存储器中;
数据存储器被配置成存储专用执行部件发送的执行结果。
2.根据权利要求1所述的人工智能芯片,其中,所述至少一个代码块中的代码块包括第一指令和第二指令集合;以及
通用执行部件具体被配置成:
响应于接收到代码块,执行第一指令,以锁定与所接收的代码块相关联的专用执行部件;
将第二指令集合中的第二指令依次发送到所锁定的专用执行部件。
3.根据权利要求1所述的人工智能芯片,其中,所述至少一个代码块中的代码块包括第一指令和第二指令集合;以及
通用执行部件具体被配置成:
响应于接收到代码块,执行第一指令,以锁定与所接收的代码块相关联的至少一个专用执行部件;
对于第二指令集合中的第二指令,从所锁定的专用执行部件中确定执行该第二指令的专用执行部件,将该第二指令发送到所确定的专用执行部件。
4.根据权利要求1所述的人工智能芯片,其中,所述人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器,局部控制存储器被配置成:
接收通用执行部件发送的局部变量更新请求,所述局部变量更新请求包括预定局部变量的目标值;
将所述预定局部变量的值更新为所述目标值。
5.根据权利要求4所述的人工智能芯片,其中,局部控制存储器还被配置成向所述至少一个通用执行部件发送所述预定局部变量更新的通知;以及
等待所述预定局部变量更新的通用执行部件还被配置成响应于接收到所述通知,继续执行所接收的代码块中的指令。
6.根据权利要求4所述的人工智能芯片,其中,通用执行部件还被配置成:
以轮询方式检测目标局部变量的值是否更新;
响应于检测到所述目标局部变量的值更新,继续执行所接收的代码块中的指令。
7.根据权利要求1所述的人工智能芯片,其中,所述人工智能芯片还包括至少一个计算集群,所述至少一个计算集群中的计算集群包括数据存储器、至少一个通用执行部件和至少一个专用执行部件。
8.根据权利要求7所述的人工智能芯片,其中,所述人工智能芯片还包括全局控制存储器,计算集群还包括局部控制存储器,所述全局控制存储器存储有至少一个全局变量的值,局部控制存储器存储有至少一个局部变量的值;以及
所述全局控制存储器被配置成:
接收计算集群发送的全局变量更新请求,所述全局变量更新请求包括预定全局变量的目标值;
将所述预定全局变量的值更新为所述目标值。
9.根据权利要求8所述的人工智能芯片,其中,所述全局控制存储器还被配置成向所述至少一个局部控制存储器发送所述预定全局变量更新的通知;以及
等待所述预定全局变量更新的局部控制存储器还被配置成响应于接收到所述通知,更新与所述预定全局变量关联的局部变量的值。
10.根据权利要求8所述的人工智能芯片,其中,局部控制存储器还被配置成:
以轮询方式检测目标全局变量的值是否更新;
响应于检测到所述目标全局变量的值更新,更新与所述预定全局变量关联的局部变量的值。
11.根据权利要求1所述的人工智能芯片,其中,在所述内核代码被执行期间,被通用执行部件锁定的专用执行部件不被解锁。
12.根据权利要求2或3所述的人工智能芯片,其中,通用执行部件还被配置成:在执行第一指令之后,循环执行第二指令集合。
13.根据权利要求1所述的人工智能芯片,其中,所述内核代码由所述中央处理单元对输入的数据流图进行解析获得,所述数据流图通过对神经网络模型的静态图进行映射获得。
14.一种用于人工智能芯片的指令执行方法,所述人工智能芯片包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件,指令存储器与中央处理单元通信连接,所述方法包括:
接收来自所述指令存储器的代码块,所述代码块是所述指令存储器从所述中央处理单元发送的内核代码中获取的,所述代码块与专用执行部件相关联;
锁定与所述代码块相关联的专用执行部件;
将所述代码块中的指令发送到所锁定的专用执行部件,专用执行部件被配置成执行所接收的指令以及将执行结果存储在所述数据存储器中。
15.根据权利要求14所述的方法,其中,所述人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器;以及
所述方法还包括:
响应于接收到目标局部变量更新的通知,继续执行所述代码块中的指令。
16.根据权利要求14所述的方法,其中,所述人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器;以及
所述方法还包括:
以轮询方式检测目标局部变量的值是否更新;
响应于检测到所述目标局部变量的值更新,继续执行所述代码块中的指令。
17.一种用于人工智能芯片的指令执行装置,所述人工智能芯片包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件,指令存储器与中央处理单元通信连接,所述装置包括:
代码接收单元,被配置成接收来自所述指令存储器的代码块,所述代码块是所述指令存储器从所述中央处理单元发送的内核代码中获取的,所述代码块与专用执行部件相关联;
锁定单元,被配置成锁定与所述代码块相关联的专用执行部件;
指令发送单元,被配置成将所述代码块中的指令发送到所锁定的专用执行部件,专用执行部件被配置成执行所接收的指令以及将执行结果存储在所述数据存储器中。
18.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被执行部件执行时实现如权利要求14-16中任一所述的方法。
19.一种电子设备,包括:中央处理单元、存储装置和至少一个如权利要求1-13之一所述的人工智能芯片。

说明书全文

人工智能芯片以及用于人工智能芯片的指令执行方法

技术领域

[0001] 本申请实施例涉及计算机技术领域,具体涉及人工智能芯片以及用于人工智能芯片的指令执行方法。

背景技术

[0002] 随着人工智能技术的快速发展,神经网络模型的规模也越来越大、训练数据也越来越多,从而使得利用专用的神经网络加速器来进行神经网络的训练与预测计算成为主流趋势。并且因此开发出了各种神经网络加速器,诸如,GPU(Graphics Processing Unit,图形处理器)、FPGA(Field-Programmable Gate Array,现场可编程阵列)、ASIC(Application Specific Integrated Circuits,专用集成电路)等神经网络加速器。
[0003] 这些神经网络加速器可以针对神经网络中典型的、高计算密集型的计算任务(例如矩阵计算(或矩阵计算中涉及到的乘累加)、激活运算、向量运算等)进行特殊的优化。一般而言,神经网络加速器可以内置若干不同的执行单元,每个执行单元可以执行不同的计算任务,并且由主机的CPU(Central Processing Unit,中央处理单元)负责调度执行。
[0004] 现有技术中,可以由GPU负责神经网络模型中计算密集型的计算任务,而由CPU负责控制GPU的运行。作为示例,CPU负责解析用户定义的静态计算图描述的深度学习模型,获得运算任务序列,将一个运算任务发送到GPU,然后等待GPU执行完运算任务,再将下一个运算任务发送GPU,……,以此类推。发明内容
[0005] 本申请实施例提出了人工智能芯片以及用于人工智能芯片的指令执行方法。
[0006] 第一方面,本申请实施例提供了一种人工智能芯片,该人工智能芯片包括:指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件;指令存储器被配置成:接收中央处理单元发送的内核代码,内核代码包括至少一个代码,至少一个代码块中的代码块与通用执行部件和专用执行部件相关联;通用执行部件被配置成:接收代码块,定与所接收的代码块相关联的专用执行部件,以及将所接收的代码块中的指令发送到所锁定的专用执行部件;专用执行部件被配置成:接收通用执行部件发送的指令,执行所接收的指令,以及将执行结果存储在数据存储器中;数据存储器被配置成存储专用执行部件发送的执行结果。
[0007] 在一些实施例中,至少一个代码块中的代码块包括第一指令和第二指令集合;以及通用执行部件具体被配置成:响应于接收到代码块,执行第一指令,以锁定与所接收的代码块相关联的专用执行部件;将第二指令集合中的第二指令依次发送到所锁定的专用执行部件。
[0008] 在一些实施例中,至少一个代码块中的代码块包括第一指令和第二指令集合;以及通用执行部件具体被配置成:响应于接收到代码块,执行第一指令,以锁定与所接收的代码块相关联的至少一个专用执行部件;对于第二指令集合中的第二指令,从所锁定的专用执行部件中确定执行该第二指令的专用执行部件,将该第二指令发送到所确定的专用执行部件。
[0009] 在一些实施例中,人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器,局部控制存储器被配置成:接收通用执行部件发送的局部变量更新请求,局部变量更新请求包括预定局部变量的目标值;将预定局部变量的值更新为目标值。
[0010] 在一些实施例中,局部控制存储器还被配置成向至少一个通用执行部件发送预定局部变量更新的通知;以及等待预定局部变量更新的通用执行部件还被配置成响应于接收到通知,继续执行所接收的代码块中的指令。
[0011] 在一些实施例中,通用执行部件还被配置成:以轮询方式检测目标局部变量的值是否更新;响应于检测到目标局部变量的值更新,继续执行所接收的代码块中的指令。
[0012] 在一些实施例中,人工智能芯片还包括至少一个计算集群,至少一个计算集群中的计算集群包括数据存储器、至少一个通用执行部件和至少一个专用执行部件。
[0013] 在一些实施例中,人工智能芯片还包括全局控制存储器,计算集群还包括局部控制存储器,全局控制存储器存储有至少一个全局变量的值,局部控制存储器存储有至少一个局部变量的值;以及全局控制存储器被配置成:接收计算集群发送的全局变量更新请求,全局变量更新请求包括预定全局变量的目标值;将预定全局变量的值更新为目标值。
[0014] 在一些实施例中,全局控制存储器还被配置成向至少一个局部控制存储器发送预定全局变量更新的通知;以及等待预定全局变量更新的局部控制存储器还被配置成响应于接收到通知,更新与预定全局变量关联的局部变量的值。
[0015] 在一些实施例中,局部控制存储器还被配置成:以轮询方式检测目标全局变量的值是否更新;响应于检测到目标全局变量的值更新,更新与预定全局变量关联的局部变量的值。
[0016] 在一些实施例中,在内核代码被执行期间,被通用执行部件锁定的专用执行部件不被解锁。
[0017] 在一些实施例中,通用执行部件还被配置成:在执行第一指令之后,循环执行第二指令集合。
[0018] 在一些实施例中,内核代码由中央处理单元对输入的数据流图进行解析获得,数据流图通过对神经网络模型的静态图进行映射获得。
[0019] 第二方面,本申请实施例提供了一种用于人工智能芯片的指令执行方法,人工智能芯片包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件,指令存储器与中央处理单元通信连接,该方法包括:接收来自指令存储器的代码块,代码块是指令存储器从中央处理单元发送的内核代码中获取的,代码块与专用执行部件相关联;锁定与代码块相关联的专用执行部件;将代码块中的指令发送到所锁定的专用执行部件,专用执行部件被配置成执行所接收的指令以及将执行结果存储在数据存储器中。
[0020] 在一些实施例中,代码块包括第一指令和第二指令集合;以及锁定与代码块相关联的专用执行部件,包括:执行第一指令,以锁定与代码块相关联的专用执行部件;将代码块中的指令发送到所锁定的专用执行部件,包括:将第二指令集合中的第二指令依次发送到所锁定的专用执行部件。
[0021] 在一些实施例中,代码块包括第一指令和第二指令集合;以及锁定与代码块相关联的专用执行部件,包括:执行第一指令,以锁定与代码块相关联的至少一个专用执行部件;将代码块中的指令发送到所锁定的专用执行部件,包括:对于第二指令集合中的第二指令,从所锁定的专用执行部件中确定执行该第二指令的专用执行部件,将该第二指令发送到所确定的专用执行部件。
[0022] 在一些实施例中,人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器,局部控制存储器被配置成:接收通用执行部件发送的局部变量更新请求,局部变量更新请求包括预定局部变量的目标值;将预定局部变量的值更新为目标值。
[0023] 在一些实施例中,人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器;以及该方法还包括:响应于接收到目标局部变量更新的通知,继续执行代码块中的指令。
[0024] 在一些实施例中,人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器;以及该方法还包括:以轮询方式检测目标局部变量的值是否更新;响应于检测到目标局部变量的值更新,继续执行代码块中的指令。
[0025] 在一些实施例中,人工智能芯片还包括至少一个计算集群,至少一个计算集群中的计算集群包括数据存储器、至少一个通用执行部件和至少一个专用执行部件。
[0026] 在一些实施例中,人工智能芯片还包括全局控制存储器,计算集群还包括局部控制存储器,全局控制存储器存储有至少一个全局变量的值,局部控制存储器存储有至少一个局部变量的值;以及全局控制存储器被配置成:接收计算集群发送的全局变量更新请求,全局变量更新请求包括预定全局变量的目标值;将预定全局变量的值更新为目标值。
[0027] 在一些实施例中,全局控制存储器还被配置成向至少一个局部控制存储器发送预定全局变量更新的通知;以及等待预定全局变量更新的局部控制存储器还被配置成响应于接收到通知,更新与预定全局变量关联的局部变量的值。
[0028] 在一些实施例中,局部控制存储器还被配置成:以轮询方式检测目标全局变量的值是否更新;响应于检测到目标全局变量的值更新,更新与预定全局变量关联的局部变量的值。
[0029] 在一些实施例中,在内核代码被执行期间,被通用执行部件锁定的专用执行部件不被解锁。
[0030] 在一些实施例中,该方法还包括:在执行第一指令之后,循环执行第二指令集合。
[0031] 在一些实施例中,内核代码由中央处理单元对输入的数据流图进行解析获得,数据流图通过对神经网络模型的静态图进行映射获得。
[0032] 第三方面,本申请实施例提供了一种用于人工智能芯片的指令执行装置,人工智能芯片包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件,指令存储器与中央处理单元通信连接,该装置包括:代码接收单元,被配置成接收来自指令存储器的代码块,代码块是指令存储器从中央处理单元发送的内核代码中获取的,代码块与专用执行部件相关联;锁定单元,被配置成锁定与代码块相关联的专用执行部件;指令发送单元,被配置成将代码块中的指令发送到所锁定的专用执行部件,专用执行部件被配置成执行所接收的指令以及将执行结果存储在数据存储器中。
[0033] 在一些实施例中,代码块包括第一指令和第二指令集合;以及锁定单元具体被配置成:执行第一指令,以锁定与代码块相关联的专用执行部件;指令发送单元具体被配置成:将第二指令集合中的第二指令依次发送到所锁定的专用执行部件。
[0034] 在一些实施例中,代码块包括第一指令和第二指令集合;以及锁定单元具体被配置成:执行第一指令,以锁定与代码块相关联的至少一个专用执行部件;指令发送单元具体被配置成:对于第二指令集合中的第二指令,从所锁定的专用执行部件中确定执行该第二指令的专用执行部件,将该第二指令发送到所确定的专用执行部件。
[0035] 在一些实施例中,人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器,局部控制存储器被配置成:接收通用执行部件发送的局部变量更新请求,局部变量更新请求包括预定局部变量的目标值;将预定局部变量的值更新为目标值。
[0036] 在一些实施例中,人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器;以及该装置还包括继续执行单元,继续执行单元被配置成:响应于接收到目标局部变量更新的通知,继续执行代码块中的指令。
[0037] 在一些实施例中,人工智能芯片还包括存储有至少一个局部变量的值的局部控制存储器;以及该装置还包括:检测单元,被配置成以轮询方式检测目标局部变量的值是否更新;继续执行单元,被配置成响应于检测到目标局部变量的值更新,继续执行代码块中的指令。
[0038] 在一些实施例中,人工智能芯片还包括至少一个计算集群,至少一个计算集群中的计算集群包括数据存储器、至少一个通用执行部件和至少一个专用执行部件。
[0039] 在一些实施例中,人工智能芯片还包括全局控制存储器,计算集群还包括局部控制存储器,全局控制存储器存储有至少一个全局变量的值,局部控制存储器存储有至少一个局部变量的值;以及全局控制存储器被配置成:接收计算集群发送的全局变量更新请求,全局变量更新请求包括预定全局变量的目标值;将预定全局变量的值更新为目标值。
[0040] 在一些实施例中,全局控制存储器还被配置成向至少一个局部控制存储器发送预定全局变量更新的通知;以及等待预定全局变量更新的局部控制存储器还被配置成响应于接收到通知,更新与预定全局变量关联的局部变量的值。
[0041] 在一些实施例中,局部控制存储器还被配置成:以轮询方式检测目标全局变量的值是否更新;响应于检测到目标全局变量的值更新,更新与预定全局变量关联的局部变量的值。
[0042] 在一些实施例中,在内核代码被执行期间,被通用执行部件锁定的专用执行部件不被解锁。
[0043] 在一些实施例中,该装置还包括:循环单元,被配置成在执行第一指令之后,循环执行第二指令集合。
[0044] 在一些实施例中,内核代码由中央处理单元对输入的数据流图进行解析获得,数据流图通过对神经网络模型的静态图进行映射获得。
[0045] 第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,计算机程序被执行部件执行时实现如上述第二方面中任一实现方式描述的方法。
[0046] 第五方面,本申请实施例提供了一种电子设备,包括:中央处理单元、存储装置和至少一个如第一方面种任一实现方式描述的人工智能芯片。
[0047] 本申请实施例提供的人工智能芯片以及用于人工智能芯片的指令执行方法,通过指令存储器从CPU接收包括至少一个代码块的内核代码,之后通用执行部件锁定与接收的代码块关联的专用执行部件以及将代码块中的指令发送到所锁定的专用执行部件,最后专用执行部件执行所接收的执行以及将执行结果发送到数据存储器进行存储,从而避免在内核代码执行期间与CPU频繁通信,并且避免频繁加锁/解锁专用执行部件,提高了人工智能芯片的性能。附图说明
[0048] 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0049] 图1是根据本申请的一个实施例可以应用于其中的示例性系统架构图;
[0050] 图2是根据本申请的人工智能芯片的一个实施例的工作时序图;
[0051] 图3是根据本申请的人工智能芯片的一个应用场景的示意图;
[0052] 图4是根据本申请的人工智能芯片的另一实施例的工作时序图;
[0053] 图5是根据本申请的用于人工智能芯片的指令执行方法的一个实施例的流程图
[0054] 图6是根据本申请的用于人工智能芯片的指令执行装置的一个实施例的结构示意图;
[0055] 图7是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

[0056] 下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
[0057] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0058] 图1示出了可以应用本申请的人工智能芯片、用于人工智能芯片的指令执行方法或用于人工智能芯片的指令执行装置的实施例的示例性系统架构100。
[0059] 如图1所示,系统架构100可以包括CPU 11、人工智能(Artificial Intelligence,AI)芯片12和总线13。总线13用以在CPU 11和人工智能芯片12之间提供通信链路的介质,例如,PCIE(Peripheral Component Interconnect Express,一种高速串行计算机扩展总线标准)总线等。
[0060] CPU 11可以通过总线13与人工智能芯片12进行交互,以发送和接收消息。CPU 11可以将内核代码发送到人工智能芯片12,以及接收人工智能芯片12返回的处理结果。
[0061] 人工智能芯片12也被称为AI加速器或计算卡,专门用于处理人工智能应用中的大量计算密集型的计算任务。人工智能芯片12可以包括指令存储器、数据存储器、一个或多个通用执行部件和一个或多个专用执行部件。指令存储器可以接收CPU 11发送的内核代码。通用执行部件可以接收指令存储器分发的代码块或从指令存储器主动获取关联的代码块,然后将指令发送到预先显式指定的专用执行部件。专用执行部件可以执行所接收的指令并将执行结果发送到数据存储器进行存储。数据存储器可以存储专用执行部件的指令执行结果。
[0062] 需要说明的是,本申请实施例所提供的用于人工智能芯片的指令执行方法一般由通用执行部件执行,相应地,用于人工智能芯片的指令执行装置一般设置于通用执行部件中。
[0063] 应该理解,图1中的CPU、总线、人工智能芯片、指令存储器、数据存储器、通用执行部件和专用执行部件的数目仅仅是示意性的。根据实现需要,可以具有任意合适数目的CPU、总线、人工智能芯片、指令存储器、数据存储器、通用执行部件和专用执行部件。
[0064] 继续参考图2,示出了根据本申请的人工智能芯片的一个实施例的工作时序200。
[0065] 本实施例的人工智能芯片可以包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件。其中,指令存储器可以被配置成:接收中央处理单元发送的内核代码,内核代码包括至少一个代码块,至少一个代码块中的代码块与通用执行部件和专用执行部件相关联。通用执行部件可以被配置成:接收代码块,锁定与所接收的代码块相关联的专用执行部件,以及将所接收的代码块中的指令发送到所锁定的专用执行部件。专用执行部件可以被配置成:接收通用执行部件发送的指令,执行所接收的指令,以及将执行结果存储在数据存储器中。数据存储器可以被配置成存储专用执行部件发送的执行结果。
[0066] 如图2所示,在步骤201中,指令存储器接收CPU发送的内核代码。
[0067] 在本实施例中,指令存储器(例如,图1所示的指令存储器)可以接收主机的CPU(例如,图1所示的CPU)发送的内核代码。其中,内核代码包括至少一个代码块。上述至少一个代码块中的每个代码块与一个通用执行部件和一个或多个专用执行部件相关联。
[0068] 在本实施例的一些可选实现方式中,通用执行部件可以包括可编程的通用计算图形处理器,例如,ARM(Advanced RISC Machine或Acorn RISC Machine,进阶精简指令集机器)核、51核等。专用执行部件可以包括专用于处理神经网络模型中的计算密集型的计算任务的执行部件,可以包括但不限于以下至少一种:卷积引擎、单数据处理器、平面数据处理器、通道数据处理器、专用内存和数据重构引擎。其中,卷积引擎用于神经网络模型的卷积层的数据处理,单数据处理器用于神经网络模型的激活函数层的数据处理,平面数据处理器用于神经网络模型的池化层的数据处理、通道数据处理器用于神经网络模型的标准化层的数据处理,而专用内存和数据重构引擎用于张量重塑和复制操作存储器到存储器的转换加速。
[0069] 在本实施例的一些可选的实现方式中,内核代码可以由CPU对输入的数据流图进行解析而获得,例如,按照约定的编程协议将数据流图转化为特定编程语言(例如,C、C++、Java等)的内核代码。这里,数据流图可以通过对用户输入的神经网络模型的静态图进行映射而获得。
[0070] 这里,神经网络模型可以是人工神经网络(Artificial Neural Network,ANN)。人工神经网络是人们基于对人脑神经网络的基本认识,以数学和物理方法以及从信息处理的度对人脑神经网络进行抽象而建立的某种简单模型。例如,神经网络模型可以包括卷积神经网络(Convolutional Neural Network,CNN)模型和深度神经网络(Deep Neural Network,DNN)模型等等。
[0071] 在步骤202中,通用执行部件接收代码块。
[0072] 在本实施例中,通用执行部件(例如,图1所示的通用执行部件)可以接收来自指令存储器的代码块。
[0073] 这里,通用执行部件可以直接接收关联的代码块。例如,通用执行部件无需向指令存储器发送获取请求,直接接收指令存储器根据代码块与通用执行部件之间的关联关系下发的代码块。
[0074] 另外,通用执行部件也可以直接接收内核代码,然后从内核代码中提取关联的代码块。此外,通用执行部件也可以通过向指令存储器发送请求来获取关联的代码块。
[0075] 在本实施例的一些可选的实现方式中,上述至少一个代码块中的每个代码块可以包括第一指令和第二指令集合。其中,第一指令用于被通用执行部件执行时锁定与代码块关联的专用执行部件。第二指令集中的每条第二指令用于被专用执行部件执行时处理计算密集型的计算任务。第二指令集合中的第二指令在第一指令执行之后(即锁定专用执行部件之后)被通用执行部件发送到专用执行部件。
[0076] 作为示例,对于包括如下代码“lock(dma);loadDataToL2();”的代码块,“lock(dma)”为该代码块的第一指令,“loadDataToL2()”为该代码块的第二指令。其中,第一指令用于锁定名称为“dma”的专用执行部件,第二指令用于将数据加载到二级缓存。
[0077] 在本实施例的一些可选的实现方式中,代码块还可以包括循环片段。其中,循环片段可以包括第二指令集合。也就是说,第二指令集合中的各第二指令在第一指令被执行之后被循环执行。
[0078] 作为示例,对于包括如下代码“lock(mac);while(1){convolution();}”的代码块,“lock(mac)”为该代码块的第一指令,“while(1){convolution();}”为该代码块的循环片段,“convolution()”为循环片段中的第二指令。其中,第一指令用于锁定名称为“mac”的专用执行部件,第二指令用于进行卷积运算,循环片段用于循环执行第二指令(即,循环执行卷积运算)。
[0079] 在步骤203中,通用执行部件锁定专用执行部件。
[0080] 在本实施例中,响应于接收到关联的代码块,通用执行部件可以锁定与所接收的代码块相关联的专用执行部件。作为示例,若通用执行部件接收到包括如下代码“lock(dma);loadDataToL2();”的代码块,则可以锁定名称为“dma”的专用执行部件。
[0081] 由于专用执行部件可以被任一通用执行部件调用,因此,为了避免通用执行部件在调用专用执行部件时产生冲突,需要对专用执行部件进行锁定。通用执行部件可以通过各种适合的方式锁定专用执行部件。例如,采用锁的机制(即,每个专用执行部件可以具有一个可被调用的锁。这里,锁可以通过软件编程的方法来实现)。通过调用专用执行部件的锁的加锁方法可以实现锁定专用执行部件(即,被锁定的专用执行部件无法被其他通用执行部件调用)。
[0082] 需要说明的是,通用执行部件可以锁定一个专用执行部件,也可以锁定一个以上的专用执行部件。本领域的技术人员可以根据实际应用场景的需要进行设置,本申请对此不作具体限定。
[0083] 在步骤204中,通用执行部件将代码块中的指令发送到专用执行部件。
[0084] 在本实施例中,在锁定与所接收的代码块关联的专用执行部件之后,通用执行部件可以将接收的代码块中用于处理计算密集型任务的指令发送到所锁定的专用执行部件。
[0085] 在本实施例的一些可选的实现方式中,当锁定一个专用执行部件时,通用执行部件可以将第二指令集合中的各第二指令按照执行顺序依次发送到所锁定的专用执行部件。
[0086] 在本实施例的一些可选的实现方式中,当锁定一个以上的专用执行部件时,对于第二指令集合中的每条第二指令,通用执行部件可以首先从锁定的专用执行部件中确定执行该第二指令的专用执行部件,然后将该第二指令发送到所确定的专用执行部件。
[0087] 在步骤205中,专用执行部件执行所接收的指令。
[0088] 在本实施例中,响应于接收到通用执行部件发送的指令,专用执行部件可以执行所接收的指令。
[0089] 在步骤206中,专用执行部件将执行结果发送到数据存储器。
[0090] 本实施例中,专用执行部件在指令执行完成之后,将执行结果发送到数据存储器。这里,数据存储器可以包括一级缓存、二级缓存、三级缓存等等。
[0091] 在步骤207中,数据存储器存储执行结果。
[0092] 本实施例中,数据存储器可以接收专用执行部件的执行结果,并将接收的执行结果进行存储。
[0093] 从图2的工作时序中可以看出,与频繁加锁/解锁专用执行部件不同,本申请的人工智能芯片在内核代码的整个执行期间,专用执行部件一直处于被通用执行部件锁定的状态,从而避免了频繁加锁/解锁的过程,从而提高了人工智能芯片的性能。
[0094] 如果人工智能芯片每完成一个计算任务就需要与主机的CPU上运行的应用程序进行通讯以接收下一个任务,那么在人工智能芯片性能非常高、计算任务执行时间非常短的情形下就会明显影响人工智能芯片的性能。举例来说,若人工智能芯片每次运算耗时5us,而人工智能芯片与CPU通讯耗时为10us数量级,则相当于人工智能芯片有约三分之二的时间是闲置的,等于浪费了人工智能芯片的大半性能。
[0095] 而在本实施例中,人工智能芯片仅需要与CPU通讯一次以获取神经网络模型的内核代码,而在内核代码的整个执行期间,人工智能芯片并不需要与CPU进行通讯,也就是说,人工智能芯片基本不存在等待时间,从而可以显著提高人工智能芯片的性能。
[0096] 继续参考图3,其示出了根据本申请的人工智能芯片的一个应用场景。图3图示的是对某神经网络模型(例如人脸识别模型)映射得到的数据流图。在该数据流图中,U1~U6分别指代不同的专用执行部件,箭头指示数据流的方向。实现该数据流图的内核代码如下:
[0097]
[0098] 其中,上述内核代码包括6个代码块(即,数字0~5之后的代码片段)。CPU将上述内核代码发送到人工智能芯片的指令存储器。指令存储器可以首先获取各通用执行部件的标识(通过指令“get_core_id()”来获取,这里,标识的取值分别为数字0到5),然后将代码块“lock(U1);loadDataToL2();”发送到标识为0的通用执行部件,将代码块“lock(U2);while(1){convolution();}”发送到标识为1的通用执行部件,……,将代码块“lock(U6);……;”发送到标识为5的通用执行部件。标识为0的通用执行部件接收到代码块之后,锁定专用执行部件U1,然后将指令“loadDataToL2()”发送到专用执行部件U1。标识为1的通用执行部件接收到代码块之后,锁定专用执行部件U2,然后将指令“convolution()”不断地发送到专用执行部件U2。以此类推。专用执行部件U1~U6将指令执行结果发送到数据存储器进行存储。
[0099] 本申请的上述实施例提供的人工智能芯片,通过指令存储器从CPU接收包括至少一个代码块的内核代码,之后通用执行部件锁定与接收的代码块关联的专用执行部件以及将代码块中的指令发送到所锁定的专用执行部件,最后专用执行部件执行所接收的执行以及将执行结果发送到数据存储器进行存储,从而避免在内核代码执行期间与CPU频繁通信,并且避免频繁加锁/解锁专用执行部件,提高了人工智能芯片的性能。
[0100] 进一步参考图4,其示出了根据本申请的人工智能芯片的另一实施例的工作时序400。
[0101] 本实施例的人工智能芯片可以包括指令存储器、数据存储器、局部控制存储器、至少一个通用执行部件和至少一个专用执行部件。其中,指令存储器可以被配置成:接收中央处理单元发送的内核代码,内核代码包括至少一个代码块,至少一个代码块中的代码块与通用执行部件和专用执行部件相关联。通用执行部件可以被配置成:接收代码块,锁定与所接收的代码块相关联的专用执行部件,以及将所接收的代码块中的指令发送到所锁定的专用执行部件。专用执行部件可以被配置成:接收通用执行部件发送的指令,执行所接收的指令,以及将执行结果存储在数据存储器中。数据存储器可以被配置成存储专用执行部件发送的执行结果。局部控制存储器可以存储有至少一个局部变量的值。局部控制存储器可以被配置成:接收通用执行部件发送的局部变量更新请求,局部变量更新请求包括预定局部变量的目标值;将预定局部变量的值更新为目标值。
[0102] 如图4所示,在步骤401中,指令存储器接收CPU发送的内核代码。
[0103] 在本实施例中,指令存储器(例如,图1所示的指令存储器)可以接收主机的CPU(例如,图1所示的CPU)发送的内核代码。其中,内核代码包括至少一个代码块。上述至少一个代码块中的每个代码块与一个通用执行部件和一个或多个专用执行部件相关联。
[0104] 在步骤402中,通用执行部件接收代码块。
[0105] 在本实施例中,通用执行部件(例如,图1所示的通用执行部件)可以接收来自指令存储器的代码块。
[0106] 在步骤403中,通用执行部件锁定专用执行部件。
[0107] 在本实施例中,响应于接收到关联的代码块,通用执行部件可以锁定与所接收的代码块相关联的专用执行部件。作为示例,若通用执行部件接收到包括如下代码“lock(dma);loadDataToL2();”的代码块,则可以锁定名称为“dma”的专用执行部件。
[0108] 然后,通用执行部件进入等待状态,等待局部控制存储器中预定局部变量的更新通知。
[0109] 在步骤404中,局部控制存储器更新预定局部变量的值。
[0110] 在本实施例中,局部控制存储器可以接收其他通用执行部件发送的局部变量更新请求,然后将预定局部变量的值更新为目标值。其中,局部更新请求中包括预定局部变量的目标值。这里,局部变量的取值可以为二进制数值,如0或1。局部变量的取值也可以是其他预设的数值,本申请对此不作具体限定。
[0111] 在步骤405中,局部控制存储器向通用执行部件发送通知。
[0112] 在本实施例中,局部控制存储器可以向各通用执行部件发送指示上述预定局部变量更新的通知。
[0113] 在步骤406中,通用执行部件将代码块中的指令发送到专用执行部件。
[0114] 在本实施例中,响应于接收到指示预定局部变量更新的通知,通用执行部件可以将接收的代码块中用于处理计算密集型任务的指令发送到所锁定的专用执行部件。
[0115] 在步骤407中,专用执行部件执行所接收的指令。
[0116] 在本实施例中,响应于接收到通用执行部件发送的指令,专用执行部件可以执行所接收的指令。
[0117] 在步骤408中,专用执行部件将执行结果发送到数据存储器。
[0118] 本实施例中,专用执行部件在指令执行完成之后,将执行结果发送到数据存储器。这里,数据存储器可以包括一级缓存、二级缓存、三级缓存等等。
[0119] 在步骤409中,数据存储器存储执行结果。
[0120] 本实施例中,数据存储器可以接收专用执行部件的执行结果,并将接收的执行结果进行存储。
[0121] 从图4的工作时序中可以看出,通过设置局部控制存储器实现了任意两个通用执行部件之间的同步,从而保证内核代码的各个代码块按照期望的顺序执行,并且使得人工智能芯片的控制更加灵活。
[0122] 尽管图4中图示了通用执行部件锁定专用执行部件之后进入等待状态以及局部控制存储器向通用执行部件发送通知,但本实施例并不限于此。
[0123] 在本实施例的一些可选的实现方式中,通用执行部件还可以被配置成:以轮询方式检测目标局部变量的值是否更新;响应于检测到所述目标局部变量的值更新,继续执行所接收的代码块中的指令。
[0124] 在本实施例的一些可选的实现方式中,人工智能芯片还可以包括至少一个计算集群,每个计算集群可以包括数据存储器、至少一个通用执行部件和至少一个专用执行部件。各计算集群可以共用一个指令存储器。
[0125] 可选地,每个计算集群还可以包括指令存储器。每个计算集群中的指令存储器可以与中央处理单元通信连接。
[0126] 可选地,人工智能芯片还可以包括全局控制存储器,每个计算集群还包括可以局部控制存储器。全局控制存储器可以存储有至少一个全局变量的值,局部控制存储器可以存储有至少一个局部变量的值。全局控制存储器可以被配置成:接收计算集群发送的全局变量更新请求,全局变量更新请求包括预定全局变量的目标值;将预定全局变量的值更新为目标值。
[0127] 可选地,全局控制存储器还可以被配置成向至少一个局部控制存储器发送预定全局变量更新的通知;以及等待预定全局变量更新的局部控制存储器还被配置成响应于接收到通知,更新与预定全局变量关联的局部变量的值。
[0128] 可选地,局部控制存储器还被配置成:以轮询方式检测目标全局变量的值是否更新;响应于检测到目标全局变量的值更新,更新与预定全局变量关联的局部变量的值(以及向各通用执行部件发送指示关联的局部变量更新的通知)。
[0129] 通过设置多个计算集群,可以使得人工智能芯片能够处理复杂的神经网络模型,例如包括多个简单模型的复杂神经网络模型。并且,通过设置全局控制存储器可以实现不同的计算集群之间的同步,从而可以保证人工智能芯片在处理多个简单模型时能够按照期望的顺序执行,进一步使得人工智能芯片的控制更加灵活。
[0130] 从图4中可以看出,与图2对应的实施例相比,本实施例中的人工智能芯片还包括局部控制存储器。由此,本实施例描述的方案可以实现了不同的通用执行部件之间的同步,从而保证内核代码的各个代码块按照期望的顺序执行,并且使得人工智能芯片的控制更加灵活。
[0131] 进一步参考图5,示出了根据本申请的用于人工智能芯片的指令执行方法的一个实施例的流程500。该用于人工智能芯片的指令执行方法,可以包括以下步骤:
[0132] 步骤501,接收来自指令存储器的代码块。
[0133] 在本实施例中,人工智能芯片包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件。指令存储器与中央处理单元通信连接。用于人工智能芯片的指令执行方法的执行主体(例如,图1的人工智能芯片12的通用执行部件)可以接收来自指令存储器的代码块。其中,代码块是指令存储器从主机的CPU发送的内核代码中获取的,代码块与专用执行部件相关联。
[0134] 在本实施例的一些可选的实现方式中,内核代码可以由CPU对输入的数据流图进行解析而获得,例如,按照约定的编程协议将数据流图转化为特定编程语言(例如,C、C++、Java等)的内核代码。这里,数据流图可以通过对用户输入的神经网络模型的静态图进行映射而获得。
[0135] 在本实施例的一些可选的实现方式中,代码块可以包括第一指令和第二指令集合。其中,第一指令用于被通用执行部件执行时锁定与代码块关联的专用执行部件。第二指令集中的每条第二指令用于被专用执行部件执行时处理计算密集型的计算任务。第二指令集合中的第二指令在第一指令执行之后(即锁定专用执行部件之后)被通用执行部件发送到专用执行部件。
[0136] 作为示例,对于包括如下代码“lock(dma);loadDataToL2();”的代码块,“lock(dma)”为该代码块的第一指令,“loadDataToL2()”为该代码块的第二指令。其中,第一指令用于锁定名称为“dma”的专用执行部件,第二指令用于将数据加载到二级缓存。
[0137] 在本实施例的一些可选的实现方式中,代码块还可以包括循环片段。其中,循环片段可以包括第二指令集合。也就是说,第二指令集合中的各第二指令在第一指令被执行之后被循环执行。
[0138] 作为示例,对于包括如下代码“lock(mac);while(){convolution();}”的代码块,“lock(mac)”为该代码块的第一指令,“while(1){convolution();}”为该代码块的循环片段,“convolution()”为循环片段中的第二指令。其中,第一指令用于锁定名称为“mac”的专用执行部件,第二指令用于进行卷积运算,循环片段用于循环执行第二指令(即,循环执行卷积运算)。
[0139] 步骤502,锁定与代码块相关联的专用执行部件。
[0140] 在本实施例中,上述执行主体可以锁定与代码块相关联的专用执行部件。作为示例,若通用执行部件接收到包括如下代码“lock(dma);loadDataToL2();”的代码块,则可以执行第一指令“lock(dma)”,以锁定名称为“dma”的专用执行部件。
[0141] 需要说明的是,通用执行部件可以锁定一个专用执行部件,也可以锁定一个以上的专用执行部件。
[0142] 步骤503,将代码块中的指令发送到所锁定的专用执行部件。
[0143] 在本实施例中,在锁定与代码块关联的专用执行部件之后,上述执行主体可以将接收的代码块中用于处理计算密集型任务的指令发送到所锁定的专用执行部件。其中,专用执行部件被配置成执行所接收的指令以及将执行结果存储在数据存储器中。
[0144] 作为一个示例,当锁定一个专用执行部件时,上述执行主体可以将代码块的第二指令集合中的第二指令按照执行顺序依次发送到所锁定的专用执行部件。
[0145] 在另一示例中,当锁定一个以上的专用执行部件时,对于代码块中的第二指令集合中的每条第二指令,上述执行主体可以首先从所锁定的专用执行部件中确定执行该第二指令的专用执行部件,然后将该第二指令发送到所确定的专用执行部件。
[0146] 在本实施例的一些可选的实现方式中,人工智能芯片还可以包括存储有至少一个局部变量的值的局部控制存储器。其中,局部控制存储器可以被配置成:接收通用执行部件发送的局部变量更新请求,局部变量更新请求包括预定局部变量的目标值;将预定局部变量的值更新为目标值。
[0147] 可选地,该用于人工智能芯片的指令执行方法还可以包括:响应于接收到目标局部变量更新的通知,继续执行代码块中的指令。
[0148] 作为示例,代码块中的指令在执行时需要其他通用执行部件的执行结果。在此情形下,上述执行主体可以在锁定专用执行部件之后处于等待状态。其他通用执行部件在操作执行完成之后,向局部控制存储器发送局部变量A的更新请求。局部控制存储器更新局部变量A之后,向上述执行主体发送局部变量A更新的通知。上述执行主体接收到该通知之后,继续执行代码块中的指令。
[0149] 可选地,该用于人工智能芯片的指令执行方法还可以包括:以轮询方式检测目标局部变量的值是否更新;响应于检测到目标局部变量的值更新,继续执行代码块中的指令。
[0150] 在本实施例的一些可选的实现方式中,人工智能芯片还可以包括至少一个计算集群,每个计算集群可以包括数据存储器、至少一个通用执行部件和至少一个专用执行部件。各计算集群可以共用一个指令存储器。
[0151] 可选地,每个计算集群还可以包括指令存储器。每个计算集群中的指令存储器可以与中央处理单元通信连接。
[0152] 可选地,人工智能芯片还可以包括全局控制存储器,每个计算集群还包括可以局部控制存储器。全局控制存储器可以存储有至少一个全局变量的值,局部控制存储器可以存储有至少一个局部变量的值。全局控制存储器可以被配置成:接收计算集群发送的全局变量更新请求,全局变量更新请求包括预定全局变量的目标值;将预定全局变量的值更新为目标值。
[0153] 可选地,全局控制存储器还可以被配置成向至少一个局部控制存储器发送预定全局变量更新的通知。等待预定全局变量更新的局部控制存储器还可以被配置成响应于接收到通知,更新与预定全局变量关联的局部变量的值。
[0154] 可选地,局部控制存储器还可以被配置成:以轮询方式检测目标全局变量的值是否更新;响应于检测到目标全局变量的值更新,更新与预定全局变量关联的局部变量的值(以及向各通用执行部件发送指示关联的局部变量更新的通知)。
[0155] 通过设置多个计算集群,可以使得人工智能芯片能够处理复杂的神经网络模型,例如包括多个简单模型的复杂神经网络模型。并且,通过设置全局控制存储器可以实现不同的计算集群之间的同步,从而可以保证人工智能芯片在处理多个简单模型时能够按照期望的顺序执行,进一步使得人工智能芯片的控制更加灵活。
[0156] 本申请的上述实施例提供的用于人工智能芯片的指令执行方法,通过接收来自指令存储器的代码块,之后锁定与代码块关联的专用执行部件,最后将代码块中的指令发送到所锁定的专用执行部件,从而避免在内核代码执行期间与CPU频繁通信,并且避免频繁加锁/解锁专用执行部件,提高了人工智能芯片的性能。
[0157] 进一步参考图6,作为对图5所示方法的实现,本申请提供了一种用于人工智能芯片的指令执行装置的一个实施例,该装置实施例与图5所示的方法实施例相对应,该装置具体可以应用于人工智能芯片的通用执行部件中。
[0158] 如图6所示,本实施例的用于人工智能芯片的指令执行装置600可以包括代码接收单元601、锁定单元602和指令发送单元603。其中,代码接收单元601被配置成接收来自指令存储器的代码块,代码块是指令存储器从中央处理单元发送的内核代码中获取的,代码块与专用执行部件相关联;锁定单元602被配置成锁定与代码块相关联的专用执行部件;而指令发送单元603被配置成将代码块中的指令发送到所锁定的专用执行部件,专用执行部件被配置成执行所接收的指令以及将执行结果存储在数据存储器中。
[0159] 在本实施例中,人工智能芯片可以包括指令存储器、数据存储器、至少一个通用执行部件和至少一个专用执行部件。指令存储器与中央处理单元通信连接。用于人工智能芯片的指令执行装置600的上述代码接收单元601可以接收来自指令存储器的代码块。其中,代码块是指令存储器从主机的CPU发送的内核代码中获取的,代码块与专用执行部件相关联。
[0160] 在本实施例的一些可选的实现方式中,内核代码可以由CPU对输入的数据流图进行解析而获得,例如,按照约定的编程协议将数据流图转化为特定编程语言(例如,C、C++、Java等)的内核代码。这里,数据流图可以通过对用户输入的神经网络模型的静态图进行映射而获得。
[0161] 在本实施例中,上述锁定单元602可以锁定与代码块相关联的专用执行部件。作为示例,若通用执行部件接收到包括如下代码“lock(dma);loadDataToL2();”的代码块,则可以执行第一指令“lock(dma)”,以锁定名称为“dma”的专用执行部件。
[0162] 在本实施例的一些可选的实现方式中,代码块可以包括第一指令和第二指令集合。锁定单元602具体可以被配置成:执行第一指令,以锁定与代码块相关联的专用执行部件。
[0163] 在本实施例中,在锁定与代码块关联的专用执行部件之后,上述指令发送单元603可以将接收的代码块中用于处理计算密集型任务的指令发送到所锁定的专用执行部件。其中,专用执行部件被配置成执行所接收的指令以及将执行结果存储在数据存储器中。
[0164] 在本实施例的一些可选的实现方式中,,指令发送单元603具体可以被配置成:将第二指令集合中的第二指令依次发送到所锁定的专用执行部件。
[0165] 在本实施例的一些可选的实现方式中,,指令发送单元603具体可以被配置成:对于第二指令集合中的第二指令,从所锁定的专用执行部件中确定执行该第二指令的专用执行部件,将该第二指令发送到所确定的专用执行部件。
[0166] 在本实施例的一些可选的实现方式中,人工智能芯片还可以包括存储有至少一个局部变量的值的局部控制存储器。局部控制存储器可以被配置成:接收通用执行部件发送的局部变量更新请求,局部变量更新请求包括预定局部变量的目标值;将预定局部变量的值更新为目标值。
[0167] 在本实施例的一些可选的实现方式中,人工智能芯片还可以包括存储有至少一个局部变量的值的局部控制存储器。该装置600还可以包括继续执行单元。其中,继续执行单元可以被配置成:响应于接收到目标局部变量更新的通知,继续执行代码块中的指令。
[0168] 在本实施例的一些可选的实现方式中,人工智能芯片还可以包括存储有至少一个局部变量的值的局部控制存储器。该装置600还可以包括检测单元和继续执行单元。其中,检测单元可以被配置成以轮询方式检测目标局部变量的值是否更新;继续执行单元可以被配置成响应于检测到目标局部变量的值更新,继续执行代码块中的指令。
[0169] 在本实施例的一些可选的实现方式中,人工智能芯片还包括至少一个计算集群。每个计算集群可以包括数据存储器、至少一个通用执行部件和至少一个专用执行部件。
[0170] 在本实施例的一些可选的实现方式中,人工智能芯片还可以包括全局控制存储器,每个计算集群还可以包括局部控制存储器。其中,全局控制存储器存储有至少一个全局变量的值,局部控制存储器存储有至少一个局部变量的值。全局控制存储器可以被配置成:接收计算集群发送的全局变量更新请求,全局变量更新请求包括预定全局变量的目标值;
将预定全局变量的值更新为目标值。
[0171] 在本实施例的一些可选的实现方式中,全局控制存储器还可以被配置成向至少一个局部控制存储器发送预定全局变量更新的通知。等待预定全局变量更新的局部控制存储器还可以被配置成响应于接收到通知,更新与预定全局变量关联的局部变量的值。
[0172] 在本实施例的一些可选的实现方式中,局部控制存储器还可以被配置成:以轮询方式检测目标全局变量的值是否更新;响应于检测到目标全局变量的值更新,更新与预定全局变量关联的局部变量的值。
[0173] 在本实施例的一些可选的实现方式中,在内核代码被执行期间,被通用执行部件锁定的专用执行部件不被解锁。
[0174] 在本实施例的一些可选的实现方式中,该装置600还可以包括循环单元。其中,循环单元可以被配置成在执行第一指令之后,循环执行第二指令集合。
[0175] 本申请的上述实施例提供的用于人工智能芯片的指令执行装置,通过接收来自指令存储器的代码块,之后锁定与代码块关联的专用执行部件,最后将代码块中的指令发送到所锁定的专用执行部件,从而避免在内核代码执行期间与CPU频繁通信,并且避免频繁加锁/解锁专用执行部件,提高了人工智能芯片的性能。
[0176] 本申请实施例还提供了一种电子设备。该电子设备的结构可以参考图7,其示出了本申请的电子设备的一个实施例的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
[0177] 如图7所示,计算机系统700包括一个或多个中央处理单元(CPU)701以及一个或多个人工智能芯片704。CPU 701可以根据存储在只读存储器(ROM)702中的程序或者从存储部分707加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。人工智能芯片704可以包括指令存储器、数据存储器、一个或多个通用执行部件以及一个或多个专用执行部件,人工智能芯片704可以根据从CPU701接收的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702、RAM703以及人工智能芯片704通过总线705彼此相连。输入/输出(I/O)接口706也连接至总线705。
[0178] 以下部件连接至I/O接口706:包括硬盘等的存储部分707;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分708。通信部分708经由诸如因特网的网络执行通信处理。驱动器709也根据需要连接至I/O接口706。可拆卸介质710,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器709上,以便于从其上读出的计算机程序根据需要被安装入存储部分707。
[0179] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分708从网络上被下载和安装,和/或从可拆卸介质710被安装。在该计算机程序被人工智能芯片704的通用执行部件执行时,执行本申请的方法中限定的上述功能。
[0180] 需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0181] 可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0182] 附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0183] 描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在通用执行部件中,例如,可以描述为:一种通用执行部件包括代码接收单元、锁定单元和指令发送单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,代码接收单元还可以被描述为“接收来自指令存储器的代码块的单元”。
[0184] 作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的人工智能芯片中的通用执行部件中所包含的;也可以是单独存在,而未装配入该通用执行部件中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该通用执行部件执行时,使得该通用执行部件:接收来自指令存储器的代码块,代码块是指令存储器从中央处理单元发送的内核代码中获取的,代码块与专用执行部件相关联;锁定与代码块相关联的专用执行部件;将代码块中的指令发送到所锁定的专用执行部件,专用执行部件被配置成执行所接收的指令以及将执行结果存储在数据存储器中。
[0185] 以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈