一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2022-02-20 05:15:26 来源:中国专利 TAG:


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


背景技术:

2.传统的处理器设计中使用单一流水线在同一个运算模块中实现多种运算功能,该流水线一般只有1个入口和1个出口,使用同一条运算通路,并且流水线中各个流水级之间通过握手协议传递数据和控制信号,但是,这样的设计会导致不同种类的运算指令都要经过所有的流水级,即使在某些流水级中未进行任何操作,而只是原样传递数据和控制信息,也需要经过所有的流水级,导致计算延迟,降低了计算效率。


技术实现要素:

3.本技术实施例提供一种流水线控制方法、运算模块及相关产品,能够基于多条流水线多个出口入口的设计,提升计算效率,且能够防止在流水线的输出端导致输出结果的乱序。
4.第一方面,本技术实施例还提供了一种运算模块,所述运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,所述k、所述p、所述q均为大于或等于2的整数;所述数拍控制器中保存所述k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数;
5.所述运算模块用于:
6.获取所述第一指令的剩余拍数;
7.获取待发射的第二指令的执行拍数;
8.在所述第二指令的执行拍数小于所述第一指令的剩余拍数时,允许所述第二指令进入相应的流水线。
9.第二方面,本技术实施例还提供了一种流水线控制方法,应用于运算模块,所述运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,所述k、所述p、所述q均为大于或等于2的整数;所述数拍控制器中保存所述k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数;所述方法包括:
10.获取所述第一指令的剩余拍数;
11.获取待发射的第二指令的执行拍数;
12.在所述第二指令的执行拍数小于所述第一指令的剩余拍数时,允许所述第二指令进入相应的流水线。
13.第三方面,本技术实施例还提供了一种神经网络芯片,所述神经网络芯片包括如第一方面中任一方面所述的运算模块,或者,用于执行如第二方面所述的方法。
14.第四方面,本技术实施例还提供了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如第三方面所述的神经网络芯片;
15.其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别
连接;
16.所述存储器件,用于存储数据;
17.所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
18.所述控制器件,用于对所述芯片的状态进行监控。
19.第五方面,本技术实施例还提供了一种电子设备,所述电子设备包括如第一方面任一项所述的运算模块,或者,所述电子设备用于执行如第二方面所述的方法,或者,所述电子设备包括如第三方面所述的神经网络芯片,或者,所述电子设备包括如第四方面所述的板卡。
20.第六方面,本技术实施例还提供了一种流水线控制装置,应用于运算模块,所述运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,所述k、所述p、所述q均为大于或等于2的整数;所述数拍控制器中保存所述k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数;所述装置包括:获取单元和执行单元,其中,
21.所述获取单元,用于获取所述第一指令的剩余拍数;
22.所述获取单元,还用于获取待发射的第二指令的执行拍数;
23.所述执行单元,用于在所述第二指令的执行拍数小于所述第一指令的剩余拍数时,允许所述第二指令进入相应的流水线。
24.第七方面,本技术实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本技术实施例第二方面中所描述的部分或全部步骤。
25.第八方面,本技术实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本技术实施例第二方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
26.采用本技术实施例,具备如下有益效果:
27.可以看出,本技术实施例所描述的流水线控制方法、运算模块及相关产品,应用于运算模块,运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,k、p、q均为大于或等于2的整数;数拍控制器中保存k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数,运算模块获取第一指令的剩余拍数,获取待发射的第二指令的执行拍数,在执行拍数小于剩余拍数时,允许第二指令进入相应的流水线,一方面,能够基于多条流水线多个出口入口的设计,提升计算效率,另一方面能够防止在流水线的输出端导致输出结果的乱序。
28.本技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
29.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1a为本技术实施例提供的一种运算模块的结构示意图;
31.图1b为本技术实施例提供的一种流水线的演示示意图;
32.图2为本技术实施例提供的一种流水线控制方法的流程示意图;
33.图3为本技术实施例提供的一种电子设备的结构示意图;
34.图4是本技术实施例提供的一种流水线控制装置的功能单元组成框图;
35.图5是本技术实施例提供的一种组合处理装置的功能单元组成框图;
36.图6是本技术实施例提供的一种板卡的功能单元组成框图。
具体实施方式
37.以下分别进行详细说明。
38.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
39.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
40.电子设备可以包括各种具有无线通信功能的手持设备、车载设备、无线耳机、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,ue),移动台(mobile station,ms),终端设备(terminal device)等等,电子设备例如可以为智能手机、平板电脑、耳机盒等等。为方便描述,上面提到的设备统称为电子设备。
41.上述电子设备可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、b超、心电图仪等各类医疗设备。
42.相关技术中,传统的cpu为了保证指令的输出能够与输入的顺序相符合,在使用单一入口单一出口的1条流水线实现运算功能的前提下,不同类型、不同延迟和不同复杂度的操作均从流水线最前面1级进入,流经流水线的所有流水级后从流水线最后1级输出,因此,存在如下技术缺陷:
43.1、资源浪费,如果某一条指令在流水线的部分流水级中没有做任何有效的逻辑操作,仅仅是保持原样流到下一级。那么可以认为对于该指令而言,部分流水级是存在资源浪费的,因为这些流水级中存在的有效逻辑操作没有被利用。
44.2、性能损失,如果某一条指令在流水线的中间某流水级已经做完了所有的有效操作得到了最终结果,但是仍然需要将结果流经剩下的流水级之后从最后1级输出。可以认为对该指令而言,其实际执行的时间比其有效部分执行的时间长,即存在性能损失。
45.基于上述分析,本技术实施例中,在多条流水线多个出口入口的方案中,多个流水
线并行处理的多个指令如果不能保序,则会出现指令乱序。此时,可以利用本技术实施例的数拍协议,在多个流水线中进行指令保序。
46.具体地,在包括多条流水线的处理器中,在多条流水线的指令输入端,设置一个数拍控制器。数拍控制器中保存当前流水线中正在执行的指令中,所需拍数最长的一个指令,且按照时钟信号进行倒计时更新。例如,当前流水线中正在的执行的指令中最长的拍数,还有3拍,则需要发射的指令的拍数小于3时,才能进入流水线,反之,大于等于3则不能进入流水线,防止在流水线的输出端导致输出结果的乱序。
47.以下进行详细介绍。
48.请参阅图1a,图1a是本技术实施例提供的运算模块示意图,所述运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,所述k、所述p、所述q均为大于或等于2的整数;所述数拍控制器中保存所述k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数;
49.所述运算模块用于执行如下步骤:
50.a1、获取所述第一指令的剩余拍数;
51.a2、获取待发射的第二指令的执行拍数;
52.a3、在所述第二指令的执行拍数小于所述第一指令的剩余拍数时,允许所述第二指令进入相应的流水线。
53.其中,流水线可以包括多个流水级,每一流水级可以对应至少一个运算电路,运算电路可支持多种数据类型的运算,根据指令要求选择相应的运算电路完成对应运算,例如,数据类型可以为16位定点数据或者32位浮点数据等。举例说明下,指令是矩阵加矩阵,选择加法器;指令是矩阵乘矩阵,选择乘法器和加法器,指令是16位定点运算指令,接收该指令进行16位定点运算,等等。具体地,运算电路可以为算术逻辑电路,和/或,逻辑运算电路。算术逻辑电路可以为以下至少一种:乘法器单元、加法器单元。逻辑运算电路可以为以下至少一种:组合逻辑电路、时序逻辑电路等等,在此不做限定,组合逻辑电路由最基本的逻辑门电路组合而成,例如,加法器、译码器、编码器、数据选择器等等。时序逻辑电路,其由最基本的逻辑门电路加上反馈逻辑电路(输出到输入)或器件组合而成的电路,例如,触发器、锁存器、计数器、移位寄存器、存储器等等。上述计算资源可以理解为需要调用的运算电路。
54.其中,流水线处理的数据可以为以下至少一种:神经元数据、权值数据、偏置数据。流水线能够处理的数据可以为以下至少一种数据类型:定点数据、整型数据、离散型数据、连续型数据、幂次型数据、浮点型数据,数据表示的长度可为32位长度浮点数据,16位长度定点数据,16位长度浮点数据,8位长度定点数据,4位长度定点数据等等。数据可包括以下至少一种:输入神经元数据、权值数据和偏置数据。
55.第一指令、第二指令均可以为向量指令,向量指令可以为以下至少一种:向量加法指令、向量加标量指令、向量减法指令、向量乘法指令、向量乘标量指令、向量除法指令、标量除向量指令、向量间与指令、向量内与指令、向量间或指令、向量内或指令、向量指数指令、向量对数指令、向量大于判定指令、向量等于判定指令、向量非指令、向量选择合并指令、向量最大值指令、标量扩展指令、标量替换向量指令、向量替换标量指令、向量检索指令、向量点积指令、随机向量指令、循环移位指令、向量加载指令、向量存储指令、向量搬运指令、矩阵乘向量指令、向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、
矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令、矩阵搬运指令。
56.第一指令、第二指令均可以为单一功能指令或者可以为组合功能指令,单一功能指令可以用于实现单一功能,组合功能指令可以用于实现几个功能(组合功能),单一功能指令或者组合指令可以采用一条或者多条流水线执行。
57.本技术实施例中,运算模块可以包括k条流水线,以及p个流水线入口和q个流水线出口,k为正整数,p、q均为大于或等于2的整数,k条流水线中的每一条流水线均包括多个流水级,每一流水级对应至少一个运算电路,任一流水线均可以包括一个流水线入口、流水线出口以及t个中间流水级,t为正整数,举例说明下,如图1b所示,流水线入口、中间流水级1、中间流水级2和流水线出口2则可以构成一条流水线。相邻流水级之间可以包括至少一个寄存器。
58.具体实现中,由于流水线的不同流水级中分布有不同的计算资源,例如,乘法器单元分布在第3和第4流水级,而加法器单元分布在第1和第2流水级。而不同的指令执行所需要的计算资源不同,且并不一定使用所有的计算资源,同时部分指令不需要流水到最后一级流水级才输出结果,所以,可以根据指令的计算资源使用情况,灵活配置该指令进入流水线的入口和出口。例如,单一乘法指令可以从第3级流水级进入,在3、4级完成计算后从第4级输出结果;又例如,单一加法指令可以从第5级流水级进入,在5、6级完成计算后从第6级输出结果。这样的好处在于,所有指令都可以以最小的计算延迟,使用最少的计算资源在流水线中完成计算。
59.本技术实施例中,运算模块采用上述多入口多出口的多流水线设计策略,在节省面积的同时,解决了物理可实现性问题,以2条流水线为例,其可以将该模块所要实现的指令按照功能、可复用性以及平衡原则划分为2类,分别在这2条流水线中实现。
60.具体实现中,运算模块可以通过数拍控制器获取第一指令的剩余拍数,以及获取待发射的第二指令的执行拍数,并且在执行拍数小于剩余拍数时,允许所述第二指令进入相应的流水线,即允许第二指令进入相应的流水线的流水线入口,如此,能够防止在流水线的输出端导致输出结果的乱序。
61.在一个可能的示例中,所述运算模块还具体用于:
62.在所述第二指令的执行拍数大于或等于所述第一指令的剩余拍数时,等待所述第一指令执行完成,并在所述第一指令执行完成后,允许所述第二指令进入相应的流水线,更新所述数拍控制器中所述第一指令的剩余拍数。
63.具体实现中,通过上述方式,能够防止在流水线的输出端导致输出结果的乱序。
64.本技术实施例中,所述数拍控制器设置于所述k条流水线的指令输入端。
65.具体实现中,将数拍控制器设置于k条流水线的指令输入端,能够用以实现对当前正在执行的流水线的指令进行剩余拍数统计。
66.在一个可能的示例中,所述流水线包括多个流水级,每一流水级对应至少一个运算电路,所述数拍控制器中还保存有资源表格,所述运算模块还用于:
67.依据所述资源表格更新所述第一指令的剩余拍数。
68.具体实现中,数拍控制器还可以包括资源表格,该资源表格可以用于记录当前流水线正在执行的指令中每一指令对应的各运算电路的当前或者后续需要的占用情况,即资源表格保存正在执行的每一指令所占用的运算电路,基于该资源表格,数拍控制器还可以
用于查询资源表格,例如,依据资源表格更新第一指令的剩余拍数,例如,通过资源表格可以看出当前运算电路的占用情况,该占用情况反映了指令的执行位置,进而,可以知晓第一指令的执行位置,基于该执行位置便可以知晓第一指令的剩余拍数,如此,运算模块可以在数拍的基础上,更好地对指令进行保序进行管理。
69.数拍控制器可以维护一个资源表格。资源表格可以用于记录各运算电路的占用情况,如为流水线1可以设置一个包括至少六个标志位的资源表格,每个标志位可以用于表示对应的运算电路是否被使用。数拍控制器通过查询资源表格,可以在数拍的基础上,更好的对指令进行保序进行管理,并最大限度的实现指令乱序。避免只以拍设限制,导致运算电路复用率低的情况。
70.在一个可能的示例中,所述运算模块还用于:
71.依据所资源表格和所述第二指令需占用的运算电路,确定是否允许所述第二指令进入相应的流水线。
72.具体实现中,即使拍数不满足(第二指令的执行拍数大于或等于第一指令的剩余拍数),只要第二指令占用的运算电路与第一指令的剩余拍数所需的运算电路不冲突,则第二指令也可以进入相应的流水线。举例说明下,指令a的执行拍数大于流水线中正在执行的指令b的剩余拍数,如果指令a占用的运算电路与指令b的剩余拍数所需的运算电路冲突时,那么不允许指令b进入相应的流水线,反之,如果指令a占用的运算电路与指令b的剩余拍数所需的运算电路不冲突时,那么允许指令b进入相应的流水线。
73.在一个可能的示例中,所述运算模块还具体用于实现如下功能:
74.b1、获取当前正在执行的流水线中的资源表格,所述资源表格包括多个标志位,每一标志位用于表示对应的运算电路是否被占用;
75.b2、依据所述多个标志位确定所述当前正在执行的流水线的运算电路的占用情况。
76.具体实现中,运算模块可以用于获取当前正在执行的流水线中的资源表格,该资源表格包括多个标志位,每一标志位用于表示对应的运算电路是否被占用,例如,标志位可以以flag进行表示,flag=1则可以表示为运算电路被占用,flag=0则表示运算电路未被占用。进而,可以依据多个标志位确定当前正在执行的流水线的运算电路的占用情况,具体如下表所示:
77.流水线的n个运算电路标志位运算电路1flag1运算电路2flag2运算电路3flag3......运算电路nflagn
78.例如,当前正在执行的流水线的n个运算电路为例,其每一运算电路对应一个标志位,每一标志位则表示相应的运算电路的占用情况。
79.在一个可能的示例中,所述资源表格还用于记录正在执行的每一指令的执行时长,所述运算模块通过所述数拍控制器获取所述执行时长,并依据所述执行时长确定相应的运算电路的剩余占用时长。
80.具体实现中,资源表格还可以用于记录正在执行的每一指令的执行时长,由于指令由代码构成,每一代码的执行时长一定,因此,可以计算每一指令的代码执行位置,并以此确定每一指令的执行时长以及剩余执行时长,运算模块则可以通过数拍控制器获取执行时长,并依据执行时长确定相应的运算电路的剩余占用时长,以便在该运算电路空闲时,分配给其他指令或者流水线使用,如此,可以在数拍的基础上,更好的对指令进行保序进行管理,并最大限度的实现指令乱序。避免只以拍摄限制,导致功能电路复用率低的情况。
81.在一个可能的示例中,在流水线i包括6个运算电路时,所述6个运算电路按照所述流水线i按照由上到下的顺序分别为:第一级加法器、第二级加法器、第一级乘法器、第二级乘法器、所述第一级加法器和所述第二级加法器,所述流水线i为所述k条流水线中的任一流水线。
82.具体实现中,以流水线i为例,流水线i为k条流水线中的任一流水线。在流水线i包括6个运算电路时,该6个运算电路按照所述流水线i按照由上到下的顺序分别为:第一级加法器、第二级加法器、第一级乘法器、第二级乘法器、所述第一级加法器和所述第二级加法器,当然,流水线的具体设置可以依据实际情况(运算资源需求)而定,能够实现流水线自由配置,提升运算模块的运算效率。
83.举例说明下,以两条流水线为例,第一条流水线为line1,第二条流水线为line2。在line1中,按流水线由上到下的顺序设置有六个功能模块。分别为:stage1-1-加法器1(第一级加法器)、stage1-2-加法器2(第二级加法器)、stage1-3-乘法器1(第一级乘法器)、stage1-4-乘法器2(第二级乘法器)、stage1-5-加法器1(第一级加法器)、stage1-6-加法器2(第二级加法器)。第一级加法器和第二级加法器配合使用已完成加法的两级运算。当然,乘法器同理。也可在流水线中只设置一级加法器或乘法器。
84.在一个可能的示例中,所述流水线i支持单指令多数据流simd硬化指令。
85.具体实现中,流水线i支持单指令单指令多数据流(single instruction multiple data,simd)硬化指令。以上述line1为例,则line1所支持的单指令多数据流(single instruction multiple data,simd)硬化指令可以包括:加 乘 加(1-6均使用)、加 乘(5、6不用)、乘 加(1、2不用)、加 加(3、4不用)。具体地,加 乘 加,即第一级加法器、第二级加法器、第一级乘法器、第二级乘法器、第一级加法器和第二级加法器均使用,即6个运算电路全部用上。
86.在一个可能的示例中,所述k条流水线中至少两条流水线支持simd硬件指令,该至少两条流水线中每一流水线均包括多个运算电路,该运算电路为以下至少一种:随机运算电路、加法器、搜索运算电路、配置运算电路、乘法器、池化运算电路、比较运算电路、逻辑运算电路、取极值运算电路、滤波运算电路和干扰消除电路。
87.具体实现中,举例说明下,simd可以包括至少两条流水线,每条流水线各均可以包括6个功能模块。以line1为例,例如,加 乘 加(1-6均使用),其为六拍;又例如,加 乘(5、6不用),其为四拍(加乘各用两个运算电路完成)。
88.具体实现中,如果流水线中,现有add mul add(六拍),和pool(一拍)指令,则数拍控制器中,记录add mul add(六拍)的当前剩余拍数。新进入指令的拍数小于其当前剩余拍数时,才可以进入。如果新进入的指令的拍数大于6,则等其执行完毕后,进入新指令,并更新数拍控制器中的当前最长拍数指令的当前剩余拍数。
89.具体实现中,在不满足数拍控制器的条件时,运算模块则可以控制数拍控制器不接收指令,在满足条件时,运算模块则可以控制数拍控制器接收指令并将指令发送至流水线。
90.可以看出,本技术实施例所描述的流运算模块,该运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,k、p、q均为大于或等于2的整数;数拍控制器中保存k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数,运算模块获取第一指令的剩余拍数,获取待发射的第二指令的执行拍数,在执行拍数小于剩余拍数时,允许第二指令进入相应的流水线,一方面,能够基于多条流水线多个出口入口的设计,提升计算效率,另一方面能够防止在流水线的输出端导致输出结果的乱序。
91.上述图1a所示的实施例一致地,请参阅图2,图2是本技术实施例提供的一种流水线控制方法的流程示意图,应用于如图1a所示的运算模块,所述运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,所述k、所述p、所述q均为大于或等于2的整数;所述数拍控制器中保存所述k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数;如图2所示,本流水线控制方法包括:
92.201、获取所述第一指令的剩余拍数。
93.202、获取待发射的第二指令的执行拍数。
94.203、在所述第二指令的执行拍数小于所述第一指令的剩余拍数时,允许所述第二指令进入相应的流水线。
95.具体实现中,上述步骤201-步骤203的具体描述可以参照上述描述,在此不再赘述。
96.可以看出,本技术实施例所描述的流水线控制方法,应用于运算模块,运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,k、p、q均为大于或等于2的整数;数拍控制器中保存k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数,通过运算模块获取第一指令的剩余拍数,获取待发射的第二指令的执行拍数,在执行拍数小于剩余拍数时,允许第二指令进入相应的流水线,一方面,能够基于多条流水线多个出口入口的设计,提升计算效率,另一方面能够防止在流水线的输出端导致输出结果的乱序。
97.与上述实施例一致地,请参阅图3,图3是本技术实施例提供的一种电子设备的结构示意图,如图所示,该电子设备包括处理器、存储器、通信接口、运算模块以及一个或多个程序,所述运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,所述k、所述p、所述q均为大于或等于2的整数;所述数拍控制器中保存所述k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数;其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,本技术实施例中,上述程序包括用于执行以下步骤的指令:
98.获取所述第一指令的剩余拍数;
99.获取待发射的第二指令的执行拍数;
100.在所述第二指令的执行拍数小于所述第一指令的剩余拍数时,允许所述第二指令进入相应的流水线。
101.可以看出,本技术实施例所描述的电子设备,该电子设备包括运算模块,该运算模
块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,k、p、q均为大于或等于2的整数,数拍控制器中保存k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数,获取第一指令的剩余拍数,获取待发射的第二指令的执行拍数,在执行拍数小于剩余拍数时,允许第二指令进入相应的流水线,一方面,能够基于多条流水线多个出口入口的设计,提升计算效率,另一方面能够防止在流水线的输出端导致输出结果的乱序。
102.在一个可能的示例中,上述程序还包括用于执行以下步骤的指令:
103.在所述第二指令的执行拍数大于或等于所述第一指令的剩余拍数时,等待所述第一指令执行完成,并在所述第一指令执行完成后,允许所述第二指令进入相应的流水线,更新所述数拍控制器中所述第一指令的剩余拍数。
104.在一个可能的示例中,所述流水线包括多个流水级,每一流水级对应至少一个运算电路,所述数拍控制器中还保存有资源表格,所述资源表格保存正在执行的每一指令所占用的运算电路,上述程序还包括用于执行以下步骤的指令:
105.依据所述资源表格更新所述第一指令的剩余拍数。
106.在一个可能的示例中,上述程序还包括用于执行以下步骤的指令:
107.依据所资源表格和所述第二指令需占用的运算电路,确定是否允许所述第二指令进入相应的流水线。
108.在一个可能的示中,所述资源表格还用于记录正在执行的每一指令的执行时长,上述程序还包括用于执行以下步骤的指令:
109.通过所述数拍控制器获取所述执行时长,并依据所述执行时长确定相应的运算电路的剩余占用时长。
110.在一个可能的示例中,在流水线i包括6个运算电路时,所述6个运算电路按照所述流水线i按照由上到下的顺序分别为:第一级加法器、第二级加法器、第一级乘法器、第二级乘法器、所述第一级加法器和所述第二级加法器,所述流水线i为所述k条流水线中的任一流水线。
111.在一个可能的示例中,所述流水线i支持单指令多数据流simd硬化指令。
112.在一个可能的示例中,所述k条流水线中至少两条流水线支持simd硬件指令,该至少两条流水线中每一流水线均包括多个运算电路,该运算电路为以下至少一种:随机运算电路、加法器、搜索运算电路、配置运算电路、乘法器、池化运算电路、比较运算电路、逻辑运算电路、取极值运算电路、滤波运算电路和干扰消除电路。
113.上述主要从方法侧执行过程的角度对本技术实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
114.本技术实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需
要说明的是,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
115.请参阅图4,图4是本实施例提供的一种流水线控制装置的结构示意图。该流水线控制装置应用于电子设备,该电子设备包括运算模块,所述运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,所述k、所述p、所述q均为大于或等于2的整数;所述数拍控制器中保存所述k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数;该流水线控制装置可包括:获取单元401和执行单元402,其中,
116.所述获取单元401,用于获取所述第一指令的剩余拍数;
117.所述获取单元401,还用于获取待发射的第二指令的执行拍数;
118.所述执行单元402,用于在所述第二指令的执行拍数小于所述第一指令的剩余拍数时,允许所述第二指令进入相应的流水线。
119.可以看出,本技术实施例所描述的流水线控制装置,应用于运算模块,运算模块包括k条流水线以及p个流水线入口、q个流水线出口以及数拍控制器,k、p、q均为大于或等于2的整数;数拍控制器中保存k条流水线中正在执行的指令中所需拍数最长的第一指令的剩余拍数,通过获取第一指令的剩余拍数,获取待发射的第二指令的执行拍数,在执行拍数小于剩余拍数时,允许第二指令进入相应的流水线,一方面,能够基于多条流水线多个出口入口的设计,提升计算效率,另一方面能够防止在流水线的输出端导致输出结果的乱序。
120.在一个可能的示例中,所述执行单元402具体用于:
121.在所述第二指令的执行拍数大于或等于所述第一指令的剩余拍数时,等待所述第一指令执行完成,并在所述第一指令执行完成后,允许所述第二指令进入相应的流水线,更新所述数拍控制器中所述第一指令的剩余拍数。
122.在一个可能的示例中,所述流水线包括多个流水级,每一流水级对应至少一个运算电路,所述数拍控制器中还保存有资源表格,所述资源表格保存正在执行的每一指令所占用的运算电路,所述执行单元402具体用于:
123.依据所述资源表格更新所述第一指令的剩余拍数。
124.在一个可能的示中,所述执行单元402具体用于:
125.依据所资源表格和所述第二指令需占用的运算电路,确定是否允许所述第二指令进入相应的流水线。
126.在一个可能的示例中,在流水线i包括6个运算电路时,所述6个运算电路按照所述流水线i按照由上到下的顺序分别为:第一级加法器、第二级加法器、第一级乘法器、第二级乘法器、所述第一级加法器和所述第二级加法器,所述流水线i为所述k条流水线中的任一流水线。
127.在一个可能的示例中,所述流水线i支持单指令多数据流simd硬化指令。
128.在一个可能的示例中,所述k条流水线中至少两条流水线支持simd硬件指令,该至少两条流水线中每一流水线均包括多个运算电路,该运算电路为以下至少一种:随机运算电路、加法器、搜索运算电路、配置运算电路、乘法器、池化运算电路、比较运算电路、逻辑运算电路、取极值运算电路、滤波运算电路和干扰消除电路。
129.可以理解的是,本实施例的流水线控制装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不
再赘述。
130.图5是示出根据本披露实施例的一种组合处理装置500的结构图。如图5中所示,该组合处理装置500包括电子设备502、接口装置504、其他处理装置506和存储装置508。根据不同的应用场景,电子设备中可以包括一个或多个计算装置510,该计算装置可以配置用于执行本文结合附图1a-4所描述的操作。
131.在不同的实施例中,本披露的电子设备可以配置成执行用户指定的操作。在示例性的应用中,该电子设备可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在电子设备内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的电子设备而言,其可以视为具有单核结构或者同构多核结构。
132.在示例性的操作中,本披露的电子设备可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的电子设备而言,其可以视为具有单核结构或者同构多核结构。然而,当将电子设备和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
133.在一个或多个实施例中,该其他处理装置可以作为本披露的电子设备(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该电子设备协作以共同完成运算任务。
134.在一个或多个实施例中,该接口装置可以用于在电子设备与其他处理装置间传输数据和控制指令。例如,该电子设备可以经由所述接口装置从其他处理装置中获取输入数据,写入该电子设备片上的存储装置(或称存储器)。进一步,该电子设备可以经由所述接口装置从其他处理装置中获取控制指令,写入电子设备片上的控制缓存中。替代地或可选地,接口装置也可以读取电子设备的存储装置中的数据并传输给其他处理装置。
135.附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述电子设备和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述电子设备和/或所述其他处理装置的数据。例如,该数据可以是在电子设备或其他处理装置的内部或片上存储装置中无法全部保存的数据。
136.在一些实施例里,本披露还公开了一种芯片(例如图6中示出的芯片602)。在一种实现中,该芯片是一种系统级芯片(system on chip,soc),并且集成有一个或多个如图5中所示的组合处理装置。该芯片可以通过对外接口装置(如图6中示出的对外接口装置606)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口
模块(例如dram接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图6对该板卡进行详细地描述。
137.图6是示出根据本披露实施例的一种板卡600的结构示意图。如图6中所示,该板卡包括用于存储数据的存储器件604,其包括一个或多个存储单元610。该存储器件可以通过例如总线等方式与控制器件608和上文所述的芯片602进行连接和数据传输。进一步,该板卡还包括对外接口装置606,其配置用于芯片(或芯片封装结构中的芯片)与外部设备612(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准pcie接口等。
138.在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(micro controller unit,mcu),以用于对所述芯片的工作状态进行调控。
139.根据上述结合图5和图6的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
140.根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
141.需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关
描述。
142.在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
143.在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
144.在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
145.在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如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等。
146.本技术实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
147.本技术实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装
包,上述计算机包括电子设备。
148.虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献