流水线控制方法、运算模块及相关产品与流程

文档序号:28419279发布日期:2022-01-11 21:07阅读:182来源:国知局
流水线控制方法、运算模块及相关产品与流程

1.本技术涉及数据处理领域,尤其涉及一种流水线控制方法、运算模块及相关产品。


背景技术:

2.传统的cpu为了保证指令的输出能够与输入的顺序相符合,在使用单一入口单一出口的1条流水线实现运算功能的前提下,不同类型、不同延迟和不同复杂度的操作均从流水线最前面1级进入,流经流水线的所有流水级后从流水线最后1级输出,如此,会出现如下情况,如果某一条指令在流水线的部分流水级中没有做任何有效的逻辑操作,仅仅是保持原样流到下一级。那么可以认为对于该指令而言,部分流水级是存在资源浪费的,因为这些流水级中存在的有效逻辑操作没有被利用,如此,会造成资源浪费。


技术实现要素:

3.本技术实施例提供一种流水线控制方法、运算模块及相关产品,保证指令经过流水时输出时顺序与输入的顺序相同,节省计算资源。
4.第一方面,本技术实施例还提供了一种运算模块,所述运算模块包括k条流水线以及p个流水线入口和q个流水线出口,所述k为正整数,所述p、所述q均为大于或等于2的整数;所述k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器;
5.所述运算模块用于:
6.在目标操作需要进入流水线i时,检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作,所述流水线i为所述k条流水线中的任一流水线;
7.在所述目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许所述目标操作进入所述流水线i中相应的寄存器入口。
8.第二方面,本技术实施例还提供了一种流水线控制方法,应用于运算模块,所述运算模块包括k条流水线以及p个流水线入口和q个流水线出口,所述k为正整数,所述p、所述q均为大于或等于2的整数;所述k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器;所述方法包括:
9.在目标操作需要进入流水线i时,检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作,所述流水线i为所述k条流水线中的任一流水线;
10.在所述目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许所述目标操作进入所述流水线i中相应的寄存器入口。
11.第三方面,本技术实施例还提供了一种神经网络芯片,所述神经网络芯片包括如第一方面中所述的运算模块,或者,用于执行如第二方面所述的方法。
12.第四方面,本技术实施例还提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如第三方面所述的神经网络芯片;
13.其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
14.所述存储器件,用于存储数据;
15.所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
16.所述控制器件,用于对所述芯片的状态进行监控。
17.第五方面,本技术实施例还提供了一种电子设备,所述电子设备包括如第一方面所述的运算模块,或者,所述电子设备用于执行如第二方面所述的方法,或者,所述电子设备包括如第三方面所述的神经网络芯片,或者,所述电子设备包括如第四方面所述的板卡。
18.第六方面,本技术实施例还提供了一种流水线控制装置,应用于包括运算模块的电子设备,所述运算模块包括k条流水线以及p个流水线入口和q个流水线出口,所述k为正整数,所述p、所述q均为大于或等于2的整数;所述k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器;所述装置包括:检测单元和执行单元,其中,
19.所述检测单元,用于在目标操作需要进入流水线i时,检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作,所述流水线i为所述k条流水线中的任一流水线;
20.所述执行单元,用于在所述目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许所述目标操作进入所述流水线i中相应的寄存器入口。
21.第七方面,本技术实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本技术实施例第二方面中所描述的部分或全部步骤。
22.第八方面,本技术实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本技术实施例第二方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
23.采用本技术实施例,具备如下有益效果:
24.可以看出,本技术实施例所描述的流水线控制方法、运算模块及相关产品,应用于运算模块,该运算模块包括k条流水线以及p个流水线入口和q个流水线出口,k为正整数,p、q均为大于或等于2的整数;k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器,运算模块在目标操作需要进入流水线i时,检测目标操作的入口流水级之前的前序流水级是否存在未完成操作,流水线i为k条流水线中的任一流水线,如此,可以保证指令经过流水时输出时顺序与输入的顺序相同,节省计算资源。
25.本技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
26.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
27.图1为本技术实施例提供的一种运算模块的结构示意图;
28.图2为本技术实施例提供的一种流水线控制方法的流程示意图;
29.图3为本技术实施例提供的一种电子设备的结构示意图;
30.图4是本技术实施例提供的一种流水线控制装置的功能单元组成框图;
31.图5是本技术实施例提供的一种组合处理装置的功能单元组成框图;
32.图6是本技术实施例提供的一种板卡的功能单元组成框图。
具体实施方式
33.以下分别进行详细说明。
34.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
35.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
36.电子设备可以包括各种具有无线通信功能的手持设备、车载设备、无线耳机、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,ue),移动台(mobile station,ms),终端设备(terminal device)等等,电子设备例如可以为智能手机、平板电脑、耳机盒等等。为方便描述,上面提到的设备统称为电子设备。
37.上述电子设备可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、b超、心电图仪等各类医疗设备。
38.本技术实施例中,运算模块可以为处理器、神经网络芯片、板卡,上述电子设备等等,还可以为应用在多条流水线中的一条上的保序的虚拟或者实体装置,在此不做限定。
39.相关技术中,传统的cpu为了保证指令的输出能够与输入的顺序相符合,在使用单一入口单一出口的1条流水线实现运算功能的前提下,不同类型、不同延迟和不同复杂度的操作均从流水线最前面1级进入,流经流水线的所有流水级后从流水线最后1级输出,因此,存在如下技术缺陷:
40.1、资源浪费,如果某一条指令在流水线的部分流水级中没有做任何有效的逻辑操作,仅仅是保持原样流到下一级。那么可以认为对于该指令而言,部分流水级是存在资源浪费的,因为这些流水级中存在的有效逻辑操作没有被利用。
41.2、性能损失,如果某一条指令在流水线的中间某流水级已经做完了所有的有效操
作得到了最终结果,但是仍然需要将结果流经剩下的流水级之后从最后1级输出。可以认为对该指令而言,其实际执行的时间比其有效部分执行的时间长,即存在性能损失。
42.举例说明下,本技术实施例中,以使用了1条流水线的情况进行说明,在保持1条输入接口和1条输出接口的基础上,在多个流水级设计了入口和出口,不同的指令进入流水线的入口级和离开流水线的出口级固定且可能与其他指令有所区别。由于不同的指令的入口不一致,所以,会带来后来的指令“超车”前面指令的问题,即无法保序。为了解决该问题,本技术实施例,中使用了基于握手协议保序的机制,通过观察流水线中当前的运行状态,结合指令进入流水级的入口出口信息,在指令进入流水线时判断是否可以进入,离开流水线(输出结果)时判断是否可以输出,从而,保证输出时顺序与输入的顺序相同,以避免“超车”现象发生。具体地,为了避免“超车”现象,针对指令进入流水线以及指令计算完成设置了相应的机制,具体如下:
43.一,指令进入流水线时,需要查看在该入口流水级之前的流水级中是否存在还未完成的操作或者保存在流水级之间寄存器中未传递到下一级的数据。这些信息可以通过流水级的入口握手状态以及流水级之间寄存器的握手状态获得,即如果流水线入口存在握手,则该级流水线准备接收输入端口的数据进行计算,而如果寄存器间存在数据或者控制信号的握手,则该寄存器出口处的流水级需要使用寄存器中的数据进行运算,这2种状态下新的指令均不能进入流水线,需要等待前序流水级中的寄存器清空,这就保证了指令输入时不会发生“超车”现象。
44.二,指令计算完成,输出结果,离开流水线时,需要查看在该出口流水级之后的流水级中是否存在还未完成的操作或者保存在流水级之间寄存器中未传递到下一级的数据。这些信息可以通过流水级的出口握手状态以及流水级之间寄存器的握手状态获得,即如果流水线出口存在握手,则该级流水线准备将结果送到输出端口,而如果寄存器间存在数据或者控制信号的握手,则该寄存器出口处的流水级需要使用寄存器中的数据进行运算,这2种状态下新的指令计算完成后的结果均不能离开流水线,需要等待后序流水级中的寄存器清空,这就保证了指令输出时不会发生“超车”现象。
45.本技术实施例,通过以上2条机制的配合,能够保证指令输出时保持与输入的顺序相同,同时不会发生寄存器的竞争,即2条指令同一时刻使用同一级寄存器的情况。同时每条指令执行的长度为其有效执行长度,不存在资源浪费的问题,并且指令之间的切换延迟满足保序和资源竞争下的最小延迟,可以取得较高的性能。
46.以下进行详细介绍。
47.请参阅图1,图1是本技术实施例提供的运算模块示意图,所述运算模块可以包括k条流水线以及p个流水线入口和q个流水线出口,所述k为正整数,所述p、所述q均为大于或等于2的整数;所述k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器;其中,流水级入口1、流水级入口2、

、流水级入口m1为p个流水线入口中的m1个流水线入口,流水级出口1、流水级出口2、

、流水级出口ni为q个流水线出口中的任一ni个流水线出口。
48.所述运算模块用于执行如下步骤:
49.a1、在目标操作需要进入流水线i时,检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作,所述流水线i为所述k条流水线中的任一流水线;
50.a2、在所述目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许所述目标操作进入所述流水线i中相应的寄存器入口。
51.其中,每一流水级对应至少一个运算电路,运算电路可支持多种数据类型的运算,根据指令要求选择相应的运算电路完成对应运算,例如,数据类型可以为16位定点数据或者32位浮点数据等。举例说明下,指令是矩阵加矩阵,选择加法器;指令是矩阵乘矩阵,选择乘法器和加法器,指令是16位定点运算指令,接收该指令进行16位定点运算,等等。具体地,运算电路可以为算术逻辑电路,和/或,逻辑运算电路。算术逻辑电路可以为以下至少一种:乘法器单元、加法器单元。逻辑运算电路可以为以下至少一种:组合逻辑电路、时序逻辑电路等等,在此不做限定,组合逻辑电路由最基本的逻辑门电路组合而成,例如,加法器、译码器、编码器、数据选择器等等。时序逻辑电路,其由最基本的逻辑门电路加上反馈逻辑电路(输出到输入)或器件组合而成的电路,例如,触发器、锁存器、计数器、移位寄存器、存储器等等。上述计算资源可以理解为需要调用的运算电路。
52.其中,流水线处理的数据可以为以下至少一种:神经元数据、权值数据、偏置数据。流水线能够处理的数据可以为以下至少一种数据类型:定点数据、整型数据、离散型数据、连续型数据、幂次型数据、浮点型数据,数据表示的长度可为32位长度浮点数据,16位长度定点数据,16位长度浮点数据,8位长度定点数据,4位长度定点数据等等。
53.具体实现中,目标操作可以为硬件指令在处理器中执行时,解析得到的微指令或控制信号。目标操作对应的指令可以为向量指令,向量指令可以为以下至少一种:向量加法指令、向量加标量指令、向量减法指令、向量乘法指令、向量乘标量指令、向量除法指令、标量除向量指令、向量间与指令、向量内与指令、向量间或指令、向量内或指令、向量指数指令、向量对数指令、向量大于判定指令、向量等于判定指令、向量非指令、向量选择合并指令、向量最大值指令、标量扩展指令、标量替换向量指令、向量替换标量指令、向量检索指令、向量点积指令、随机向量指令、循环移位指令、向量加载指令、向量存储指令、向量搬运指令、矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令、矩阵搬运指令。
54.目标操作可以为单一功能指令或者可以为组合功能指令对应的操作,单一功能指令可以用于实现单一功能,组合功能指令可以用于实现几个功能(组合功能),单一功能指令或者组合指令可以采用一条或者多条流水线执行。
55.本技术实施例中,运算模块可以包括k条流水线,以及p个流水线入口和q个流水线出口,k为正整数,p、q均为大于或等于2的整数,k条流水线中的每一条流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,每一流水级对应至少一个运算电路,每一流水级均有各自的入口和出口,理想情况下,每一流水级只有一个入口和一个出口。
56.具体实现中,在目标操作进入流水线i时,运算模块可以检测目标操作的入口流水级之前的前序流水级是否存在未完成操作,流水线i为k条流水线中的任一流水线,在目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许该目标操作进入流水线i中相应的寄存器入口,否则,则不允许目标操作进入流水线i。
57.在一个可能的示例中,在所述目标操作的出口流水级之后的后序流水级不存在未完成操作方面,所述运算模块还具体用于执行如下步骤:
58.b1、检测所述目标操作的入口流水级之前的前序流水级的寄存器中的数据是否被清空;
59.b2、在所述目标操作的入口流水级之前的寄存器中的数据已被清空时,执行所述允许所述目标操作进入所述流水线i中相应的寄存器入口的步骤。
60.具体实现中,运算模块可以检测目标操作的入口流水级之前的前序流水级的寄存器中的数据是否被清空,在目标操作的入口流水级之前的前序流水级的寄存器中的数据已被清空时,执行允许目标操作进入流水线i中相应的寄存器入口的步骤,否则,则不允许目标操作进入流水线i,如此,保证了指令输入时不会发生“超车”现象。
61.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作方面,所述运算模块具体用于:
62.a11、获取所述目标操作的入口流水级之前的入口握手状态;
63.a12、依据所述入口握手状态检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作。
64.具体实现中,可以获取目标标操作的入口流水级之前的入口握手状态,例如,握手可以通过消息交互实现,若入口握手状态指示流水级入口存在握手时,确认目标操作的入口流水级之前的流水级中存在未完成的操作,否则,确认目标操作的入口流水级之前的流水级中不存在未完成的操作,如此,能够通过入口流水级的入口握手状态实现当前流水线的前序流水线是否存在未完成操作检测功能。
65.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作方面,所述运算模块具体用于:
66.a13、获取所述目标操作的入口流水级的之前的流水级之间的寄存器的握手状态;
67.a14、依据所述握手状态检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作。
68.具体实现中,运算模块可以检测目标操作的入口流水级之前的流水级之间的寄存器的握手状态,若握手状态指示存在握手,确认目标操作的入口流水级之前的流水级中存在未完成的操作,否则,若握手状态指示不存在握手,确认目标操作的入口流水级之前的流水级中不存在未完成的操作,如此,保证了指令输入时不会发生“超车”现象。
69.在一个可能的示例中,所述运算模块还具体用于:
70.a3、在所述目标操作完成所述流水线i的计算时,检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作;
71.a4、在所述目标操作的出口流水级之后的后序流水级不存在未完成操作时,允许所述目标操作离开所述流水线i。
72.具体实现中,在目标操作的出口流水级之后的后序流水级不存在未完成操作时,允许目标操作离开流水线i,反之,在目标操作的出口流水级之后的后序流水级存在未完成操作时,则不允许目标操作离开流水线i。
73.在一个可能的示例中,所述运算模块还具体用于:
74.b3、检测所述目标操作的出口流水级之后的后序流水级的寄存器中的数据是否被清空;
75.b4、在所述目标操作的入口流水级之前的寄存器中的数据已被清空时,执行所述
允许所述目标操作离开所述流水线i的步骤。
76.具体实现中,若目标操作的出口流水级之后的后序流水级的寄存器中的数据未被清空,则不允许目标操作离开流水线i,反之,若目标操作的出口流水级之后的后序流水级的寄存器中的数据已被清空,允许目标操作进入流水线i,保证了指令输出时不会发生“超车”现象。
77.在一个可能的示例中,所述检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作,所述运算模块具体用于:
78.a31、获取所述目标操作的出口流水级之后的出口握手状态;
79.a32、依据所述出口握手状态检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作。
80.具体实现中,可以获取目标操作的出口流水级之后的出口握手状态,若出口握手状态指示流水级出口存在握手时,确认目标操作的出口流水级之后的流水级中存在未完成的操作,否则,若出口握手状态指示流水级出口不存在握手时,确认目标操作的出口流水级之后的流水级中不存在未完成的操作,如此,能够通过出口流水级的出口握手状态实现当前流水线的后序流水线是否存在未完成操作检测功能。
81.在一个可能的示例中,所述检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作,所述运算模块具体用于:
82.a33、获取所述目标操作的出口流水级的之后的流水级之间的寄存器的握手状态;
83.a34、依据所述握手状态检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作。
84.具体实现中,运算模块可以获取目标操作的出口流水级之间寄存器的握手状态,如,握手状态指示存在握手,则存在未完成操作,反之,若握手状态指示不存在握手,则不存在未完成操作,保证了指令输出时不会发生“超车”现象。
85.可以看出,本技术实施例所描述的运算模块,应用于运算模块,该运算模块包括k条流水线以及p个流水线入口和q个流水线出口,k为正整数,p、q均为大于或等于2的整数;k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器,运算模块在目标操作需要进入流水线i时,检测目标操作的入口流水级之前的前序流水级是否存在未完成操作,流水线i为k条流水线中的任一流水线,如此,可以保证指令经过流水时输出时顺序与输入的顺序相同,节省计算资源。
86.上述图1所示的实施例一致地,请参阅图2,图2是本技术实施例提供的一种流水线控制方法的流程示意图,应用于如图1所示的运算模块,所述运算模块包括k条流水线以及p个流水线入口和q个流水线出口,所述k为正整数,所述p、所述q均为大于或等于2的整数;所述k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器;如图2所示,本流水线控制方法包括:
87.201、在目标操作需要进入流水线i时,检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作,所述流水线i为所述k条流水线中的任一流水线。
88.202、在所述目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许所述目标操作进入所述流水线i中相应的寄存器入口。
89.具体实现中,上述步骤201-步骤202的具体描述可以参照上述描述,在此不再赘述。
90.可以看出,本技术实施例所描述的流水线控制方法,应用于运算模块,该运算模块包括k条流水线以及p个流水线入口和q个流水线出口,k为正整数,p、q均为大于或等于2的整数;k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器,运算模块在目标操作需要进入流水线i时,检测目标操作的入口流水级之前的前序流水级是否存在未完成操作,流水线i为k条流水线中的任一流水线,如此,可以保证指令经过流水时输出时顺序与输入的顺序相同,避免出现“超车”现象,节省计算资源。
91.与上述实施例一致地,请参阅图3,图3是本技术实施例提供的一种电子设备的结构示意图,如图所示,该电子设备包括处理器、存储器、通信接口、运算模块以及一个或多个程序,所述运算模块包括k条流水线以及p个流水线入口和q个流水线出口,所述k为正整数,所述p、所述q均为大于或等于2的整数;所述k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器;其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,本技术实施例中,上述程序包括用于执行以下步骤的指令:
92.在目标操作需要进入流水线i时,检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作,所述流水线i为所述k条流水线中的任一流水线;
93.在所述目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许所述目标操作进入所述流水线i中相应的寄存器入口。
94.可以看出,本技术实施例所描述的电子设备,其包括运算模块,该运算模块包括k条流水线以及p个流水线入口和q个流水线出口,k为正整数,p、q均为大于或等于2的整数;k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器,运算模块在目标操作需要进入流水线i时,检测目标操作的入口流水级之前的前序流水级是否存在未完成操作,流水线i为k条流水线中的任一流水线,如此,可以保证指令经过流水时输出时顺序与输入的顺序相同,避免出现“超车”现象,节省计算资源。
95.在一个可能的示例中,上述程序还包括用于执行以下步骤的指令:
96.检测所述目标操作的入口流水级之前的前序流水级的寄存器中的数据是否被清空;
97.在所述目标操作的入口流水级之前的寄存器中的数据已被清空时,执行所述允许所述目标操作进入所述流水线i中相应的寄存器入口的步骤。
98.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作方面,上述程序包括用于执行以下步骤的指令:
99.获取所述目标操作的入口流水级之前的入口握手状态;
100.若所述入口握手状态指示流水级入口存在握手时,确认所述目标操作的入口流水级之前的流水级中存在未完成的操作,否则,确认所述目标操作的入口流水级之前的流水级中不存在未完成的操作。
101.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前的前序流水级
的寄存器中的数据是否被清空方面,上述程序包括用于执行以下步骤的指令:
102.检测所述目标操作的入口流水级之前保存在流水级之间的寄存器中是否存在未传递到下一级的数据;
103.若是,则确定所述目标操作的入口流水级之前的前序流水级的寄存器中的数据未被清空,否则,则确认所述目标操作的入口流水级之前的前序流水级的寄存器中的数据已被清空。
104.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前保存在流水级之间的寄存器中是否存在未传递到下一级的数据方面,上述程序包括用于执行以下步骤的指令:
105.获取所述目标操作的入口流水级之间寄存器的握手状态;
106.根据所述寄存器的握手状态检测所述目标操作的入口流水级之前保存在流水级之间的寄存器中是否存在未传递到下一级的数据。
107.在一个可能的示例中,上述程序还包括用于执行以下步骤的指令:
108.在所述目标操作完成所述流水线i时,检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作;
109.在所述目标操作的出口流水级之后的后序流水级不存在未完成操作,允许所述目标操作进入所述流水线i的下一流水线。
110.在一个可能的示例中,在所述检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作方面,上述程序包括用于执行以下步骤的指令:
111.获取所述目标操作的出口流水级之后的出口握手状态;
112.若所述出口握手状态指示流水级出口存在握手时,确认所述目标操作的出口流水级之后的流水级中存在未完成的操作,否则,确认所述目标操作的出口流水级之后的流水级中不存在未完成的操作。
113.在一个可能的示例中,上述程序还包括用于执行以下步骤的指令:
114.检测所述目标操作的出口流水级之后的后序流水级的寄存器中的数据是否被清空;
115.在所述目标操作的出口流水级之后的后序流水级的寄存器中的数据已被清空时,执行所述允许所述目标操作进入所述流水线i的下一流水线的步骤。
116.在一个可能的示例中,在所述检测所述目标操作的出口流水级之后的后序流水级的寄存器中的数据是否被清空方面,上述程序包括用于执行以下步骤的指令:
117.检测所述目标操作的出口流水级之后保存在流水级之间的寄存器中是否存在未传递到下一级的数据;
118.若是,则确定所述目标操作的出口流水级之后的后序流水级的寄存器中的数据未被清空,否则,则确认所述目标操作的出口流水级之后的后序流水级的寄存器中的数据已被清空。
119.在一个可能的示例中,在所述检测所述目标操作的出口流水级之后保存在流水级之间的寄存器中是否存在未传递到下一级的数据方面,上述程序包括用于执行以下步骤的指令:
120.获取所述目标操作的出口流水级之间寄存器的握手状态;
121.根据所述寄存器的握手状态检测所述目标操作的出口流水级之后保存在流水级之间的寄存器中是否存在未传递到下一级的数据。
122.上述主要从方法侧执行过程的角度对本技术实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
123.本技术实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
124.请参阅图4,图4是本实施例提供的一种流水线控制装置的结构示意图。该流水线控制装置应用于电子设备,该电子设备包括运算模块,所述运算模块包括k条流水线以及p个流水线入口和q个流水线出口,所述k为正整数,所述p、所述q均为大于或等于2的整数;所述k条流水线中每一流水线均包括多个流水级,每一流水线包括多个流水级入口和多个流水级出口,相邻流水级之间包括至少一个寄存器;该流水线控制装置可包括:检测单元401和执行单元402,其中,
125.所述检测单元401,用于在目标操作需要进入流水线i时,检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作,所述流水线i为所述k条流水线中的任一流水线;
126.所述执行单元402,用于在所述目标操作的入口流水级之前的前序流水级不存在未完成操作时,允许所述目标操作进入所述流水线i中相应的寄存器入口。
127.在一个可能的示例中,所述装置用于实现如下功能:
128.所述检测单元401,还用于检测所述目标操作的入口流水级之前的前序流水级的寄存器中的数据是否被清空;
129.由所述执行单元402,用于在所述目标操作的入口流水级之前的寄存器中的数据已被清空时,执行所述允许所述目标操作进入所述流水线i中相应的寄存器入口的步骤。
130.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前的前序流水级是否存在未完成操作方面,所述检测单元401具体用于:
131.获取所述目标操作的入口流水级之前的入口握手状态;
132.若所述入口握手状态指示流水级入口存在握手时,确认所述目标操作的入口流水级之前的流水级中存在未完成的操作,否则,确认所述目标操作的入口流水级之前的流水级中不存在未完成的操作。
133.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前的前序流水级的寄存器中的数据是否被清空方面,所述检测单元401具体用于:
134.检测所述目标操作的入口流水级之前保存在流水级之间的寄存器中是否存在未
传递到下一级的数据;
135.若是,则确定所述目标操作的入口流水级之前的前序流水级的寄存器中的数据未被清空,否则,则确认所述目标操作的入口流水级之前的前序流水级的寄存器中的数据已被清空。
136.在一个可能的示例中,在所述检测所述目标操作的入口流水级之前保存在流水级之间的寄存器中是否存在未传递到下一级的数据方面,所述检测单元具体用于:
137.获取所述目标操作的入口流水级之间寄存器的握手状态;
138.根据所述寄存器的握手状态检测所述目标操作的入口流水级之前保存在流水级之间的寄存器中是否存在未传递到下一级的数据。
139.在一个可能的示例中,所述装置还用于执行如下功能:
140.所述检测单元401,还用于在所述目标操作完成所述流水线i时,检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作;
141.所述执行单元402,还用于在所述目标操作的出口流水级之后的后序流水级不存在未完成操作,允许所述目标操作进入所述流水线i的下一流水线。
142.在一个可能的示例中,在所述检测所述目标操作的出口流水级之后的后序流水级是否存在未完成操作方面,所述检测单元401具体用于:
143.获取所述目标操作的出口流水级之后的出口握手状态;
144.若所述出口握手状态指示流水级出口存在握手时,确认所述目标操作的出口流水级之后的流水级中存在未完成的操作,否则,确认所述目标操作的出口流水级之后的流水级中不存在未完成的操作。
145.在一个可能的示例中,所述装置还用于如下执行功能:
146.所述检测单元401,还具体用于检测所述目标操作的出口流水级之后的后序流水级的寄存器中的数据是否被清空;
147.由所述执行单元402在所述目标操作的出口流水级之后的后序流水级的寄存器中的数据已被清空时,执行所述允许所述目标操作进入所述流水线i的下一流水线的步骤。
148.在一个可能的示例中,在所述检测所述目标操作的出口流水级之后的后序流水级的寄存器中的数据是否被清空方面,所述检测单元401具体用于:
149.检测所述目标操作的出口流水级之后保存在流水级之间的寄存器中是否存在未传递到下一级的数据;
150.若是,则确定所述目标操作的出口流水级之后的后序流水级的寄存器中的数据未被清空,否则,则确认所述目标操作的出口流水级之后的后序流水级的寄存器中的数据已被清空。
151.在一个可能的示例中,在所述检测所述目标操作的出口流水级之后保存在流水级之间的寄存器中是否存在未传递到下一级的数据方面,所述检测单元401具体用于:
152.获取所述目标操作的出口流水级之间寄存器的握手状态;
153.根据所述寄存器的握手状态检测所述目标操作的出口流水级之后保存在流水级之间的寄存器中是否存在未传递到下一级的数据。
154.可以理解的是,本实施例的流水线控制装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不
再赘述。
155.图5是示出根据本披露实施例的一种组合处理装置500的结构图。如图5中所示,该组合处理装置500包括电子设备502、接口装置504、其他处理装置506和存储装置508。根据不同的应用场景,电子设备中可以包括一个或多个计算装置510,该计算装置可以配置用于执行本文结合附图1-图4所描述的操作。
156.在不同的实施例中,本披露的电子设备可以配置成执行用户指定的操作。在示例性的应用中,该电子设备可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在电子设备内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的电子设备而言,其可以视为具有单核结构或者同构多核结构。
157.在示例性的操作中,本披露的电子设备可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的电子设备而言,其可以视为具有单核结构或者同构多核结构。然而,当将电子设备和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
158.在一个或多个实施例中,该其他处理装置可以作为本披露的电子设备(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该电子设备协作以共同完成运算任务。
159.在一个或多个实施例中,该接口装置可以用于在电子设备与其他处理装置间传输数据和控制指令。例如,该电子设备可以经由所述接口装置从其他处理装置中获取输入数据,写入该电子设备片上的存储装置(或称存储器)。进一步,该电子设备可以经由所述接口装置从其他处理装置中获取控制指令,写入电子设备片上的控制缓存中。替代地或可选地,接口装置也可以读取电子设备的存储装置中的数据并传输给其他处理装置。
160.附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述电子设备和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述电子设备和/或所述其他处理装置的数据。例如,该数据可以是在电子设备或其他处理装置的内部或片上存储装置中无法全部保存的数据。
161.在一些实施例里,本披露还公开了一种芯片(例如图6中示出的芯片602)。在一种实现中,该芯片是一种系统级芯片(system on chip,soc),并且集成有一个或多个如图5中所示的组合处理装置。该芯片可以通过对外接口装置(如图6中示出的对外接口装置606)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口
模块(例如dram接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图6对该板卡进行详细地描述。
162.图6是示出根据本披露实施例的一种板卡600的结构示意图。如图6中所示,该板卡包括用于存储数据的存储器件604,其包括一个或多个存储单元610。该存储器件可以通过例如总线等方式与控制器件608和上文所述的芯片602进行连接和数据传输。进一步,该板卡还包括对外接口装置606,其配置用于芯片(或芯片封装结构中的芯片)与外部设备612(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准pcie接口等。
163.在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(micro controller unit,mcu),以用于对所述芯片的工作状态进行调控。
164.根据上述结合图5和图6的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
165.根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
166.需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关
描述。
167.在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
168.在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
169.在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
170.在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如cpu、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistive random access memory,rram)、动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random access memory,sram)、增强动态随机存取存储器(enhanced dynamic random access memory,edram)、高带宽存储器(high bandwidth memory,hbm)、混合存储器立方体(hybrid memory cube,hmc)、rom和ram等。
171.本技术实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
172.本技术实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装
包,上述计算机包括电子设备。
173.虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1