一种数据处理方法、装置及处理器与流程

文档序号:33495060发布日期:2023-03-17 20:53阅读:68来源:国知局
一种数据处理方法、装置及处理器与流程

1.本公开涉及计算机技术领域,尤其涉及一种数据处理方法、装置及处理器。


背景技术:

2.近几年,计算机技术飞速发展,计算设备的功能越来越强大,性能(尤其是计算能力)也日趋优异。对于计算设备而言,如果始终以大量数据进行运行,则会十分耗时,需要逐步降低运算的数据量,并保留数据的主要特征,为此池化(pooling)算法应运而生。目前,深度学习和人工智能技术中几乎都设计有pooling层,要用到pooling算法,此算法通过对数据进行下采样来降低数据量。


技术实现要素:

3.有鉴于此,本公开提供一种数据处理方法、装置及处理器,以解决现有技术中pooling层计算过程速度慢的问题。
4.第一方面,本公开提供一种数据处理方法,所述方法包括:
5.读取单一数据特征计算硬件指令;
6.对读取到的单一数据特征计算硬件指令进行解码;
7.执行解码后的单一数据特征计算硬件指令,以完成至少3个以上数据的特征计算全过程。
8.进一步的,在读取单一数据特征计算硬件指令之前,所述方法还包括:
9.识别由两条以上的语句所组成的用于实现数据特征计算的代码段;
10.将识别出的代码段翻译为所述单一数据特征计算硬件指令。
11.进一步的,执行解码后的单一数据特征计算硬件指令,包括:
12.使用不同的向量通用寄存器,存储参与数据特征计算的各个数据和计算结果。
13.进一步的,所述特征计算为如下任意一种计算:求最大值,求最小值,求均值,求中值。
14.进一步的,所述特征计算为池化计算;参与所述特征计算的数据为池化窗口覆盖区域的特征数据。
15.进一步的,池化窗口为2*2或者3*3。
16.第二方面,本公开还提供一种数据处理装置,所述装置包括:
17.硬件指令读取单元,用于读取单一数据特征计算硬件指令;
18.硬件指令解码单元,用于对读取到的单一数据特征计算硬件指令进行解码;
19.硬件指令执行单元,用于执行解码后的单一数据特征计算硬件指令,以完成至少3个以上数据的特征计算全过程。
20.进一步的,所述装置还包括硬件指令生成单元,用于在硬件指令读取单元读取单一数据特征计算硬件指令之前:
21.识别由两条以上的语句所组成的用于实现数据特征计算的代码段;
22.进一步的,硬件指令执行单元用于执行解码后的单一数据特征计算硬件指令,包括:
23.使用不同的向量通用寄存器,存储参与数据特征计算的各个数据和计算结果。
24.进一步的,所述特征计算为如下任意一种计算:求最大值,求最小值,求均值,求中值。
25.进一步的,所述特征计算为池化计算;参与所述特征计算的数据为池化窗口覆盖区域的特征数据。
26.进一步的,池化窗口为2*2或者3*3。
27.第三方面,本公开还提供一种处理器,所述处理器包括前述第二方面所述的数据处理装置。
附图说明
28.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
29.图1为一些实施方式提供的一种pooling层使用2*2池化窗口时取最大值的示意图;
30.图2为一些实施方式提供的一种pooling层使用2*2池化窗口时取平均值的示意图;
31.图3为一些实施方式提供的一种pooling层使用2*2池化窗口时取最大值时指令实现的示意图;
32.图4为一些实施方式提供的一种pooling层使用2*2池化窗口时取平均值时指令实现的示意图;
33.图5为本公开实施例提供的一种数据处理方法的流程图;
34.图6为本公开实施例提供的一种数据处理装置的结构示意图。
具体实施方式
35.下面结合附图对本公开实施例进行详细描述。
36.应当明确,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
37.深度学习和人工智能技术中,pooling层主要有两种计算方式来保留数据的主要特征:1、取最大值,具体是选取特征图的区域子块的最大值,并以此作为该区域子块池化后的值;2、取平均值,具体是计算特征图的区域子块的平均值,并以此作为该区域子块池化后的值。其中,区域子块通常为n*n大小的池化窗口所覆盖的区域,按照设定步长移动池化窗口得到多个不同的区域子块。图1和图2分别是pooling层使用2*2池化窗口时取最大值和平均值的示意图,在此基础上,目前计算设备中的cpu(central processing unit,中央处理器)或gpu(graphics processing unit,图形处理器,也称显卡)实现pooling层的取最大值
方法至少需要执行3条指令,如图3所示,指令分别为a=max(a,b),c=max(c,d),a=max(a,c),而实现pooling层的取平均值方法则至少需要执行4条指令,如图4所示,指令分别为a=add(a,b),c=add(c,d),a=add(a,c),a=div(a,4)。显然,计算设备对于pooling层的两种计算方法都是依靠多条指令运算得到结果,运算速度慢。
38.本公开实施例为应对上述问题,提供了一种实现数据特征计算的方法,该方法可应用于计算设备。其中,所述计算设备可以是各种各样的具有处理器(如cpu或者gpu)和操作系统的电子设备,包括但不限于:
39.(1)移动通信设备:其特点是具备移动通信功能,并且以提供话音、数据通信为主要目标,该类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等;
40.(2)超移动个人计算机设备:属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性,此类终端包括:pda、mid和umpc设备等,例如ipad;
41.(3)便携式娱乐设备:可以显示和播放多媒体内容,该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备;
42.(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高;
43.(5)其他具有数据处理功能的电子设备。
44.本实施例中的数据处理方法可以由计算设备上的处理器执行,参见图5,所述方法包括如下步骤501-步骤503。
45.步骤501、读取单一数据特征计算硬件指令。
46.本步骤501中,单一数据特征计算硬件指令可被包含在计算设备的可执行程序中,计算设备的操作系统预先将该可执行程序加载到内存,而后由处理器访问内存,获取该可执行程序中的各条指令来执行。所谓可执行程序,指一种可在操作系统存储空间中浮动定位的可执行程序,可用来实现一款应用软件产品或一项应用软件服务的部分或者所有功能。其中,所实现的功能中包括数据特征计算这一功能,相应的,可执行程序中包含有一条数据特征计算硬件指令,该指令为专门增设的新的处理器指令,能够被处理器直接识别并执行。
47.对于单一数据特征计算硬件指令的生成,可通过如下两种方式实现。作为第一种实施方式,识别由两条以上的语句所组成的用于实现数据特征计算的代码段;将识别出的代码段翻译为所述单一数据特征计算硬件指令。此方式下,包含有所述单一数据特征计算硬件指令的可执行程序由高级程序设计语言编写的源程序转化得到,具体的生成过程包括:
48.(1)编译器通过操作系统使用处理器执行以下操作




49.①
获取采用高级程序设计语言编写的源程序,其中源程序包括由两条以上的语句所组成的用于实现数据特征计算的代码段;
50.②
将获取到的源程序翻译成目标程序,其中用于实现数据特征计算的代码段被翻译为单一数据特征计算硬件指令;
51.(2)链接器通过操作系统使用处理器执行以下操作:将目标程序与库函数链接,生
成所述可执行程序。
52.上述方式中,编译器与链接器均运行在计算设备的操作系统上。不同于现有的编译器,本公开中,可在编译器中增加识别源程序中是否包含由两条以上的条语句所组成的用于实现数据特征计算的代码段的功能,如果是,则会将该代码段翻译为一条专门增设的新的处理器指令:数据特征计算硬件指令,而并非如现有技术般只是简单地直接将该代码段中的代码翻译为相应的多条汇编代码。其中,所述代码段识别操作与源程序具体所采用的高级程序设计语言的编写规范有关,不同编写规范不同时所述代码段识别操作可能也会有所不同。
53.当然,本领域技术人员应理解,还可以是计算设备操作系统本身或者运行在操作系统上的其它工具对所述源程序进行编译和链接后得到所述可执行程序,后续由处理器读取所述可执行程序来执行,本公开对此不作具体限定。
54.作为第二种实施方式,不经编译而直接生成所述单一数据特征计算硬件指令,该方式下包含有所述单一数据特征计算硬件指令的可执行程序由面向机器的低级程序设计语言(例如汇编语言)编写的目标程序转化得到,具体的生成过程包括:
55.链接器通过操作系统使用处理器执行以下操作:
56.获取采用汇编语言编写的目标程序,其中目标程序包括单一数据特征计算硬件指令;
57.将目标程序与库函数链接,生成所述可执行程序。
58.同理,本领域技术人员应理解,还可以是计算设备操作系统本身或者运行在操作系统上的其它工具对所述源程序进行链接后得到所述可执行程序,后续由处理器读取所述可执行程序来执行,本公开对此不作具体限定。
59.步骤502、对读取到的单一数据特征计算硬件指令进行解码。
60.本步骤502中,单一数据特征计算硬件指令,可作为处理器的指令集合中新增设的一条指令而被处理器所直接识别。处理器对该指令进行解码的过程属于现有技术,在此不再赘述。
61.步骤503、执行解码后的单一数据特征计算硬件指令,以完成至少3个以上数据的特征计算全过程。
62.具体的,所述数据特征计算可以是对数量不小于3个的多个数据进行如下任意一种特征的计算:求最大值,求最小值,求均值,求中值。典型的,数据特征计算为pooling计算,参与数据特征计算的数据为pooling窗口覆盖区域的特征数据。其中,在所述pooling计算中,pooling窗口优选为2*2或者3*3,数据特征计算具体为求pooling窗口覆盖区域的4个特征数据或者9个特征数据的最大值、最小值、均值或中值。
63.本步骤中,处理器在执行所述单一数据特征计算硬件指令时,可先将参与数据特征计算的数据存储到向量通用寄存器后再进行处理。在能够保证指令长度在最大长度限制以内的前提下,可使用不同的向量通用寄存器,存储参与数据特征计算的各个数据和计算结果。其中,向量通用寄存器为处理器中的最小处理单元私有寄存器。当然,在一次数据特征计算全过程中,先前用来存储参与数据特征计算的一个数据的源向量通用寄存器后续还可作为目的向量通用寄存器用来存储计算结果。目前,在一台计算设备中,向量通用寄存器数量最多为256个,采用8bits编码来表示向量通用寄存器,正好最多可以表示256个向量通
用寄存器。假设,在一次数据特征计算中,参与计算的为4个数据,那么其对应的单一数据特征计算硬件指令中,操作数则会为5个,会占用4个向量通用寄存器(参与计算的4个数据各占用1个向量通用寄存器,计算结果与其中1个数据共享同一个向量通用寄存器)或5个向量通用寄存器(参与计算的4个数据和计算结果各占用1个向量通用寄存器),该条指令中操作数的长度最多占用32bits或者40bits,而现有技术中一条用来对2个数据进行计算的指令中操作数长度都是64bits,两者操作码长度相同时,本实施例方案中增设的硬件指令长度则不会增加。
64.以下举例说明本实施例方案的优点。
65.(1)数据特征计算为求4个数据的最大值
66.源程序中一个求4个数据最大值的代码段,在转换为可执行程序后,被翻译为单一数据特征计算硬件指令:v_max4_f32指令,该指令设计如下v_max4_f32dst,src0,src1,src2,src3;后续处理器只需要读取这一条指令,经解码后便可执行该数据特征计算的全过程:取4个数据,计算最大值,得到计算结果,其中计算过程例如可以是:dst=max(max(src0,src1),max(src2,src3))。而现有技术中,参见图3,处理器则需要读取和执行3条指令才能完成该数据特征计算的全过程。
67.(2)数据特征计算为求4个数据的平均值
68.源程序中一个求4个数据的平均值的代码段,在转换为可执行程序后,被翻译为一条数据特征计算硬件指令:v_avg4_f32指令,该指令设计如下v_avg4_f32 dst,src0,src1,src2,src3;后续处理器只需要读取这一条指令,经解码后便可执行该数据特征计算的全过程:取4个数据,计算平均值,得到计算结果,其中计算过程例如可以是:dst=(src0+src1+src2+src3)/4。而现有技术中,参见图4,处理器则需要读取和执行4条指令才能完成该数据特征计算的全过程。
69.由于处理器访问内存得到指令的时间要比执行指令花费的时间长很多,而本实施例方案恰好能够将原来多条指令完成的任务简化为一条指令来完成,因此能够很好的缩短取指时间,提升数据特征计算速度。
70.需要说明的是,本公开中,可预先增设有多种类型的单一数据特征计算硬件指令,不同类型的单一数据特征计算硬件指令对应不同的数据特征计算方式(分别为求最大值、求最小值、求均值和求中值),并且每种单一数据特征计算硬件指令还可对应有多条单一数据特征计算硬件指令,这些指令的操作码相同,操作数不同。可执行程序中也可共计含有多条单一数据特征计算硬件指令,具体以其所实现的软件产品或服务功能有关,其中不同的单一数据特征计算硬件指令对应不同的数据特征计算,这些数据特征计算的不同可能在于计算方式的不同,也可能在于计算数据的不同。本公开实施例所述的数据特征计算全过程指的是完成一次具体数据特征计算的操作实现过程,例如下述为4次不同的数据特征计算全过程:求如下4个数的最大值:2,13,6,10;求如下4个数的最大值:11,7,19,8;求如下9个数的最大值:23,21,15,25,14,19,20,14,16;求如下4个数的平均值:2,13,6,10。
71.本实施例还提供一种数据处理装置,参见图6,所述装置包括:
72.硬件指令读取单元601,用于读取单一数据特征计算硬件指令;
73.硬件指令解码单元602,用于对读取到的单一数据特征计算硬件指令进行解码;
74.硬件指令执行单元603,用于执行解码后的单一数据特征计算硬件指令,以完成至
少3个以上数据的特征计算全过程。
75.可选的,本实施例提供的数据处理装置还包括硬件指令生成单元600,用于在硬件指令读取单元读取单一数据特征计算硬件指令之前:
76.识别由两条以上的语句所组成的用于实现数据特征计算的代码段;
77.将识别出的代码段翻译为所述单一数据特征计算硬件指令。
78.示例性的,硬件指令执行单元603用于执行解码后的单一数据特征计算硬件指令,包括:
79.使用不同的向量通用寄存器,存储参与数据特征计算的各个数据和计算结果。
80.进一步的,本实施例中,所述特征计算为如下任意一种计算:求最大值,求最小值,求均值,求中值。
81.作为一种典型的应用场景,所述特征计算为池化计算;参与所述特征计算的数据为池化窗口覆盖区域的特征数据。
82.其中,池化窗口可为2*2或者3*3。
83.本实施例提供的数据处理装置与前述方法实施例中的数据处理方法,属于同一技术构思,未在本实施例中描述的技术细节可参见前述方法实施例中的相关描述,在此不再赘述。
84.综上,本公开提供的技术方案,3个以上数据的特征计算可执行程序代码仅对应为一条新增设的硬件指令,只需要读取该一条指令即可执行完整的计算过程,而不必如现有技术中要先后读取多条指令才能完成计算,能够提升计算速度,尤其是对于深度学习和人工智能技术中池化层实现池化算法的场景,该算法在降低数据量时涉及大量的数据特征计算(例如求最大值、最小值、均值或者中值),运用本公开方案可以大大改善池化层的运算速度。
85.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
86.本公开中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
87.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
88.尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
89.为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本公开时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
90.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1