一种运算装置及相关产品的制作方法

文档序号:16756207发布日期:2019-01-29 17:23阅读:137来源:国知局
一种运算装置及相关产品的制作方法

本申请涉及人工智能技术领域,具体涉及一种运算装置及相关产品。



背景技术:

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

在实践中发现,现有的深度学习系统通常需要占用大量存储资源及运算资源,尤其对于复杂运算,大大降低了系统运算效率。因此,如何降低深度学习中存储资深及运算资源消耗的问题亟待解决。

申请内容

本申请实施例提供了一种运算装置及相关产品,可降低深度学习中存储资深及运算资源消耗。

本申请实施例第一方面提供了一种运算装置,所述运算装置包括存储单元、运算单元和控制器单元,其中,

所述存储单元,用于存储数据和指令;

所述控制器单元,用于从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;

所述运算单元,用于响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。

第二方面,本申请实施例提供了一种运算方法,应用于运算装置,所述运算装置包括存储单元、运算单元和控制器单元,其中,

所述存储单元存储数据和指令;

所述控制器单元从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;

所述运算单元响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。

第三方面,本申请实施例提供了一种神经网络计算装置,该神经网络计算装置包括一个或者多个第一方面所述的运算装置。该神经网络计算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过i/o接口传递给其他处理装置;

当所述神经网络计算装置包含多个所述运算装置时,所述多个所述运算装置间可以通过特定的结构进行连接并传输数据;

其中,多个所述运算装置通过快速外部设备互连总线(peripheralcomponentinterconnect-express,pci-e或pcie)pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述运算装置共享同一控制系统或拥有各自的控制系统;多个所述运算装置共享内存或者拥有各自的内存;多个所述运算装置的互联方式是任意互联拓扑。

第四方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第一方面所述的运算装置、通用互联接口,和其他处理装置。该神经网络计算装置与上述其他处理装置进行交互,共同完成用户指定的操作。

第五方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的运算装置、上述第三方面所述的神经网络计算装置或者上述第四方面所述的组合处理装置。

第六方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第五方面所述的神经网络芯片;

第七方面,本申请实施例提供了一种板卡,该板卡包括上述第六方面所述的神经网络芯片封装结构。

第八方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第七方面所述的板卡。

可以看出,在本申请实施例的方案中,存储单元存储数据和指令,控制器单元从存储单元中提取第一指令以及第一指令对应的第一数据,第一数据包括输入神经元数据和权值数据,第一指令为排序指令或者稀疏处理指令,运算单元响应第一指令,对输入神经元数据和权值数据执行第一指令对应的运算操作,得到运算结果,可降低深度学习中存储资深及运算资源消耗,提高了计算效率。

另外,在一些实施例中,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

附图说明

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

图1为本申请实施例提供的一种运算装置的结构示意图;

图2为本申请实施例提供的一种运算装置的另一结构示意图;

图3为本申请实施例提供的稀疏模式1的处理过程示意图;

图4为本申请实施例提供的稀疏模式2的处理过程示意图;

图5为本申请实施例提供的稀疏模式3的处理过程示意图;

图6为本申请实施例提供的运算单元及其连接关系的结构示意图;

图7为本申请实施例提供的第1个向量归并单元的结构示意图;

图8为本申请实施例提供的一种运算装置的另一结构示意图;

图9为本申请实施例提供的一种运算装置的另一结构示意图;

图10为本申请实施例提供的主处理电路的结构示意图;

图11为本申请实施例提供的神经网络模型的结构图的示意图;

图12为本申请实施例提供的一种运算装置的另一结构示意图;

图13为本申请实施例提供的一种组合处理装置的结构示意图;

图14为本申请实施例提供的另一种组合处理装置的结构示意图。

具体实施方式

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

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

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

首先介绍本申请使用的运算装置。参阅图1,提供了一种运算装置,该运算装置包括:存储单元10、控制器单元11和运算单元12,其中,控制器单元11与存储单元10以及运算单元12;其中,

该存储单元10可以包括:数据输入输出单元(数据i/o单元)203,

数据输入输出单元203,用于获取输入数据、权值数据、网络模型以及计算指令;

控制器单元11,用于从所述存储单元提取第一指令,解析该第一指令得到该计算指令的操作码以及操作域,提取该操作域对应的输入数据以及权值数据,将该操作码、输入数据以及权值数据发送给所述运算单元,所述操作码包括以下至少一种:矩阵计算指令的操作码、向量计算指令操作码、激活计算指令操作码、偏置计算指令操作码、卷积计算指令操作码、转换计算指令操作码等等;

运算单元12,用于依据该操作码对该输入数据以及权值数据执行该操作码对应的运算得到第一指令的结果。

可选地,该控制器单元包括:指令缓存单元110、指令处理单元111和存储队列单元113,所述指令缓存单元110用于对指令进行缓存,所述指令处理单元111用于实现译码功能;

指令缓存单元110,用于缓存所述第一指令;

指令处理单元111,用于解析所述第一指令得到该第一指令的操作码以及操作域;

存储队列单元113,用于存储指令队列,所述指令队列包括:按该队列的前后顺序待执行的多个计算指令或操作码。

该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。

可选的,存储单元还可以包括:寄存器201和缓存202和数据i/o单元。

存储介质201可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。

可选地,上述第一指令可以为向量指令,向量指令可以为以下至少一种:向量加法指令(va)、向量加标量指令(vas)、向量减法指令(vs)、向量乘法指令(vmv)、向量乘标量指令(vms)、向量除法指令(vd)、标量除向量指令(sdv)、向量间与指令(vav)、向量内与指令(vand)、向量间或指令(vov)、向量内或指令(vor)、向量指数指令(ve)、向量对数指令(vl)、向量大于判定指令(vgt)、向量等于判定指令(veq)、向量非指令(vinv)、向量选择合并指令(vmer)、向量最大值指令(vmax)、标量扩展指令(stv)、标量替换向量指令(stvpn)、向量替换标量指令(vpnts)、向量检索指令(vr)、向量点积指令(vp)、随机向量指令(rv)、循环移位指令(vcs)、向量加载指令(vload)、向量存储指令(vs)、向量搬运指令(vmove)、矩阵乘向量指令(mmv)、向量乘矩阵指令(vmm)、矩阵乘标量指令(vms)、张量运算指令(tens)、矩阵加法指令(ma)、矩阵减法指令(ms)、矩阵检索指令(mr)、矩阵加载指令(ml)、矩阵存储指令(ms)、矩阵搬运指令(mmove)。

可选地,如图2所示,图2为图1所描述的运算装置的一种变型结构,其与图1相比较,还可以包括:配置解析单元13、映射单元14和稀疏单元15,具体如下:

所述存储单元10,用于存储数据和指令;

所述控制器单元11,用于从所述存储单元中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;

所述运算单元12,用于响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。

其中,运算单元12可支持多种数据类型的运算,根据指令要求选择相应的运算器完成对应运算,例如,数据类型可以为16位定点数据或者32位浮点数据等。举例说明下,指令是矩阵加矩阵,选择加法器;指令是矩阵乘矩阵,选择乘法器和加法器,指令是16位定点运算指令,接收该指令进行16位定点运算,等等。

其中,上述数据可以包括以下至少一种数据类型:整型数据、离散型数据、连续型数据、幂次型数据、浮点型数据或者定点型数据,数据表示的长度可为32位长度浮点数据,16位长度定点数据等等;数据可包括以下至少一种:输入神经元数据、权值数据和偏置数据。

可选地,在所述第一指令为所述稀疏处理指令以及所述第一数据还包括预设配置数据时,其中,

所述配置解析单元13,用于根据所述预设配置数据设置映射模式;

所述映射单元14,用于根据所述映射模式对所述输入神经元和所述权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系;

所述指令缓存单元110,用于接收由所述控制器单元发送的目标指令;

所述指令处理单元111,用于将所述目标指令译码为运算指令;由所述运算单元对所述输入神经元-权值对执行运算操作,得到运算结果。

其中,预设配置数据可包括以下至少一种:数据类型,或者,稀疏参数。目标指令为矩阵乘矩阵计算指令,其译码后得到运算指令,该运算指令可以包括乘法运算指令和加法运算指令。第一指令包括至少一个目标指令。

可选地,稀疏单元15,用于依据所述稀疏参数对所述运算结果进行稀疏处理,得到稀疏处理后的运算结果。

可选地,所述稀疏参数包括稀疏模式;所述映射单元13根据所述映射模式对所述输入神经元和所述权值进行映射处理,具体为:

当处于所述稀疏模式为第一稀疏模式时,获取所述第一稀疏模式对应的权值稀疏序列,并依据该权值稀疏序列对所述权值进行映射处理;

当处于所述稀疏模式为第二稀疏模式时,获取所述第二稀疏模式对应的神经元稀疏序列,并依据该神经元稀疏序列对所述输入神经元进行映射处理;

当处于所述稀疏模式为第三稀疏模式时,获取所述第三稀疏模式对应的权值稀疏序列和神经元稀疏序列,并依据该权值稀疏序列和神经元稀疏序列对所述输入神经元和所述权值数据进行映射处理。

可选地,稀疏参数可包括以下至少一种:稀疏标志,稀疏率,稀疏模式等。

其中,稀疏标志用于确定是否进行稀疏处理,例如,可以用0表示不进行稀疏处理,1表示进行稀疏处理,也可以用1表示不进行稀疏处理,0表示进行稀疏处理。可以理解,还可以用根据需求灵活选择稀疏标志的表示方式。在进行稀疏处理的情况下,稀疏率表示每次进行稀疏处理神经元数据和/或权值数据的比例,例如5%,10%,25%等等。稀疏模式表示稀疏处理的具体模式,本申请实施例中,稀疏模式主要至少包括3种:稀疏模式1,仅权值稀疏处理;稀疏模式2,仅神经元数据稀疏处理;稀疏模式3,权值和神经元数据均稀疏处理,当然,稀疏模式还可以为以上至少两种模式组合,例如,稀疏模式1+稀疏模式2。另外,在未作稀疏处理的情况下,对应的稀疏模式记作模式0。又例如,神经元数据的稀疏率和权值数据的稀疏率还可不一样,例如,本申请实施例提供一种稀疏率的表示方式(a,b),其中,a为神经元数据的稀疏率,b为权值数据的稀疏率,例如为(5%,6%),即神经元数据的稀疏率为5%,权值数据的稀疏率为6%。

可选地,在没有稀疏标志的情况下,至少包括以下四种稀疏模式:稀疏模式0,不做稀疏;稀疏模式1,仅权值数据稀疏;稀疏模式2,仅神经元数据稀疏;稀疏模式3,权值和神经元数据都稀疏。

举例来说,上一层的输出神经元数据作为下一层的输入神经元数据时候,因为输出神经元数据已作稀疏处理,所以在下一层运算里,假如,稀疏的标准不改变,输入神经元数据就不需要重复做稀疏。

其中,所述配置解析单元13由神经网络的配置数据解析获得的稀疏模式进而设置映射单元的处理模式,即根据不同的稀疏模式对应不同的映射模式。

可选地,存储单元中预先存储稀疏模式与映射模式之间的映射关系,进而,依据该映射关系确定与稀疏模式对应的映射模式,在不同的映射模式下,根据神经元稀疏序列和权值稀疏序列做稀疏化,当然,映射关系不一定存储在存储单元中,还可以存储在片外存储器上,或者,还可以存储在其他设备(具备存储器功能的电子装置)上。存储单元中可预先存储权值稀疏序列和/或神经元稀疏序列。

可选地,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:

对神经元数据的元素绝对值排序,根据稀疏率计算获得需要稀疏的元素个数,根据需要稀疏的元素个数对排序后的神经元数据的元素作稀疏处理,并将稀疏后的稀疏神经元数据和神经元稀疏序列发送至所述控制器单元11。

其中,可对输出神经元的元素绝对值进行排序,根据稀疏率计算获得需要稀疏的元素个数,然后对输出神经元的元素绝对值小于预设阈值的元素作稀疏处理,即置其值为0,预设阈值可由用户自行设置或者系统默认,稀疏率可动态调整。

可选地,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:

神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0。

其中,神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0值,预设取值空间可以由用户自行设置或者系统默认。

举例说明下,如图3所示,图3为稀疏模式1的示例图。其中,稀疏权值数据只包括权值中非零的数据只存储w1,w5,w8,w9的权值数据,权值稀疏序列用于索引稀疏权值,如权值稀疏序列为100010011表示w1,w5,w8,w9的权值为非零值,而w2,w3,w4,w6,w7为0。稀疏序列的表示方式并不唯一,可以使用0表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据权值稀疏序列,选择对应的输入神经元数据,如图3中选择d1,d5,d8,d9输入神经元数据,通过对输入神经元数据和权值数据的映射,获得对应的输入神经元-权值对。

再举例说明下,如图4所示,图4为本申请实施例提供的稀疏模式2的示例图,其中稀疏神经元数据只包括神经元中非零的数据,如图4只存储d1,d3,d5,d8的神经元数据,神经元稀疏序列用于索引稀疏神经元数据,如神经元稀疏序列101010010表示d1,d3,d5,d8的神经元为非零值,而d2,d4,d6,d7,d9为0。应当认识到,稀疏序列的表示方式并不唯一,可以使用0表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据神经元稀疏序列,选择对应的权值数据,如图4中选择w1,w3,w5,w8的权值数据,通过对输入神经元数据和权值数据进行映射处理,得到对应的输入神经元-权值对。

再举例说明下,如图5所示,图5为本申请实施例提供的稀疏模式3的示例图,即根据神经元稀疏序列和权值稀疏序列,选择为非零值的输入神经元数据和权值数据,如图5所示,选择神经元数据d1,d5,d8和权值数据w1,w5,w8,通过对输入神经元数据和权值数据的映射处理,得到对应的输入神经元-权值对。

可选地,基于上述运算装置,可以实现如下运算方法,具体如下

所述存储单元10存储数据和指令;

所述控制器单元11从所述存储单元10中提取第一指令以及所述第一指令对应的第一数据,所述第一数据包括输入神经元数据和权值数据,所述第一指令包括排序指令或者稀疏处理指令;

所述运算单元12响应所述第一指令,对所述输入神经元数据和所述权值数据执行所述第一指令对应的运算操作,得到运算结果。

进一步可选地,所述控制器单元11包括:指令缓存单元110和指令处理单元111。

进一步可选地,在所述第一指令为所述稀疏处理指令以及所述第一数据还包括预设配置数据时,其中,

所述配置解析单元13根据所述预设配置数据设置映射模式;

所述映射单元14根据所述映射模式对所述输入神经元和所述权值数据进行映射处理,得到输入神经元-权值对,所述输入神经元-权值对为映射处理后的输入神经元数据与权值数据之间的映射关系;

所述指令缓存单元110接收由所述控制器单元发送的目标指令;

所述指令处理单元111将所述目标指令译码为运算指令;由所述运算单元12对所述输入神经元-权值对执行运算操作,得到运算结果。

进一步可选地,所述第一数据还包括稀疏参数;还包括如下步骤:

稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,得到稀疏处理后的运算结果。

进一步可选地,所述稀疏参数包括稀疏模式;

所述映射单元14根据所述映射模式对所述输入神经元和所述权值进行映射处理,具体为:

当处于所述稀疏模式为稀疏模式1时,获取所述稀疏模式1对应的权值稀疏序列,并依据该权值稀疏序列对所述权值进行映射处理;

当处于所述稀疏模式为稀疏模式2时,获取所述稀疏模式2对应的神经元稀疏序列,并依据该神经元稀疏序列对所述输入神经元进行映射处理;

当处于所述稀疏模式为稀疏模式3时,获取所述稀疏模式3对应的权值稀疏序列和神经元稀疏序列,并依据该权值稀疏序列和神经元稀疏序列对所述输入神经元和所述权值数据进行映射处理。

进一步可选地,所述稀疏参数还包括稀疏率,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:

对神经元数据的元素绝对值排序,根据稀疏率计算获得需要稀疏的元素个数,根据需要稀疏的元素个数对排序后的神经元数据的元素作稀疏处理,并将稀疏后的稀疏神经元数据和神经元稀疏序列发送至所述控制器单元11。

进一步可选地,所述稀疏单元15依据所述稀疏参数对所述运算结果进行稀疏处理,具体为:

神经元数据为0的元素保持0不变,神经元数据在预设取值区间内的元素置为0。

上述本申请所描述的运算装置和方法,支持神经网络的映射处理,可根据不同的实际运用情况,采用不同的映射模式,能够实现节省存储资源和运算资源的目的,另外,支持神经网络的稀疏处理及多种数据表示形式的神经网络,可根据不同的实际运用情况,采用不同的数据表示形式和稀疏处理,进一步节省在神经网络性能与运算和存储资源上提高性能,达到最优效果,对数据做稀疏处理,减小运算单元的运算负荷,加快运算速度。

可选地,图1所描述的运算装置还可以用于实现如下向量排序功能,具体如下:

如所述输入神经元数据为向量;本申请实施例中,所述第一指令包括向量排序指令,以及所述第一数据包括待排序数据向量以及待排序数据向量的中间结果。其中,第一指令可为特指要发射的指令,或者,指令队列中最前列的指令。

所述指令处理单元111,用于将所述向量排序指令译码成所述运算单元12执行的微指令;

所述运算单元12,还具体用于根据所述微指令将所述待排序数据向量或所述中间结果进行排序,得到与所述待排序数据向量等长度的排序后的向量。

可选地,运算单元12可以通过指令配置的方式动态选择排序方法完成向量排序运算。排序方法可以包括以下至少一种:冒泡排序、选择排序、快速排序、归并排序或者二分排序。

可选地,控制器单元11从存储单元10中获取所要执行的第一指令,若所述第一指令为向量排序指令,则根据向量排序类型、待排序数据向量的长度、向量排序指令的源操作数地址、目的操作数地址、向量长度和排序类型生成微指令,由运算单元12响应微指令执行排序操作。

如下表所示,示出了向量排序指令的一种可选地格式,具体如下:

其中,操作码op,长度为k位,例如,具体内容为b1b2…bk,操作码op用于指明指令所作的操作为向量排序操作,若某一指令的前k位与b1b2…bk不一致,则表明该指令用于实现其他运算操作,若某一指令的前k位于b1b2…bk一致,则表明该指令为向量排序指令。

向量源地址src,长度为q位,当操作码为b1b2…bk时,表示待排序数据向量在存储单元中的地址,q大于0;

向量目的地址dst,长度为q位,当操作码为b1b2…bk时,表示排序后的向量在存储单元中的地址,q大于0;

向量长度len,长度为r位,当操作码为b1b2…bk时,表示待排序数据向量的长度,r大于0;

排序类型,长度为1位或多位,当操作码为b1b2…bk时,若排序类型的最高位为0,表示由小到大进行排序。若排序类型的最高位为1,表示由大到小进行排序。若排序类型域的长度为a(a>1)位,排序类型的低a-1位指明排序指令所采用的排序方法。

可选地,所述运算单元12根据所述微指令将所述待排序数据向量或所述中间结果进行排序具体为:

步骤a:若排序后得到的为待排序数据向量的中间结果,则将所述待排序数据向量的中间结果写回到存储单元的源地址,并重复执行所述步骤a,直到所述得到待排序数据向量的最后结果,则跳转到步骤b;步骤b:若排序得到的为待排序数据向量的最后结果,将所述待排序数据向量的最后结果根据所述向量排序指令提供的目的操作数地址写回到存储单元的数据i/o单元,操作结束。

可选地,所述运算单元12包括由n个向量归并单元,n为大于等于2的整数;n个向量归并单元每次从所述存储单元10中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,转存入所述存储单元中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。

其中,如图6,图6给出了运算单元12的具体细化结构,运算单元可包含n个向量归并单元,n个向量归并单元从存储单元10中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,转存入存储单元10中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。

如图7所示,向量归并单元的具体结构可参见图7所示的第1个向量归并单元,该向量归并单元包括控制信号ctrl(连接控制器单元11),输入向量d_1和d_2(连接存储单元10),输出数据为out(用于连接存储单元10中的数据i/o单元)。其中,ctrl用于设置向量归并单元的操作类型和输入向量d_1和d_2的长度len_1和len_2。其中,操作类型可以用来描述进行归并的顺序。举例而言,操作类型可以包括0和1,操作类型0可以用来表示向量归并单元根据向量由小到大的顺序进行归并,操作类型1可以用来表示向量归并单元根据向量由大到小的顺序进行归并。在其他实施例中,也可以用操作类型1来表示向量归并单元根据向量由小到大的顺序进行归并,操作类型0来表示向量归并单元根据向量由大到小的顺序进行归并。可以理解,操作类型还可以根据具体需求进行设置。以两个输入向量为例,若其中一个输入向量的长度为0时,则可以直接输出另一个向量。

可选地,所述运算单元12执行步骤a具体为:

步骤a1、初始化归并次数i为1;

步骤a2、由所述n个向量归并单元进行计算,在第i次归并所述待排序数据向量或所述中间结果时,从所述存储单元中获取所述待排序数据向量或所述中间结果,将所述待排序数据向量或中间结果按顺序分成份,对向量进行两两归并,除最后一份外,每个向量长度为2i-1;m为待排序数据向量的长度;

步骤a3、若归并次数则将归并次数加一,并将处理后的中间结果写回到存储单元源地址,重复执行步骤a2-a3,直到则跳转到步骤b;可以理解,当时,则排序得到的为待排序数据向量的最后结果。

所述运算单元12执行步骤b,具体为:

若归并次数若只存在分配后的两份待排序数据向量,则经所述n个向量归并单元中的第一个向量归并单元归并后,得到的向量为已排序向量,将排序后的结果根据所述向量排序指令提供的目的操作数地址写入到数据输出单元中,操作结束。

可选地,所述运算单元12对向量进行两两归并,具体为:

根据所述向量排序指令提供的源操作数地址按顺序编号将编号为2*j-1、2*j的向量分配给第((j-1)modn)+1个向量归并单元进行处理,其中j>0。

可选地,所述待排序数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。

举例说明下,当向量d_1和d_2且操作类型为0分别为2、4、6、7和3、3、8、9时,归并的过程如下步骤1-步骤7,具体如下:

步骤1:

d_1:2467len_1:4

d_2:3389len_2:4

输出向量:2

步骤2:

d_1:467len_1:3

d_2:3389len_2:4

输出向量:23

步骤3:

d_1:467len_1:3

d_2:389len_2:3

输出向量:233

步骤4:

d_1:467len_1:3

d_2:89len_2:2

输出向量:2334

步骤5:

d_1:67len_1:2

d_2:89len_2:2

输出向量:23346

步骤6:

d_1:7len_1:1

d_2:89len_2:2

输出向量:233467

步骤7:

d_1:len_1:0

d_2:89len_2:2

输出向量:23346789

向量归并结束。

再举例说明下,对于向量排序指令(sort_op,src,dst,9,0),假设数据存储单元1地址src开始,连续存放的9个数据分别为9、1、5、3、4、2、6、8、7,向量归并单元数量为2。根据排序类型的最高位,进行由小到大的排序,根据排序类型的低m-1位全0,进行排序的类型为归并排序。在运算过程,每次每个向量归并单元对应输入的向量、地址以及输出地址如下所示:

第一次合并:

合并后的向量为193524687;

第二次合并:

合并后的向量为135924687;

第三次合并:

合并后的向量为:123456787

第四次合并:

合并后的向量为:123456778,并将其送入到数据i/o单元13中。

可选地,基于上述运算装置,可以实现如下运算方法,具体如下

所述指令处理单元111将所述向量排序指令译码成所述运算单元执行的微指令;

所述运算单元12根据所述微指令将所述待排序数据向量或所述中间结果进行排序,得到与所述待排序数据向量等长度的排序后的向量。

可选地,所述运算单元12根据所述微指令将所述待排序数据向量或所述中间结果进行排序具体为:

步骤a:若排序后得到的为待排序数据向量的中间结果,则将所述待排序数据向量的中间结果写回到存储单元的源地址,并重复执行所述步骤a,直到所述得到待排序数据向量的最后结果,则跳转到步骤b;步骤b:若排序得到的为待排序数据向量的最后结果,将所述待排序数据向量的最后结果根据所述向量排序指令提供的目的操作数地址写回到存储单元的数据i/o单元,操作结束。

进一步可选地,所述运算单元12包括n个向量归并单元构成,其中,n为大于等于2的整数,所述n个向量归并单元用于从所述存储单元中读取不大于2n个已经归并的子向量或者有序子向量,并进行归并,将归并后的结果转存入所述存储单元中,直到已经归并的子向量的长度等于所述待排序数据向量长度,形成排序后的向量。

进一步可选地,所述运算单元12执行步骤a具体为:

步骤a1、初始化归并次数i为1;

步骤a2、由所述n个向量归并单元进行计算,在第i次归并所述待排序数据向量或所述中间结果时,从所述存储单元中获取所述待排序数据向量或所述中间结果,将所述待排序数据向量或中间结果按顺序分成份,对向量进行两两归并,除最后一份外,每个向量长度为2i-1;m为待排序数据向量的长度;

步骤a3、若归并次数则将归并次数加一,并将处理后的中间结果写回到存储单元源地址,重复执行步骤a2-a3,直到则跳转到步骤b;

所述运算单元12执行步骤b,具体为:

若归并次数若只存在分配后的两份待排序数据向量,则经所述n个向量归并单元中的第一个向量归并单元归并后,得到的向量为已排序向量,将排序后的结果根据所述向量排序指令提供的目的操作数地址写入到数据输出单元中,操作结束。

进一步可选地,所述运算单元12对向量进行两两归并,具体为:

根据所述向量排序指令提供的源操作数地址按顺序编号将编号为2*j-1、2*j的向量分配给第((j-1)modn)+1个向量归并单元进行处理,其中j>0。

进一步可选地,所述待排序数据向量为预处理阶段测试数据特征矩阵对应的特征值向量和分类结果的概率向量。

进一步可选地,所述第一指令包括下述指令中的一个或任意组合:向量间与指令vav、向量内与指令vand、向量间或指令vov、向量内或指令vor、向量指数指令ve、向量对数指令vl、向量大于判定指令vgt、向量等于判定指令veq、向量非指令vinv、向量选择合并指令vmer、向量最大值指令vmax、标量扩展指令stv、标量替换向量指令stvpn、向量替换标量指令vpnts、向量检索指令vr、向量点积指令vp、随机向量指令rv、循环移位指令vcs、向量加载指令vload、向量存储指令vs、向量搬运指令vmove、矩阵检索指令mr、矩阵加载指令ml、矩阵存储指令ms、矩阵搬运指令mmove。

进一步可选地,所述装置用于稀疏神经网络运算或者稠密神经网络运算。

采用本申请实施例,将向量排序指令译码成运算单元执行的微指令,根据微指令将待排序数据向量或所述中间结果进行排序,得到与待排序数据向量等长度的排序后的向量。相对于现有技术中,相关操作串行执行,很难利用排序算法的可并行性,运算速度较慢,且向量排序算法会被分成译码成一系列的指令序列,译码的开销也很大,本申请可以并行执行排序,且降低译码开销,提升了排序效率。

在一种可选实施例中,图8作为图1所示的运算装置的一种变型结构,其运算单元12如图8所示,可以包括分支处理电路1003;其具体的连接结构如图9所示,其中,

主处理电路1001与分支处理电路1003连接,分支处理电路1003与多个从处理电路1002连接;

分支处理电路1003,用于执行转发主处理电路1001与从处理电路1002之间的数据或指令。

在另一种可选实施例中,运算单元12如图3所示,可以包括一个主处理电路1001和多个从处理电路1002。在一个实施例里,如图3所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路。

k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。

可选的,如图10所示,该主处理电路还可以包括:转换处理电路1010、激活处理电路1011、加法处理电路1012中的一种或任意组合;

转换处理电路1010,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);

激活处理电路1011,用于执行主处理电路内数据的激活运算;

加法处理电路1012,用于执行加法运算或累加运算。

所述主处理电路,用于将将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;

所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;

所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该运算指令的结果,将该运算指令的结果发送给所述控制器单元。

所述从处理电路包括:乘法处理电路;

所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;

转发处理电路(可选地),用于将接收到的数据块或乘积结果转发。

累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。

另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。

本申请提供的计算装置设置了互联单元,此互联单元能够根据运算指令的需要将运算单元内的计算器组合连接得到与该运算指令对应的计算拓扑结构,进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,提高了计算效率。

其中,数据转换单元16从装置外获取结构图中的部分节点,通过控制器单元11判断节点是否经过运算单元12处理,如果已经处理,将该节点舍弃,不做任何操作;如果没有处理,对该节点进行节点格式的转换,转换完成后,将其写入到存储单元10中。控制器单元11将指令从运算装置外部读入,不经转换,写入到存储单元10中。第一次从装置外获取的结构图(如图11所示,图11给出了一种结构图的示意图)中节点为源节点s,第i次获取的点为第i-1(i>1)次计算后得到的候选节点的邻接节点且此邻接节点未被运算单元处理。可选地,它将从装置外获取的结构图的节点n转化为如下的格式:

(addr(before(n)),f(n),n,vis)

其中,before(n)表示节点n的前驱节点,addr(before(n))表示节点n的前驱节点在存储单元10中的地址,f(n)表示从源节点s到节点n的路径上产生的总代价,n表示节点的属性,用于计算单个节点n所产生的代价,vis表示此节点是否被访问过,例如,未被访问过记作0,被访问过记作1,对于源节点before(n)为n本身,f(n)和vis都设置为0。

存储单元10,用于从数据转换单元数据转换单元14中获取指令和转换后的数据,为运算单元12提供数据,存储经由运算单元12处理后的数据,得到近似最优路径结果并存储,最后将近似最优路径结果写回到装置外部。

运算单元12,从存储单元10中获取节点信息中vis=0的节点,即未被访问过的节点,将此节点的前驱节点的部分信息整合到此节点构成如下的格式:

(f(before(n)),f(n),n,vis)

其中,f(before(n))表示从源节点s到n的前驱节点的路径对应的代价值,f(n)=0。在运算单元中,基于预设代价函数计算节点n所产生的代价值f(n),然后,得到源节点到节点n的路径对应的总代价值f(n)=f(n)+f(before(n)).此时送入运算单元12的节点有m个,分别表示为n1,n2,…nm,可计算得到m个路径对应的代价值f(n1),f(n2),…f(nm)。将对应的m个节点按照代价值f(n1),f(n2),…f(nm)从小到大的顺序进行排序得到n1′,n2′,…nm′。判断源节点s到n1′的路径是否构成完整的近似最优路径,如果构成,则对控制器单元11发送运算终止指令,并将n1′对应的节点信息(addr(before(n)),f(n),n,1)传送到存储单元10中。本申请实施例中的预设代价函数可以为以下至少一种:均方误差代价函数、交叉熵代价函数,或者,神经网络中的代价函数。

可选的,假设运算装置允许最大候选节点数为k。当m≤k时,则可以将对应的m个节点都作为候选节点,将更新后的(addr(before(n)),f(n),n,1)写入存储单元10中;当m>k时,则可以将n1′,n2′,…nk′对应的节点信息(addr(before(n)),f(n),n,1)写回到存储单元10中。

运算单元12可以在本单元内部维持一个空的堆栈,在收到控制器单元11发送的整合指令之后,对节点信息(addr(before(n)),f(n),n,1)进行整合,具体地,将节点n压入堆栈中,然后,从存储单元10中获取该堆栈顶部节点的前驱节点,并压入该堆栈,直到栈顶节点的信息中before(n)为n,即栈顶节点为图的源节点。然后,将堆栈中节点不断出栈,按照顺序送入到存储单元10中,存储单元10中获取的节点序列即为最终得到的近似最优路径。

控制器单元11通过存储单元10获取运算所需的指令,存储单元10读取上一次节点从运算装置外部存入的节点的尚未被运算单元12运算的节点,其控制运算单元12进行数据运算,并接收运算单元12发送的运算终止指令,控制运算单元12与存储单元10之间的数据传输。

请参见图12,图12中运算单元12包括节点分发单元41、代价函数计算单元42、排序单元43和终止判断单元44。

其中,节点分发单元41将存储单元10获取的节点n1,n2,…nm分别分配给l个代价函数计算单元42,并由其计算对应的路径代价,其中,前l-1个代价函数计算单元分别分配个节点,第l个代价函数计算单元分配个节点,其中表示向上取整。

如图12中,图中共计l个代价函数计算单元,每个代价函数计算单元42可以实现独立实现从源节点到对应路径的代价值。每个代价函数计算单元42对由节点分发单元41分配的节点,计算得到对应的节点号-路径代价值对(n1,f(n1)),(n2,f(n2)),…(nm,f(nm)),计算路径代价的函数根据实际需要,由控制器单元11进行设置,然后,将计算得到的节点号-路径代价值对(n1,f(n1)),(n2,f(n2)),…(nm,f(nm))传送到排序单元43中。

可选地,代价函数计算单元可以包括乘法器以及加法器。

排序单元43将从代价函数计算单元32获取的各节点的节点号-路径代价值对(n1,f(n1)),(n2,f(n2)),…(nm,f(nm)),根据路径代价值从小到大进行排序,得到排序后的节点号-路径代价值对(n1′,f(n1))′,(n2′,f(n2))′,…(nm′,f(nm)′),并将传送到终止判断单元34。

终止判断单元44从排序单元43中获取排序后的节点号-路径代价值对,根据(n1′,f(n1))′判断是否已经取得近似最优路径,其中,判断是否已经取得近似最优路径的方法根据实际问题由控制器单元11设置。如果已经取得近似最优路径,则终止判断单元34对控制器单元11发送运算终止指令,并将n1′对应的节点信息(addr(before(n)),f(n),n,1)传送到结果存储单元10中。否则,假设装置允许的最大候选节点数为k,若m≤k,则将对应的m个节点都作为候选节点将更新后的(addr(before(n)),f(n),n,1)写回到存储单元10中,若m>k,则将n1′,n2′,…nk′对应的节点信息(addr(before(n)),f(n),n,1)写回到存储单元10中。

举例说明下,如下提供了一种最优路径寻找方法,具体如下:

步骤1,从运算装置外部获取运算所需的运算指令,经由数据转换单元16存储到存储单元10中,传输到控制器单元11。

步骤2,从运算装置外部将原始图中部分节点传送到数据转换单元16中,装置外部的结构图可以是邻接表、邻接矩阵、顶点对或者其他形式。其中,第一次传送时只传送源节点s,之后传送时传输到数据转换单元1中节点为上一次经运算单元12筛选得到的候选节点的尚未被运算单元12处理过的邻接节点。在此过程中,由控制器单元11判断对应的节点是否已经被运算单元12处理过。数据转换单元16将传入的节点按照(addr(before(n)),f(n),n,vis)的格式进行转换,然后送至存储单元10中。

步骤3中,控制器单元11控制运算单元12从存储单元10中获取由数据转换单元16传入的尚未被处理的节点n1,n2,…nm,将各个节点与前驱节点的信息进行整合得到格式为(f(before(n)),f(n),n,vis)的节点。然后,运算单元12基于预设代价函数计算节点n所产生的代价值f(n),得到源节点到节点n的路径对应的总代价值f(n)=f(n)+f(before(n))。分别计算m个路径对应的代价值f(n1),f(n2),…f(nm)。将对应的m个节点按照代价值f(n1),f(n2),…f(nm)从小到大的顺序进行排序得到n1′,n2′,…nm′。判断源节点s到n1′的路径是否构成完整的近似最优路径,如果构成,则对控制器单元11发送运算终止指令,并将n1′对应的节点信息(addr(before(n)),f(n),n,1)传送到存储单元10中,转入步骤4。否则,假设装置允许的最大候选节点数为k,若m≤k,则将对应的m个节点都作为候选节点将更新后的(addr(before(n)),f(n),n,1)写回到存储单元10中,若m>k,则将n1′,n2′,…nk′对应的节点信息(addr(before(n)),f(n),n,1)写回到存储单元10中,转入到步骤2中。

步骤4中,控制器单元11在收到来自运算单元12的运算终止指令后,判断结果存储单元10是否已经从运算单元12中获取节点信息,如果没有取得节点信息,则一直循环判断,直到取得为止。结果存储单元11在单元内部维持一个空的堆栈,在取得运算结果后,将收到的来自运算单元12的节点信息(addr(before(n)),f(n),n,1)压入堆栈中。然后从存储单元10中获取堆栈顶部节点的前驱节点,并压入堆栈,重复此过程,直到栈顶节点的信息中before(n)为n,即栈顶节点为图的源节点。然后,存储单元10将堆栈中节点不断出栈,按照顺序送入到存储单元10中,存储单元10中获取的节点序列即为最终得到的近似最优路径。

在步骤5中,存储单元10将在控制器单元11的控制下,从存储单元10中获取的近似最优路径,并将其传输到装置外部。

采用本申请实施例,通过对结构图进行搜索,找到一条能够满足条件的近似最优路径,可以有效地减少空间消耗,并提高时间效率,且在计算路径的代价的过程中,采用多个代价函数计算单元同时进行计算,可以提高运算的并行性。

需要说明的是,上述运算装置不仅可以进行稀疏神经网络运算,还可以进行稠密神经网络运算。上述运算装置特别适用于稀疏神经网络的运算,是因为稀疏神经网络里0值数据或者绝对值很小的数据非常多。通过映射单元可以提出这些数据,在保证运算精度的情况下,可提高运算的效率。

需要指出的是,本申请实施例中提到的输入神经元和运算结果(或者输出神经元)并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为运算结果。以卷积神经网络为例,假设一个卷积神经网络有l层,k=1,2,3…l-1,对于第k层和第k+1层来说,第k层被称为输入层,该层中的神经元为上述输入神经元,第k+1层被称为输入层,该层中的神经元为上述运算结果,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。

上述各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述神经网络运算模块中的运算单元可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。上述存储单元、指令缓存单元,第一输入缓存单元、第二输入缓存单元和输出缓存单元均可以是任何适当的磁存储介质或者磁光存储介质,比如rram,dram,sram,edram,hbm,hmc等等。

在一种可行的实施例中,本申请实施例提供了一种神经网络计算装置,该神经网络计算装置包括一个或多个如上述所示实施例所述的神经网络运算模块,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过i/o接口传递给其他处理装置;

当所述神经网络计算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行连接并传输数据;

其中,多个所述运算装置通过pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述运算装置共享同一控制系统或拥有各自的控制系统;多个所述运算装置共享内存或者拥有各自的内存;多个所述运算装置的互联方式是任意互联拓扑。

该神经网络计算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

在一种可行的实施例中,本申请实施例提供了一种组合处理装置,该组合装置包括如上述神经网络计算装置,通用互联接口和其他处理装置。

上述神经网络计算装置与上述其他处理装置进行交互,共同完成用户指定的操作。参见图13,图13为本申请实施例提供的一种组合处理装置的结构示意图。如图13所示,该组合处理装置包括上述神经网络计算装置1601、通用互联接口1602和其他处理装置1603。

其中,上述其他处理装置1603包括中央处理器(centralprocessingunit)、图形处理器(graphicsprocessingunit,gpu)、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置1603所包括的处理器数量不做限制。其他处理装置1603作为神经网络计算装置1601与外部数据和控制的接口,包括数据搬运,完成对本神经网络计算装置的开启、停止等基本控制;其他处理装置1603也可以和神经网络计算装置1601协作共同完成运算任务。

上述通用互联接口1602,用于在所述神经网络计算装置1601与其他处理装置1603间传输数据和控制指令。该神经网络计算装置1601从其他处理装置1603中获取所需的输入数据,写入神经网络计算装置1601片上的存储装置;可以从其他处理装置1603中获取控制指令,写入神经网络计算装置1601片上的控制缓存;也可以读取神经网络计算装置1601的存储装置中的数据并传输给其他处理装置1603。

可选的,如图14所示,上述组合处理装置还包括存储装置1604,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本神经网络计算装置1601或其他处理装置1603的内部存储中无法全部保存的数据。

上述组合装置可以作为手机、机器人、无人机等智能设备的片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。

在一种可行的实施例中,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括任一所示实施例所述的运算装置,或者上述神经网络计算装置或者上述组合处理装置。

在一种可行的实施例中,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述神经网络芯片。

在一种可行的实施例中,本申请实施例提供了一种板卡,该板卡包括上述神经网络芯片封装结构。

在一种可行的实施例中,本申请实施例提供了一种电子装置,该电子装置包括上述板卡。

其中,该电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。

上述交通工具包括飞机、轮船和/或车辆;上述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种神经网络运算方法的部分或全部步骤。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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