掌桥专利:专业的专利平台
掌桥专利
首页

处理器的方法及装置、计算机可读存储介质

文献发布时间:2023-06-19 18:27:32


处理器的方法及装置、计算机可读存储介质

技术领域

本申请实施例涉及处理器技术领域,并且更为具体地,涉及一种处理器的方法及装置、计算机可读存储介质。

背景技术

目前,查找数据集(例如数组或图像数据集等)中的最值(例如最大值或最小值)主要是通过对数据集中的数据元素进行两两比较的方式来实现。但是,这种方式一次只能比较两个数据元素,数据处理速度较低。

发明内容

本申请实施例提供一种处理器的方法及装置、计算机可读存储介质。下面对本申请实施例涉及的各个方面进行介绍。

第一方面,提供一种处理数据的方法,包括:利用第一向量指令从数据集中读取多组数据,其中每组数据包含多个数据;利用第二向量指令并行地对所述多组数据进行最值运算,得到第一组中间结果;根据所述第一组中间结果,计算所述数据集的最值。

作为一种可能的实现方式,所述第二向量指令用于执行最大值运算,所述方法还包括:利用第三向量指令并行地对所述多组数据进行最小值运算,得到第二组中间结果;根据所述第二组中间结果,计算所述数据集的最小值。

作为一种可能的实现方式,所述利用第三向量指令并行地对所述多组数据进行最小值运算,包括:在所述第二向量指令执行完毕之后,且在获得所述第二向量指令的执行结果之前,利用所述第三向量指令并行地对所述多组数据进行最小值运算。

作为一种可能的实现方式,所述第一向量指令和所述第二向量指令为第一循环代码中的指令,且所述第一循环代码内多次交替执行所述第一向量指令和所述第二向量指令。

作为一种可能的实现方式,用于处理所述数据集的向量指令为NEON指令集或SSE指令集中的指令。

作为一种可能的实现方式,所述数据集中的数据为图像的像素数据。

第二方面,提供一种处理数据的装置,用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法。

第三方面,提供一种处理数据的装置,包括:存储器,用于存储指令;处理器,用于执行所述存储器中存储的指令,以执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法。

第四方面,提供一种设备可读存储介质,其上存储有用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。

第五方面,提供一种程序产品,包括用于执行如第一方面或第一方面中的任意一种可能的实现方式所述的方法的指令。

本申请实施例提供的处理数据的方法可以基于向量指令实现对数据集中多组数据的并行比较运算,以获取数据集的最值。相较于传统方案中数据元素进行两两比较的方式,本方案可以显著提高数据处理速度。

附图说明

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

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

图3是本申请实施例提供的一种处理数据的方法的结构示意图。

图4是本申请实施例提供的一种处理数据的装置的结构示意图。

图5是本申请实施例提供的另一种处理数据的装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。

本申请实施例的方法用于查找数据集中的最值。例如,查找数据集中的最大值或最小值。该数据集例如可以是数组或图像数据。

目前,查找数据集中的最值主要是通过对数据集中的数据元素进行遍历的方式来实现。具体地,可以先根据数据集中的数据元素,赋值一个初始的数据集最值,然后将数据集中的数据元素逐个与该初始的数据集最值进行比较。对于每个遍历到的数据元素,比较该数据元素与当前数据集最值的大小,以确定是否需要更新该数据集最值。如果需要更新数据集最值,则将该数据元素作为更新后的数据集的最值。以此类推,在数据集中的数据元素全部遍历完之后,即可获取数据集的最值(也可以称全局最值)。

在上述过程中,需要根据数据元素与数据集最值的比较结果,来更新全局最值。对于每个被遍历到的数据元素,如果都是等到比较结果出来后,才对全局最大值进行更新,这将会耗费很长的时间。为了提高数据处理速度,可以采用CPU分支预测机制来对全局最值进行更新。在未得到数据元素与全局最值的比较结果之前,处理器可以先对比较结果进行预测,并根据预测结果对全局最值进行更新。如果预测正确,则处理器可以继续执行后续的操作。如果预测失败,处理器需要清空流水线,重新加载正确的分支进行操作。

从上述过程可以看出,虽然CPU分支预测机制在一定程度上可以提高处理速度,但是CPU预测机制仍会存在预测失败的情况。如果预测失败,则会导致流水线重排,不利于提高数据处理速度。

另外,上述方式在确定数据集最值的过程中,需要将数据集中的数据元素依次进行遍历,且一次只能比较两个数据元素,无法做到并行比较,从而会影响数据处理速度。

针对上述问题,本申请实施例提供的处理数据的方法可以基于向量指令实现对数据集中多组数据的并行比较运算,以获取数据集的最值。相较于传统方案中数据元素进行两两比较的方式,本方案可以显著提高数据处理速度。

本申请实施例的方法可应用于机器学习、人工智能、图像处理等技术领域。本申请实施例的方法可以由处理器执行。该处理器可以包括多个向量寄存器。多个向量寄存器中的每个向量寄存器包括多个通道,多个通道中的每个通道可分别用于存储一个数据元素。需要说明的是,一个向量寄存器包括的通道数量与数据元素的大小有关。例如,如果一个向量寄存器的位宽为128bit,一个数据元素的大小为16bit,那么该向量寄存器可以包括8个通道,即该向量寄存器可以存储8个数据元素。同理,若一个数据元素的大小为32bit,则该向量寄存器可以存储4个数据元素。

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

在步骤S120,利用第一向量指令从数据集中读取多组数据。

第一向量指令可以为向量读取指令。第一向量指令可以每次从数据集中读取一组数据,然后将该一组数据加载至处理器的一个向量寄存器。应理解,数据集可以包括多组数据,可以重复使用第一向量指令多次读取数据集中的多组数据,直至将该多组数据均加载至处理器的向量寄存器为止。

需要说明的是,可以利用第一向量指令将多组数据加载至处理器的一个向量寄存器,也可以加载至处理器的多个向量寄存器。

在一些实施例中,数据集例如可以是数组或图像数据。以该数据集为图像数据为例,数据集中的数据元素可以为图像的像素数据。数据集的多组数据中的每组数据可以包括多个数据元素。

在一些实施例中,若数据集为图像数据(比如图像大小为宽4000个像素点,高3000个像素点),相关技术中通常采用全图的数据偏移来获取图像数据。示例性地,比如当前需要获取第2000行的第1列至第8列的8个数据元素,则需要计算第1行至第1999行的偏移量,从而造成计算量较大。针对该问题,本申请实施例提出了通过图像的行列分解来获取图像数据,即根据行或列的偏移量来获取数据。示例性地,比如当前需要获取第2000行的第1列至第8列的8个数据元素,则可以从第2000行的第一个数据元素来计算偏移量,从而可以快速的获取第2000行的第1列至第8列的8个数据元素。同时,也会大大减少内存需要缓存的数据量,从而使得图像数据获取的内存局部性更好。当然,针对不同的平台可能有性能差异,可以根据实验进行调整。

在步骤S140,利用第二向量指令并行地对多组数据进行最值运算,得到第一组中间结果。

第二向量指令可以为最值运算指令,比如最大值运算指令vmax或最小值运算指令vmin。也就是说,如果当前的最值运算为最大值运算,则第二向量指令为vmax。如果当前的最值运算为最小值运算,则第二向量指令为vmin。

在一些实施例中,处理器例如可以包括目标向量寄存器和第一向量寄存器,目标向量寄存器或第一向量寄存器均可以指处理器中的任一向量寄存器。目标向量寄存器的多个通道与第一向量寄存器的多个通道一一对应。下面示例性对“并行地对多组数据进行最值运算”进行说明。

数据集例如可以包括N组数据,N为大于1的正整数。作为一个示例,可以先对目标向量寄存器进行赋值,例如可以将多组数据中的任一组数据元素加载至目标向量寄存器作为初始值。然后可以将剩余的N-1组数据中的一组数据加载至第一向量寄存器。接着,利用第二向量指令可以将目标向量寄存器和第一向量寄存器的对应通道中的数据元素并行地进行比较运算,并根据运算的结果,将对应通道的最值更新至目标向量寄存器,以使得该目标向量寄存器中始终存储对应通道的最值。不断的将剩余的数据组加载至第一向量寄存器,然后与目标向量寄存器中的数据进行并行最值运算,直至遍历数据集中的N-1组数据。第一组中间结果可以是指遍历数据集中的N-1组数据后,目标向量寄存器中的存储的多个通道的一组最值数据。

应理解,若第二向量指令为vmax,则第一组中间结果可以是目标向量寄存器的多个通道对应的一组最大值。若第二向量指令为vmin,则第一组中间结果可以是目标向量寄存器的多个通道对应的一组最小值。

在一些实施例中,在并行地对数据集中的多组数据进行最值运算时,可以将最大值运算与最小值运算交替进行。作为一个示例,若第二向量指令为vmax,则在执行第二向量指令后,可以利用第三向量指令(即指令vmin)并行地对多组数据进行最小值运算,以得到第二组中间结果,然后进行下一个交替循环,即再次进行最大值运算,再次进行最小值运算。第二组中间结果可以是指第二目标向量寄存器的多个通道对应的一组最小值。与第一组中间结果的获取过程类似,具体可以参见第一组中间结果的获取过程,在此不做详述。

在一些实施例中,在数据集的最大值与最小值交替运算的场景中,目标向量寄存器可以包括第一目标向量寄存器和第二目标向量寄存器。其中,第一目标向量寄存器可用于进行最大值运算,第二目标向量寄存器可用于进行最小值运算。也就是说,可以利用第二向量指令并行地对第一向量寄存器与第一目标向量寄存器的对应通道进行最大值运算,同时,利用第三向量指令并行地对第一向量寄存器与第二目标向量寄存器的对应通道进行最小值运算。

在一些实施例中,在数据集的最大值与最小值交替运算的过程中,为了避免过多的重复输入指令vmax和指令vmin,可以建立循环代码(例如可以是C语言中的for循环)。也就是说,指令vmax和指令vmin均为循环代码中的指令,通过循环代码可以快速的遍历数据集中的多组数据。

需要说明的是,每一次代码循环需要一个判断过程,该判断过程会增加处理数据的时间,因此,本申请实施例可以将循环代码内的指令实现展开,比如可以在一次循环代码内多次交替执行第一向量指令和第二向量指令。当然,也可以在一次循环代码内多次交替执行第一向量指令、第二向量指令和第三向量指令。这样可以减少循环次数,提高处理数据的速度。以循环代码内包括指令vmax和指令vmin为例进行说明,作为一个示例,可以在一次循环代码内设置四次vmax和vmin的交替指令,当然,可以针对不同平台的性能差异来调整一次循环代码内指令vmax和指令vmin交替执行的次数,以寻找最优速度。

需要说明的是,NEON指令集的指令周期包括指令执行周期和等待指令执行完成延迟的周期数。以指令vmax为例,指令vmax的执行需要1个指令周期,执行完成之后需要等待3个指令周期才能获取指令vmax的执行结果数据。同理,指令vmin的执行需要1个指令周期,执行完成之后需要等待3个指令周期才能获取指令vmin的执行结果数据。因此,为了提升数据处理速度,本申请实施例中可以在第二向量指令(vmax)执行完毕之后,且在获得第二向量指令的执行结果之前,利用第三向量指令(vmin)并行地对多组数据进行最小值运算。当然,也可以在第三向量指令(vmin)执行完毕之后,且在获得第三向量指令的执行结果之前,利用第二向量指令(vmax)并行地对多组数据进行最大值运算。这样一来,在一次交替执行指令vmax和指令vmin的循环周期内,可以节省3个指令周期。

在步骤S160,根据所述第一组中间结果,计算所述数据集的最值。

在得到第一组中间结果之后,可以采用基本逻辑实现的方式,将第一组中间结果中的多个数据元素逐个依次两两之间比较,从而可以得到数据集的最值。

在一些实施例中,若第二向量指令为vmax,则通过第一组中间结果可以计算出数据集的最大值Max。若第二向量指令为vmin,则通过第一组中间结果可以计算出数据集的最小值Min。

在一些实施例中,如果数据集中的数据不能被向量寄存器的位宽整除,即数据集的最后一组数据元素的数量小于其他组的数据元素的数量。在该情况下,可以先采用本申请实施例中的方法进行并行数据处理,得到前N-1组数据的最值,比如最大值Max和最小值Min。然后与最后一组数据元素进行比较。例如可以将最后一组数据元素中的每个数据元素逐个与前N-1组数据的最值进行比较,以得到数据集的全局最值。

需要说明的是,前文提及的向量指令可以为NEON指令集或SSE指令集中的指令。也就是说,该向量指令可以是单指令多数据(single instruction multiple data,SIMD)指令集中的指令。

根据上述内容可以看出,本申请实施例提供的处理数据的方法可以基于向量指令实现对数据集中多组数据的并行比较运算,以获取数据集的最值。相较于传统方案中数据元素进行两两比较的方式,本方案可以显著提高数据处理速度。另外,在并行计算中,本申请实施例可以采用条件选择指令进行比较,从而可以避免CPU分支预测失败的问题,有利于提高数据处理速度。

为了加深理解上文中提及的处理数据的方法100,下面以“处理器包括多个向量寄存器,该多个向量寄存器均为128位,向量指令为NEON指令集中的指令,数据集包括N组数据,数据集中的数据为图像的像素数据,且一个像素点的数据为16bit”为例,结合图2和图3进行举例说明。图2给出了“并行地对多组数据进行最值运算”的一种可能的实现方式。处理数据的方法200可以包括步骤:S210~240。

在步骤S210:通过NEON指令集的向量指令vld(vld可以是指读取指令)读取数据集的数据,比如可以一次读取图像数据的128位数据(即第一组数据),即实际读取了8个像素点的数据。然后通过临时变量nMax,nMin将该第一组数据加载至第一目标向量寄存器和第二目标向量寄存器。其中,第一目标向量寄存器可以用于进行最大值运算,第二目标向量寄存器可用于进行最小值运算。

应理解,在步骤S210之前,还包括:通过NEON指令集中的指令将处理器中的任三个向量寄存器分别设置为第一目标寄存器、第二目标寄存器和第一向量寄存器,同时设置两个128位的临时变量nMax,nMin。nMax可用于对第一目标向量寄存器赋值更新,nMin可用对第二目标向量寄存器赋值更新。

进一步地,沿着第一组数据的结尾,接着读取数据集中的第二组128位数据,并加载至第一向量寄存器。

在步骤S220:通过NEON指令集的指令vmax(vmax可以是指比较最大值指令)并行地计算第一向量寄存器和第一目标向量寄存器的对应通道中的数据元素的最大值,然后将比较计算的结果再通过变量nMax更新第一目标向量寄存器。也就是说,通过NEON指令集中的指令vmax可以并行同时比较8个像素点的数据,其中第一目标向量寄存器中的每一个数据都会更新为较大的那一个。

同理,可以通过NEON指令集的指令vmin并行地计算第一向量寄存器和第二目标向量寄存器的对应通道中的数据元素的最小值,然后根据比较计算的结果更新第二目标向量寄存器。

在步骤S230:依次循环步骤S202中的最大值和最小值的比较,每一次循环都会比较出一组8个最大值数据和一组8个最小值数据(即得到新的nMin和nMax数据),然后更新第一目标向量寄存器和第二目标向量寄存器。在循环结束后,可得到第一组中间结果(即第一目标向量寄存器中的多个通道的一组最大值数据)和第二组中间结果(即第二目标向量寄存器中的多个通道的一组最小值数据)。

为了避免过多的重复输入指令vmax和指令vmin,可以建立循环代码,例如可以是C语言中的for循环。也就是说,指令vmax和指令vmin均为循环代码中的指令,通过循环代码可以快速的遍历数据集中的多组数据。

需要说明的是,每一次代码循环需要一个判断过程,该判断过程会增加处理数据的时间,因此,本申请实施例可以将循环代码内的指令实现展开,比如可以在一次循环代码内多次交替执行指令vmax和指令vmin,以减少循环次数,提高处理数据的速度。当然,可以针对不同平台的性能差异来调整一次循环代码内指令vmax和指令vmin交替执行的次数,以寻找最优速度。

需要说明的是,NEON指令集的指令周期包括指令执行周期和等待指令执行完成延迟的周期数。以指令vmax为例,指令vmax的执行需要1个指令周期,执行完成之后需要等待3个指令周期才能获取指令vmax的执行结果数据。同理,指令vmin的执行需要1个指令周期,执行完成之后需要等待3个指令周期才能获取指令vmin的执行结果数据。因此,为了提升数据处理速度,本申请实施例中可以在第二向量指令(vmax)执行完毕之后,且在获得第二向量指令的执行结果之前,利用第三向量指令(vmin)并行地对多组数据进行最小值运算。当然,也可以在第三向量指令(vmin)执行完毕之后,且在获得第三向量指令的执行结果之前,利用第二向量指令(vmax)并行地对多组数据进行最大值运算。这样一来,在一次交替执行指令vmax和指令vmin的循环周期内,可以节省3个指令周期。

可以看出,与传统方案中两两数据元素比较这一基本逻辑实现方式相比,本申请实施例中并行计算的循环次数约等于基本逻辑实现的1/8。

在步骤S240:对第一目标向量寄存器中的多个通道的一组(8个数据)最大值数据可以采用基本逻辑实现的方式,逐个依次两两之间比较,循环7次后,得到一个最大值Max。同理,对第二目标向量寄存器中的多个通道的一组最小值数据逐个比较,得到一个最小值Min。

在一些实施例中,如果数据集中的数据可以被向量寄存器的位宽(即128bit)整除,则最大值Max即为数据集的最大值,最小值Min即为数据集的最小值。

在一些实施例中,如果数据集中的数据不能被向量寄存器的位宽(即128bit)整除,即数据集的最后一组数据元素的数量可能小于向量寄存器包括的通道数量,或者说,数据集的最后一组数据元素的数量小于其他组的数据元素的数量。在该情况下,可以先采用本申请实施例中的方法进行并行数据处理,得到前N-1组数据的最大值Max和最小值Min。为了降低计算复杂度,在对最后一组数据元素进行比较时,可以按照传统方式,将最后一组数据元素中的每个数据元素逐个与最大值Max和最小值Min进行比较,以更新最大值Max和最小值Min。由于最后一组数据元素的数量并不是很多,采用两两比较的方式也不会对处理速度产生很大影响。

针对数据集中的数据不能被向量寄存器的位宽整除的情况,以获取数据集的最大值为例,参见图3,可以第一组数据加载至第一目标向量寄存器,将第二组数据加载至第一向量寄存器,并行地计算第一目标向量寄存器和第一向量寄存器的对应通道中的数据元素的最大值。

然后根据比较计算的结果,更新第一目标向量寄存器。接着,将三组数据加载至第一向量寄存器,并行地计算第一目标向量寄存器和第一向量寄存器的对应通道中的数据元素的最大值。然后根据比较计算的结果,更新第一目标向量寄存器。以此类推,遍历N-1组数据,最后对第一目标向量寄存器中的8个数据可以采用基本逻辑实现的方式,逐个依次两两之间比较,得到一个最大值Max。为了降低计算复杂度,在对最后一组数据元素进行比较时,可以采用基本逻辑实现的方式,将最后一组数据元素中的每个数据元素逐个与最大值Max进行比较,以得出数据集的全局最大值。

下面结合表1实验数据对本申请实施例的效果做进一步说明。

实验条件:本申请实施例的硬件实验平台为高通骁龙665移动处理平台,CPU处理器高通Kryo260CPU(8核,最大主频到2GHz),ARM架构。软件实验平台可以是安卓的64位操作系统。

实验包括两项:

实验1:通过基本逻辑实现(即两两数据元素逐个比较)对图像数据的最值获取(包括数据集的最大值获取和最小值获取)。

实验2:通过本申请实施例中提出的并行计算处理数据的方法对图像数据的最值获取(包括数据集的最大值获取和最小值获取)。

在相同的硬件环境和软件环境下,使用相同的输入参数(图像大小为宽4000个像素点,高3000个像素点),对两种数据类型(8bit和16bit)像素点的图像进行测试。表1是实验1和实验2所对应的处理数据所用时间结果的对比情况。

表1

在保证程序功能正确的前提下,表1中的数据处理时间为计算10次程序运行的平均时间。从上表可见,相较于基本逻辑实现,本申请实施例的数据处理方法在ARM架构下,对图像像素的最大值和最小值统计的运行时间大幅降低,对于8bit和16bit数据类型图像,处理速度均提高9倍左右。

需要说明的是,针对8bit的数据循环次数理论上减少了16倍,但是实际上提升的速度只有9倍左右,并没有达到16倍。主要原因为:NEON指令集的指令vld在获取内存数据时存在一定的延迟(比如最长可能延迟有8指令周期),指令vld读取损失较大。另外,虽然本申请实施例中的方法降低了循环判断的过程(比如if语句判断),可以进一步提升处理数据的速度,但是针对8bit数据的指令vld读取损失更大,从而使得数据的处理速度没有达到理论的提速。

需要说明的是,针对16bit的数据循环次数理论上减少了8倍,但是实际上提升的速度却超过了8倍(见表1,为9倍左右)。主要原因为:针对16bit数据的降低循环判断过程的数据处理提升速度相较于vld读取损失速度更高,从而导致出现“针对16bit数据类型图像可以提高9倍左右”这一看似不合理的情况出现。

需要说明的是,表1中的数据均为在上述实验条件下的实测数据。

上文结合图1至图3,详细描述了本申请的方法实施例,下面结合图4和图5,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。

本申请实施例提供的一种处理数据的装置,该处理数据的装置400可用于执行前文任一方法实施例所描述的方法。具体地,如图4所示,处理数据的装置400可以包括读取模块410、第一运算模块420和第一计算模块430。

读取模块410可用于利用第一向量指令从数据集中读取多组数据,其中每组数据包含多个数据。

第一运算模块420可用于利用第二向量指令并行地对所述多组数据进行最值运算,得到第一组中间结果。

第一计算模块430可用于根据所述第一组中间结果,计算所述数据集的最值。

可选地,所述第二向量指令用于执行最大值运算,所述装置400还包括:第二运算模块440可用于利用第三向量指令并行地对所述多组数据进行最小值运算,得到第二组中间结果;第二计算模块450可用于根据所述第二组中间结果,计算所述数据集的最小值。

可选地,所述利用第三向量指令并行地对所述多组数据进行最小值运算,包括:在所述第二向量指令执行完毕之后,且在获得所述第二向量指令的执行结果之前,利用所述第三向量指令并行地对所述多组数据进行最小值运算。

可选地,所述第一向量指令和所述第二向量指令为第一循环代码中的指令,且所述第一循环代码内多次交替执行所述第一向量指令和所述第二向量指令。

可选地,用于处理所述数据集的向量指令为NEON指令集或SSE指令集中的指令。

可选地,所述数据集中的数据为图像的像素数据。

下面结合图5是对本申请实施例中的处理数据的装置500进行介绍。图5中的虚线表示该单元或模块为可选的。该装置500可用于实现上述方法实施例中描述的方法。装置500可以是计算机或任意类型的电子设备。

装置500可以包括一个或多个处理器510。该处理器510可支持装置500实现前文方法实施例所描述的方法。

装置500还可以包括一个或多个存储器520。存储器520上存储有程序,该程序可以被处理器510执行,使得处理器510执行前文方法实施例所描述的方法。存储器520可以独立于处理器510也可以集成在处理器510中。

装置500还可以包括收发器530。处理器510可以通过收发器530与其他设备进行通信。例如,处理器510可以通过收发器530与其他设备进行数据收发。

本申请实施例还提供一种机器可读存储介质,用于存储程序。并且该程序使得计算机执行本申请各个实施例中的方法。

本申请实施例还提供一种计算机程序产品。该计算机程序产品包括程序。该程序使得计算机执行本申请各个实施例中的方法。

本申请实施例还提供一种计算机程序。该计算机程序使得计算机执行本申请各个实施例中的方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在机器可读存储介质中,或者从一个机器可读存储介质向另一个机器可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述机器可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。

本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。

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

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

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

技术分类

06120115576583