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

文档序号:21408221发布日期:2020-07-07 14:42阅读:190来源:国知局
一种数据处理方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种数据处理方法及装置。



背景技术:

指令集仿真器(instructionsetsimulator,iss)是处理器工具链中的重要组成部分。传统iss除了需要模拟处理器的硬件行为(硬件功能)外,还需要精确预测这个处理器跑完一个程序所用的时间,因此传统iss的数据处理必须受时钟以及硬件总线带宽的限制。假设1个待处理的图像数据有4096比特(bit),而处理器的硬件总线带宽为256bit,那么在iss仿真过程中,一次最多只能对256bit大小的图像数据做处理,这个4096bit的图像数据就需要经过16次处理才能处理完成。因此,在设计某些计算量大的处理器时,如用于执行卷积神经网络计算任务的神经网络处理器等,由于这类处理器的计算量大、带宽需求也大,所以在用传统iss对这类处理器的硬件功能进行仿真时的数据处理速度就慢,不利于对处理器的硬件功能进行快速检验。



技术实现要素:

本申请实施例提供一种数据处理方法及装置,可以提高iss的数据处理速度,便于对处理器的硬件功能进行快速检验。

第一方面,本申请实施例提供了一种数据处理方法,该方法包括:

若检测到待转存图像数据个数大于零且第一先进先出fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间,则将第一存储器中的n个输入图像数据转存至该第一fifo存储器;

若检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间,则将第二存储器中的m个权重数据转存至该第二fifo存储器,其中每个权重数据中包括输入图像数据的输入索引以及输出图像数据的输出索引;

当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从该第一fifo存储器中读取到的输入图像数据i与从该第二fifo存储器中读取到的权重数据w进行卷积运算,得到该权重数据w的输出索引对应的输出图像数据,该权重数据w的输入索引对应输入图像数据i。

结合第一方面,在一种可能的实施方式中,该方法还包括:若检测到该待转存图像数据个数大于零且该第一可用存储空间小于该n个输入图像数据所占的存储空间,则将从该第一存储器中读取到的与该第一可用存储空间的大小相等的输入图像数据转存至该第一fifo存储器。

结合第一方面,在一种可能的实施方式中,该方法还包括:若检测到该待转存权重数据个数大于零且该第二可用存储空间小于该m个权重数据所占的存储空间,则将从该第二存储器中读取到的与该第二可用存储空间的大小相等的权重数据转存至该第二fifo存储器。

结合第一方面,在一种可能的实施方式中,该方法还包括:若检测到该待转存图像数据个数大于零且该第一fifo存储器中不存在可用存储空间,则将所有待转存图像数据信息记录在该第一存储器中,以等待该第一fifo存储器中存在可用存储空间。

结合第一方面,在一种可能的实施方式中,在得到该权重数据w的输出索引对应的输出图像数据之后,该方法还包括:

将该权重数据w的输出索引对应的输出图像数据顺序存储在第三fifo存储器中;检测该第三fifo存储器中存储的输出图像数据个数是否大于或等于k;若该第三fifo存储器中存储的输出图像数据个数大于或等于k,则从该第三fifo存储器中读取k个输出图像数据转存至第三存储器中;读取该第三存储器中存储的输出图像数据并输出。

第二方面,本申请实施例提供了一种数据处理装置,该装置包括:

第一转存模块,用于当检测到待转存图像数据个数大于零且第一先进先出fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间时,将第一存储器中的n个输入图像数据转存至该第一fifo存储器;

第二转存模块,用于当检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间时,将第二存储器中的m个权重数据转存至该第二fifo存储器,其中每个权重数据中包括输入图像数据的输入索引以及输出图像数据的输出索引;

卷积模块,用于当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从该第一fifo存储器中读取到的输入图像数据i与从该第二fifo存储器中读取到的权重数据w进行卷积运算,得到该权重数据w的输出索引对应的输出图像数据,该权重数据w的输入索引对应输入图像数据i。

结合第二方面,在一种可能的实施方式中,上述第一转存模块还用于:当检测到该待转存图像数据个数大于零且该第一可用存储空间小于该n个输入图像数据所占的存储空间时,将从该第一存储器中读取到的与该第一可用存储空间的大小相等的输入图像数据转存至该第一fifo存储器。

结合第二方面,在一种可能的实施方式中,上述第二转存模块还用于:当检测到该待转存权重数据个数大于零且该第二可用存储空间小于该m个权重数据所占的存储空间时,将从该第二存储器中读取到的与该第二可用存储空间的大小相等的权重数据转存至该第二fifo存储器。

结合第二方面,在一种可能的实施方式中,该装置还包括:记录模块,用于当检测到该待转存图像数据个数大于零且该第一fifo存储器中不存在可用存储空间时,将所有待转存图像数据信息记录在该第一存储器中,以等待该第一fifo存储器中存在可用存储空间。

结合第二方面,在一种可能的实施方式中,该装置还包括:存储模块,用于将该权重数据w的输出索引对应的输出图像数据顺序存储在第三fifo存储器中;检测模块,用于检测该第三fifo存储器中存储的输出图像数据个数是否大于或等于k;第三转存模块,用于当该第三fifo存储器中存储的输出图像数据个数大于或等于k时,从该第三fifo存储器中读取k个输出图像数据转存至第三存储器中;输出模块用于读取该第三存储器中存储的输出图像数据并输出。

结合第二方面,在一种可能的实施方式中,该装置还包括:第一存储器用于顺序存储输入图像数据,第一fifo存储器用于缓存从该第一存储器转存的输入图像数据;第二存储器用于顺序存储输入的权重数据,第二fifo存储器用于缓存从该第二存储器转存的权重数据;第三fifo存储器用于顺序缓存输出图像数据,第三存储器用于存储从该第三fifo存储器转存的输出图像数据。

第三方面,本申请实施例提供了一种终端,包括处理器和存储器,该处理器和存储器相互连接,其中,该存储器用于存储支持终端执行上述方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用该程序指令,执行上述第一方面的数据处理方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第一方面的数据处理方法。

本申请实施例在检测到待转存图像数据个数大于零且第一fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间时,将第一存储器中的n个输入图像数据转存至该第一fifo存储器,在检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间时,将第二存储器中的m个权重数据转存至该第二fifo存储器,当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从该第一fifo存储器中读取到的输入图像数据i与从该第二fifo存储器中读取到的权重数据w进行卷积运算,得到该权重数据w的输出索引对应的输出图像数据。由于传统iss主要是对处理器的硬件功能(如神经网络处理器的硬件功能为卷积功能)和硬件周期(即一个处理器跑完一个程序所用的时间)进行仿真。如果iss既对硬件功能仿真又对硬件周期仿真,那么iss仿真过程的数据处理必须按照硬件的要求来实现,即必须受硬件总线的带宽限制。然而在很多情况下,需要快速检验处理器的硬件功能,若此时仍采用传统iss来检验,势必会因为受硬件带宽限制而达不到快速检验的目的。故本申请实施例提供一种可以应用在iss仿真过程的数据处理方法,只对硬件功能进行仿真,采用大粒度数据处理方式来提高iss的数据处理速度,从而实现对处理器硬件功能的快速检验。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的数据处理方法的一示意流程图;

图2a是本申请实施例提供的一次输入图像数据转存的示意图;

图2b是本申请实施例提供的一次权重数据转存的示意图;

图2c是本申请实施例提供的卷积运算的示意图;

图3是本申请实施例提供的数据处理方法的另一示意流程图;

图4a是本申请实施例提供的连续2次输入图像数据转存的示意图;

图4b是本申请实施例提供的连续2次权重数据转存的示意图;

图5是本申请实施例提供的数据处理装置的一示意性框图;

图6是本申请实施例提供的终端的一示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应当理解,本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

还应当理解,在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

本申请实施例可以应用在神经网络处理器(neuralnetworkprocessor,nnp)的iss仿真过程中,因为nnp主要是用来执行卷积神经网络(convolutionalneuralnetwork,cnn)计算任务的处理器,那么nnp的iss数据处理的计算量就非常大(因为cnn的计算量大)。故本申请实施例通过一次将多个输入图像数据或多个权重数据转存至fifo存储器中,并且一次从fifo存储器中取一个输入图像数据与一个权重数据进行卷积运算,得到输出图像数据,使得数据转存时不受硬件总线带宽的限制,进而提高了iss的数据处理速度,便于对nnp的硬件功能进行快速检验。

下面将结合图1至图6,对本申请实施例提供的数据处理方法及装置进行说明。

参见图1,是本申请实施例提供的数据处理方法的一示意流程图。如图1所示,该数据处理方法可包括步骤:

s101,若检测到待转存图像数据个数大于零且第一先进先出fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间大小,则将第一存储器中的n个输入图像数据转存至第一fifo存储器。

在一些可行的实施方式中,终端可以接收输入的输入图像数据,并可以将接收到的输入图像数据顺序存储在第一存储器中。终端可以预设待转存图像数据总个数,该待转存图像数据总个数可以为输入图像数据个数与输出图像数据个数的乘积。其中,由于本申请实施例可以适用于iss仿真,并且iss仿真过程为:将预设的输入图像数据输入iss中进行数据处理,获取iss数据处理后的输出图像数据,并将iss数据处理后的输出图像数据与预设的输出图像数据作比较,以此来评估iss所仿真的处理器的硬件功能。故本申请实施例中的输入图像数据个数以及输出图像数据个数是预设的。终端可以检测待转存图像数据的个数是否大于零,当该待转存图像数据的个数大于零时,终端可以检测第一先进先出(firstinputfirstoutput,fifo)存储器中是否存在可用存储空间,即检测该第一fifo存储器的存储空间是否满了。当检测到该第一fifo存储器中存在可用存储空间时,说明第一fifo存储器的存储空间未满,终端可以检测该第一fifo存储器的第一可用存储空间是否大于或等于n个输入图像数据所占的存储空间。当该第一可用存储空间大于或等于n个输入图像数据所占的存储空间时,终端可以从第一存储器中读取n个输入图像数据,并可以将读取到的n个输入图像数据通过直接存储器访问(directmemoryaccess,dma)转存至该第一fifo存储器中。终端在将该n个输入图像数据转存至该第一fifo存储器之后,可以将上述待转存图像数据的个数减去n个已转存图像数据,得到新的待转存图像数据个数。其中,第一存储器可以为双倍速率同步动态随机存储器(doubledataratesynchronousdynamicrandomaccessmemory,简称ddrsdram)。第一存储器可以用于存储终端接收到的输入图像数据,且第一存储器中的每个输入图像数据的大小相等,即每个输入图像数据所占的存储空间大小相等,一个输入图像数据可以表示一张输入图像的全部数据。从第一存储器中读取数据之后,第一存储器中存储的数据不发生改变。第一fifo存储器可以用于缓存转存的输入图像数据。第一fifo存储器的宽度固定,即第一fifo存储器中每行可缓存的数据量相等。n可以为大于或等于1的整数。

例如,如图2a所示,是本申请实施例提供的一次输入图像数据转存的示意图。以4个输入图像数据以及4个输出图像数据为例,那么待转存图像数据个数为4*4=16。ifm0、ifm1、ifm2以及ifm3分别表示4个输入图像数据。假设n=3,1个输入图像数据所占的存储空间为128bit(比特),第一fifo存储器的第一可用存储空间为512bit。由于此时的待转存图像数据个数16大于0,且第一可用存储空间512bit大于3个输入图像数据所占的存储空间3*128=384bit,故终端从第一存储器中读取3个输入图像数据(ifm0、ifm1、ifm2)通过dma顺序转存至第一fifo存储器中,那么转存后第一fifo存储器的可用存储空间为512-384=128bit,待转存图像数据个数为16-3=13个。

s102,若检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间大小,则将第二存储器中的m个权重数据转存至第二fifo存储器。

在一些可行的实施方式中,终端可以接收输入的权重数据,并可以将接收到的权重数据顺序存储在第二存储器中。终端可以获取该第二存储器中权重数据的个数,并可以将该权重数据的个数确定为待转存权重数据总个数。其中,权重数据的个数可以为输入图像数据个数与输出图像数据个数的乘积。终端可以检测待转存权重数据的个数是否大于零,当该待转存权重数据的个数大于零时,终端可以检测第二fifo存储器中是否存在可用存储空间,即检测该第二fifo存储器的存储空间是否满了。当检测到该第二fifo存储器中存在可用存储空间时,说明第二fifo存储器的存储空间未满,终端可以检测该第二fifo存储器的第二可用存储空间是否大于或等于m个权重数据所占的存储空间。当该第二可用存储空间大于或等于m个权重数据所占的存储空间时,终端可以从第二存储器中读取m个权重数据,并可以将读取到的m个权重数据通过dma转存至该第二fifo存储器中。终端在将该m个权重数据转存至该第二fifo存储器之后,可以将上述待转存权重数据的个数减去m个已转存权重数据,得到新的待转存权重数据的个数。其中,每个权重数据中可以包括一个输入图像数据的输入索引以及一个输出图像数据的输出索引。第二存储器也可以为ddrsdram。第二存储器可以用于存储终端接收到的权重数据。从第二存储器中读取数据之后,第二存储器中存储的数据不发生改变。第二fifo存储器可以用于缓存转存的权重数据。第二fifo存储器的宽度固定,即第二fifo存储器中每行可缓存的数据量相等。由于权重数据的数据量较小,为便于读取,在第二存储器以及第二fifo存储器中每个权重数据可以单独对应一个行地址。m可以为大于或等于1的整数。

例如,如图2b所示,是本申请实施例提供的一次权重数据转存的示意图。以4个输入图像数据以及4个输出图像数据为例,那么权重数据的个数就为4*4=16个,待转存权重数据的总个数就为16个。其中,权重数据用wxy表示,wxy中的下标x表示输入图像数据的输入索引,wxy中的下标y表示输出图像数据的输出索引。第一存储器中包括w00、w10、w20、w30、w01、w11、w21、w31、w02、w12、w22、w32、w03、w13、w23以及w33这16个权重数据。假设m=8,1个权重数据对应1个行地址,假设1个行地址对应的存储空间为64bit,那么1个权重数据所占的存储空间也为64bit。假设第二fifo存储器的第二可用存储空间为512bit。由于此时的待转存权重数据个数16大于0,且第二可用存储空间512bit等于8个权重数据所占的存储空间8*64=512bit,故终端从第二存储器中读取8个权重数据(也即8行权重数据)通过dma顺序转存至第二fifo存储器中,那么转存后第二fifo存储器中不存在可用存储空间(512-512=0bit),待转存图像数据个数为16-8=8个。

在一些可行的实施方式中,步骤s101与步骤s102可以并行执行,本申请实施例对此不做限定。

s103,当第一fifo存储器中缓存的输入图像数据个数以及第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从第一fifo存储器中读取到的输入图像数据i与从第二fifo存储器中读取到的权重数据w进行卷积运算,得到权重数据w的输出索引对应的输出图像数据。

在一些可行的实施方式中,终端可以分别获取上述第一fifo存储器中缓存的输入图像数据个数以及上述第二fifo存储器中缓存的权重数据个数。当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,说明fifo存储器中缓存的数据量满足一次卷积运算所需的数据量,则终端可以从该第一fifo存储器中读取一个输入图像数据i,从该第二fifo存储器中读取一个权重数据w。终端可以获取该输入图像数据i与该权重数据w进行乘累加运算之后所得的部分和(指输出图像数据的部分和),并可以将该部分和与该权重数据w的输出索引所对应的多个部分和进行累加运算,得到该权重数据w的输出索引对应的输出图像数据。在iss的数据处理过程中,本申请实施例只仿真处理器的硬件功能(即卷积运算的功能),一次将多个输入图像数据或多个权重数据转存至fifo存储器中,并且一次取一个输入图像数据与一个权重数据进行卷积运算,使得转存时不受硬件总线带宽的限制,进而提高了iss的数据处理速度,便于对处理器的硬件功能进行快速检验。其中,第二fifo存储器的宽度固定,即第二fifo存储器中每行可存储的数据量相等。每个输出图像数据的大小相等,即每个输出图像数据所占的存储空间大小相等。一个输出图像数据可以表示一张输出图像的全部数据。

例如,如图2c所示,是本申请实施例提供的卷积运算的示意图。以得到一个输出图像数据ofm0为例。假设共有4个输入图像数据和4个输出图像数据,那么权重数据的个数就为4*4=16个。ifm0、ifm1、ifm2以及ifm3分别表示4个输入图像数据,ofm0、ofm1、ofm2以及ofm3分别表示4个输出图像数据。终端从第一fifo存储器中读取1个输入图像数据ifm0,并从第二fifo存储器中读取1个权重数据w00,将ifm0与w00做乘累加之后得到w00的输出索引0对应的ofm0的部分和0。将部分和0作为下一次累加的部分和。终端再从第一fifo存储器中读取1个输入图像数据ifm1,并从第二fifo存储器中读取1个权重数据w10,将ifm1与w10做乘累加之后得到输出索引0对应的ofm0的部分和1。将上一次的部分和(即部分和0)与这次ofm0的部分和1进行累加后作为下一次累加的部分和。终端从第一fifo存储器中读取1个输入图像数据ifm2,并从第二fifo存储器中读取1个权重数据w20,将ifm2与w20做乘累加之后得到输出索引0对应的ofm0的部分和2。将上一次的部分和(即部分和0与部分和1之和)与这次ofm0的部分和2进行累加后作为下一次累加的部分和。终端从第一fifo存储器中读取1个输入图像数据ifm3,并从第二fifo存储器中读取1个权重数据w30,将ifm3与w30做乘累加之后得到输出索引0对应的ofm0的部分和3。将上一次的部分和(即部分和0、部分和1以及部分和2之和)与这次ofm0的部分和3进行累加后得到完整的输出图像数据ofm0。

在本申请实施例中,终端在检测到待转存图像数据个数大于零且第一fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间时,将第一存储器中的n个输入图像数据转存至该第一fifo存储器,在检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间时,将第二存储器中的m个权重数据转存至该第二fifo存储器,当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从该第一fifo存储器中读取到的输入图像数据i与从该第二fifo存储器中读取到的权重数据w进行卷积运算,得到该权重数据w的输出索引对应的输出图像数据,可以提高iss的数据处理速度,便于对处理器的硬件功能进行快速检验。

参见图3,是本申请实施例提供的数据处理方法的另一示意流程图。如图3所示,该数据处理方法可包括步骤:

s301,检测待转存图像数据个数是否大于零。

s302,若待转存图像数据个数大于零,则检测第一fifo存储器中是否存在第一可用存储空间。

s303,若第一fifo存储器中不存在第一可用存储空间,则将所有待转存图像数据信息记录在第一存储器中,以等待第一fifo存储器中存在可用存储空间。

s304,若第一fifo存储器中存在第一可用存储空间,检测第一可用存储空间是否大于或等于n个输入图像数据所占的存储空间。

s305,若第一可用存储空间大于或等于n个输入图像数据所占的存储空间,则将第一存储器中的n个输入图像数据转存至第一fifo存储器。

s306,若第一可用存储空间小于n个输入图像数据所占的存储空间,则将从第一存储器中读取到的与第一可用存储空间的大小相等的输入图像数据转存至第一fifo存储器。

在一些可行的实施方式中,终端可以接收输入的输入图像数据,并可以将接收到的输入图像数据顺序存储在第一存储器中。终端可以预设待转存图像数据总个数,该待转存图像数据总个数可以为输入图像数据个数与输出图像数据个数的乘积。其中,在iss的仿真过程中,输入图像数据个数以及输出图像数据个数可以为预设。终端可以检测待转存图像数据的个数是否大于零,当该待转存图像数据的个数等于零时,则停止转存输入图像数据。当该待转存图像数据的个数大于零时,终端可以检测第一fifo存储器中是否存在第一可用存储空间,即检测该第一fifo存储器的存储空间是否满了。当该第一fifo存储器中不存在第一可用存储空间时,说明第一fifo存储器的存储空间已满,终端可以将所有待转存图像数据信息记录在该第一存储器中,以等待该第一fifo存储器中存在可用存储空间。其中,待转存图像数据信息可以包括待转存图像数据个数(1到ni*no)、输入图像数据的输入索引(即写失败时正在进行转存的输入图像数据的输入索引,0到ni-1)、输出图像数据的输出索引(即写失败时正在进行转存的输入图像数据是用于计算哪个输出图像数据的输出索引,0到no-1),输入图像数据的行索引(即写失败时正在进行转存的输入图像数据的行索引,0到输入图像数据垂直方向像素数-1)、第一存储器的读地址等关键寄存器。ni表示输入图像数据的总个数,no表示输出图像数据的总个数。在下一次出现第一fifo存储器中存在可用存储空间时,可以根据第一存储器中记录的待转存图像数据信息,转存输入图像数据。

当该第一fifo存储器中存在第一可用存储空间时,说明第一fifo存储器的存储空间未满,终端可以检测该第一fifo存储器的第一可用存储空间是否大于或等于n个输入图像数据所占的存储空间。当该第一可用存储空间大于或等于n个输入图像数据所占的存储空间时,终端可以从第一存储器中读取n个输入图像数据,并可以将读取到的n个输入图像数据通过dma转存至该第一fifo存储器中。当该第一可用存储空间小于n个输入图像数据所占的存储空间时,终端可以从第一存储器中读取与该第一可用存储空间的大小相等的输入图像数据,并将读取到的输入图像数据通过dma转存至该第一fifo存储器中。终端在将读取到的输入图像数据转存至该第一fifo存储器之后,可以将上述待转存图像数据的个数减去已转存图像数据个数,得到新的待转存图像数据个数。其中,第一存储器中的每个输入图像数据的大小相等,即每个输入图像数据所占的存储空间大小相等,并且从第一存储器中读取数据之后,第一存储器中存储的数据不发生改变。第一fifo存储器的宽度固定,即第一fifo存储器中每行可缓存的数据量相等。n可以为大于或等于1的整数。

例如,如图4a所示,是本申请实施例提供的连续2次输入图像数据转存的示意图。以4个输入图像数据以及4个输出图像数据为例,那么待转存图像数据个数为4*4=16。ifm0、ifm1、ifm2以及ifm3分别表示4个输入图像数据。假设n=3,1个输入图像数据所占的存储空间为128bit(比特),第一fifo存储器的第一可用存储空间为512bit。由于待转存图像数据个数16个大于0,且第一可用存储空间512bit大于3个输入图像数据所占的存储空间3*128=384bit,故终端从第一存储器中读取3个输入图像数据(ifm0、ifm1、ifm2)通过dma顺序转存至第一fifo存储器中,那么第一fifo存储器的可用存储空间为512-384=128bit,待转存图像数据个数为16-3=13个。若在下一次转存时,第一fifo存储器中的ifm0已经被读取出去,则此时第一fifo存储器剩余的可用存储空间为128+128(ifm0释放的128bit)=256bit。由于此时的待转存图像数据个数为16-3=13大于0,且第一fifo存储器剩余的可用存储空间256bit小于3个输入图像数据3*128=384bit,则从第一存储器中读取大小为256bit的输入图像数据(2个输入图像数据ifm3、ifm0),并将读取到的输入图像数据ifm3、ifm0通过dma顺序转存至第一fifo存储器中,那么第一fifo存储器中不存在可用存储空间(256-256=0bit)了,待转存图像数据个数为16-3-2=11个。

s307,检测待转存权重数据个数是否大于零。

s308,若待转存权重数据个数大于零,则检测第二fifo存储器中是否存在第二可用存储空间。

s309,若第二fifo存储器中不存在第二可用存储空间,则将所有待转存权重数据信息记录在第二存储器中,以等待第二fifo存储器中存在可用存储空间。

s310,若第二fifo存储器中存在第二可用存储空间,检测第二可用存储空间是否大于或等于m个权重数据所占的存储空间。

s311,若第二可用存储空间大于或等于m个权重数据所占的存储空间,则将第二存储器中的m个权重数据转存至第二fifo存储器。

s312,若第二可用存储空间小于m个权重数据所占的存储空间,则将从第二存储器中读取到的与第二可用存储空间的大小相等的权重数据转存至第二fifo存储器。

在一些可行的实施方式中,终端可以接收输入的权重数据,并可以将接收到的权重数据顺序存储在第二存储器中。终端可以获取该第二存储器中权重数据的个数,并可以将该权重数据的个数确定为待转存权重数据总个数。其中,权重数据的个数可以为输入图像数据个数与输出图像数据个数的乘积。终端可以检测待转存权重数据的个数是否大于零,当该待转存权重数据的个数等于零时,则停止转存权重数据。当该待转存权重数据的个数大于零时,终端可以检测第二fifo存储器中是否存在第二可用存储空间,即检测该第二fifo存储器的存储空间是否满了。当检测到该第二fifo存储器中不存在第二可用存储空间时,说明第二fifo存储器的存储空间已满,终端可以将所有待转存权重数据信息记录在第二存储器中,以等待第二fifo存储器中存在可用存储空间。其中,待转存权重数据信息与上述待转存图像数据信息类似,包括权重数据的一些关键寄存器。在下一次出现第二fifo存储器中存在可用存储空间时,可以根据第二存储器中记录的待转存权重数据信息,转存权重数据。

当检测到该第二fifo存储器中存在第二可用存储空间时,说明第二fifo存储器的存储空间未满,终端可以检测该第二fifo存储器的第二可用存储空间是否大于或等于m个权重数据所占的存储空间。当该第二可用存储空间大于或等于m个权重数据所占的存储空间时,终端可以从第二存储器中读取m个权重数据,并可以将读取到的m个权重数据通过dma转存至该第二fifo存储器中。当该第二可用存储空间小于m个权重数据所占的存储空间时,终端可以从第二存储器中读取与该第二可用存储空间大小相等的权重数据,并可以将读取到的权重数据通过dma转存至该第二fifo存储器中。终端在将读取到的权重数据转存至该第二fifo存储器之后,可以将上述待转存权重数据的个数减去已转存权重数据,得到新的待转存权重数据的个数。其中,每个权重数据中可以包括一个输入图像数据的输入索引以及一个输出图像数据的输出索引。从第二存储器中读取数据之后,第二存储器中存储的数据不发生改变。第二fifo存储器的宽度固定,即第二fifo存储器中每行可缓存的数据量相等。由于权重数据的数据量较小,为便于读取,在第二存储器以及第二fifo存储器中每个权重数据可以单独对应一个行地址。m可以为大于或等于1的整数。

例如,如图4b所示,是本申请实施例提供的连续2次权重数据转存的示意图。以4个输入图像数据以及4个输出图像数据为例,那么权重数据的个数就为4*4=16个,待转存权重数据的总个数就为16。其中,权重数据用wxy表示,wxy中的下标x表示输入图像数据的输入索引,wxy中的下标y表示输出图像数据的输出索引。第一存储器中包括w00、w10、w20、w30、w01、w11、w21、w31、w02、w12、w22、w32、w03、w13、w23以及w33这16个权重数据。假设m=8,1个权重数据对应1个行地址,假设1个行地址对应的存储空间为64bit,那么1个权重数据所占的存储空间也为64bit。假设第二fifo存储器的第二可用存储空间为512bit。由于此时的待转存权重数据个数16大于0,且第二可用存储空间512bit等于8个权重数据所占的存储空间8*64=512bit,故终端从第二存储器中读取8个权重数据(也即8行权重数据)通过dma顺序转存至第二fifo存储器中,那么此时第二fifo存储器中不存在可用存储空间(512-512=0bit),待转存图像数据个数为16-8=8个。由于此时第二fifo存储器中不存在可用存储空间了,那么等待第二fifo存储器中的权重数据被释放,即等待第二fifo存储器中出现可用存储空间。假设在下一次转存开始时,第二fifo存储器中的w00已经被读取出去,则此时第二fifo存储器剩余的可用存储空间为64bit(w00释放的64bit)。由于此时的待转存图像数据个数为16-8=8大于0,且第二fifo存储器剩余的可用存储空间64bit小于8个权重数据8*64=256bit,则从第二存储器中读取大小为64bit的权重数据(1个权重数据w02),并将读取到的权重数据w02通过dma顺序转存至第二fifo存储器中,那么此时的第二fifo存储器中不存在可用存储空间(64-64=0bit)了,待转存权重数据个数为16-8-1=7个。

在一些可行的实施方式中,步骤s301-步骤s306与步骤s307-步骤s312可以并行执行,本申请实施例对此不做限定。

s313,当第一fifo存储器中缓存的输入图像数据个数以及第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从第一fifo存储器中读取到的输入图像数据i与从第二fifo存储器中读取到的权重数据w进行卷积运算,得到权重数据w的输出索引对应的输出图像数据。

在一些可行的实施方式中,本申请实施例的步骤s313的实现方式可参考图1所示的步骤s103的实现方式,在此不再赘述。

在一些可行的实施方式中,终端在得到上述权重数据w的输出索引对应的输出图像数据之后,可以将该权重数据w的输出索引对应的输出图像数据顺序缓存在第三fifo存储器中,并可以检测该第三fifo存储器中缓存的输出图像数据的个数是否大于或等于k。当检测到该第三fifo存储器中缓存的输出图像数据的个数大于或等于k时,可以从该第三fifo存储器中读取k个输出图像数据,并可以将读取到的k个输出图像数据通过dma转存至第三存储器中。终端可以顺序读取该第三存储器中存储的输出图像数据并输出。终端还可以将读取到的输出图像数据与预设的输出图像数据进行比较,以此来评估iss所仿真处理器的硬件功能。在iss的数据处理过程中,本申请实施例只仿真处理器的硬件功能(即卷积运算的功能),一次将存储器中多个输入图像数据或多个权重数据转存至对应的fifo存储器中,且一次取一个输入图像数据与一个权重数据进行卷积运算,且一次将fifo存储器中的多个输出图像数据转存至对应的存储器中。从而使得数据转存时不受硬件总线带宽的限制,进一步提高了iss的数据处理速度,便于对处理器的硬件功能进行快速检验。其中,第三fifo存储器的宽度固定,即第三fifo存储器中每行可缓存的数据量相等。每个输出图像数据的大小相等,即每个输出图像数据所占的存储空间大小相等。k可以为大于或等于1的整数。

在本申请实施例中,终端在fifo存储器有可用存储空间以及待转存数据个数(待转存图像数据或待转存权重)不为0时,循环转存输入图像数据(一次可转存多个输入图像数据)以及循环转存权重数据(一次也可转存多个权重数据)。在待转存数据个数不为0且fifo存储器没有可用存储空间时,则等待fifo存储器中出现可用存储空间后再转存。在待转存数据个数为0时,则不再进行转存操作。终端最后将转存后的输入图像数据与权重数据做卷积运算,得到输出图像数据。将输出图像数据从fifo存储器转存至输出存储器中长久存储。提供了一种更完备的数据处理方法,进一步提高了iss的数据处理速度,便于对处理器的硬件功能进行快速检验。

参见图5,是本申请实施例提供的数据处理装置的一示意性框图。如图5所示,本申请实施例的数据处理装置包括:

第一转存模块100,用于当检测到待转存图像数据个数大于零且第一先进先出fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间时,将第一存储器中的n个输入图像数据转存至该第一fifo存储器;

第二转存模块110,用于当检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间时,将第二存储器中的m个权重数据转存至该第二fifo存储器,其中每个权重数据中包括输入图像数据的输入索引以及输出图像数据的输出索引;

卷积模块120,用于当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从该第一fifo存储器中读取到的输入图像数据i与从该第二fifo存储器中读取到的权重数据w进行卷积运算,得到该权重数据w的输出索引对应的输出图像数据,该权重数据w的输入索引对应输入图像数据i。

在一些可行的实施方式中,上述第一转存模块100还用于:当检测到该待转存图像数据个数大于零且该第一可用存储空间小于该n个输入图像数据所占的存储空间时,将从该第一存储器中读取到的与该第一可用存储空间的大小相等的输入图像数据转存至该第一fifo存储器。

在一些可行的实施方式中,上述第二转存模块110还用于:当检测到该待转存权重数据个数大于零且该第二可用存储空间小于该m个权重数据所占的存储空间时,将从该第二存储器中读取到的与该第二可用存储空间的大小相等的权重数据转存至该第二fifo存储器。

在一些可行的实施方式中,该装置还包括记录模块130。该记录模块130,用于当检测到该待转存图像数据个数大于零且该第一fifo存储器中不存在可用存储空间时,将所有待转存图像数据信息记录在该第一存储器中,以等待该第一fifo存储器中存在可用存储空间。

在一些可行的实施方式中,该装置还包括存储模块140、检测模块150、第三转存模块160以及输出模块170。该存储模块140,用于将该权重数据w的输出索引对应的输出图像数据顺序存储在第三fifo存储器中;该检测模块150,用于检测该第三fifo存储器中存储的输出图像数据个数是否大于或等于k;该第三转存模块160,用于当该第三fifo存储器中存储的输出图像数据个数大于或等于k时,从该第三fifo存储器中读取k个输出图像数据转存至第三存储器中;该输出模块170用于读取该第三存储器中存储的输出图像数据并输出。

在一些可行的实施方式中,该装置还包括第一存储器180、第一fifo存储器190、第二存储器200、第二fifo存储器210、第三存储器220以及第三fifo存储器230。该第一存储器180用于顺序存储输入图像数据,该第一fifo存储器190用于缓存从该第一存储器转存的输入图像数据;该第二存储器200用于顺序存储输入的权重数据,该第二fifo存储器210用于缓存从该第二存储器转存的权重数据;该第三fifo存储器220用于顺序缓存输出图像数据,该第三存储器230用于存储从该第三fifo存储器转存的输出图像数据。

具体实现中,上述数据处理装置可通过上述各个模块执行上述图1或图3所提供的实现方式中各个步骤所提供的实现方式,实现上述各实施例中所实现的功能,具体可参见上述图1或图3所示的方法实施例中各个步骤提供的相应描述,在此不再赘述。

本申请实施例中,数据处理装置在检测到待转存图像数据个数大于零且第一fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间时,将第一存储器中的n个输入图像数据转存至该第一fifo存储器,在检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间时,将第二存储器中的m个权重数据转存至该第二fifo存储器,当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从该第一fifo存储器中读取到的输入图像数据i与从该第二fifo存储器中读取到的权重数据w进行卷积运算,得到该权重数据w的输出索引对应的输出图像数据,可以提高iss的数据处理速度,便于对处理器的硬件功能进行快速检验。

参见图6,是本申请实施例提供的终端的一示意性框图。如图6所示,本申请实施例中的终端可以包括:一个或多个处理器6001和存储器6002。上述处理器6001和存储器6002通过总线6003连接。存储器6002用于存储计算机程序,所述计算机程序包括程序指令,处理器6001用于执行存储器6002存储的程序指令。其中,上述处理器6001被配置用于调用所述程序指令执行:

若检测到待转存图像数据个数大于零且第一先进先出fifo存储器的第一可用存储空间大于或等于n个输入图像数据所占的存储空间,则将第一存储器中的n个输入图像数据转存至该第一fifo存储器;

若检测到待转存权重数据个数大于零且第二fifo存储器的第二可用存储空间大于或等于m个权重数据所占的存储空间,则将第二存储器中的m个权重数据转存至该第二fifo存储器,其中每个权重数据中包括输入图像数据的输入索引以及输出图像数据的输出索引;

当该第一fifo存储器中缓存的输入图像数据个数以及该第二fifo存储器中缓存的权重数据个数均大于或等于1时,将从该第一fifo存储器中读取到的输入图像数据i与从该第二fifo存储器中读取到的权重数据w进行卷积运算,得到该权重数据w的输出索引对应的输出图像数据,该权重数据w的输入索引对应输入图像数据i。

应当理解,在本申请实施例中,所称处理器6001可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

该存储器6002可以包括只读存储器和随机存取存储器,并向处理器6001提供指令和数据。存储器6002的一部分还可以包括非易失性随机存取存储器。例如,存储器6002还可以存储设备类型的信息。

具体实现中,本申请实施例中所描述的处理器6001可执行本申请实施例提供的数据处理方法中所描述的实现方式,也可执行本申请实施例所描述的数据处理装置的实现方式,在此不再赘述。

上述计算机可读存储介质可以是前述任一实施例所述的数据处理装置或电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请是参照本申请实施例的方法、装置和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程诊疗数据的处理设备的处理器以产生一个机器,使得通过计算机或其他可编程诊疗数据的处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程诊疗数据的处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程诊疗数据的处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1