一种定点累加运算的处理方法、装置和电子设备
技术领域
本说明书涉及计算机软件技术领域,尤其涉及一种定点累加运算的处理方法、装置和电子设备。
背景技术
目前,在执行定点累加运算过程中,可以采用数据寄存器来存放每次累加运算结果,直至定点累加运算全部完成。
在定点累加运算过程中,尤其是数据寄存器存放累加运算结果时,一方面,数据寄存器会由于位数过少而存在数据饱和溢出风险,另一方面,数据寄存器也会由于位数过多而增加运行指令计算量的问题,从而降低定点累加运算处理性能。
发明内容
本说明书实施例的目的是提供一种定点累加运算的处理方法、装置和电子设备,以有效提升定点累加运算处理性能。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出了一种定点累加运算的处理方法,包括:
将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出;
基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值;
读取所述指定标志位;
如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;
其中,所述第一比特位数少于所述第二比特位数。
第二方面,提出了一种定点累加运算的处理装置,包括:
重置模块,将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出;
第一处理模块,基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值;
读取模块,读取所述指定标志位;
第二处理模块,如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;
其中,所述第一比特位数少于所述第二比特位数。
第三方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出;
基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值;
读取所述指定标志位;
如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;
其中,所述第一比特位数少于所述第二比特位数。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出;
基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值;
读取所述指定标志位;
如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;
其中,所述第一比特位数少于所述第二比特位数。
由本说明书实施例提供的以上技术方案可见,在进行定点累加运算处理时,可以先将状态寄存器的指定标志位重置,然后,基于比特位数较少的第一比特位数执行定点累加运算处理,并将定点累加结果存放在第一比特位数对应的第一数据寄存器中,保证在处理相同数据时,相比于以第二比特位数执行定点累加运算而言,可减少计算量,提升处理性能。在定点累加运算处理过程中,如果状态寄存器的指定标志位被置为预设值,则可以基于比特位数较多的第二比特位数执行定点累加运算处理,并将定点累加结果存放在第二比特位数对应的第二数据寄存器中,避免定点累加运算过程中饱和溢出影响最终定点累加结果。进而,在计算性能和饱和溢出两方面至少可以兼顾一项,灵活性较高,从整体上提升定点累加运算处理性能。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书的一个实施例提供的定点累加运算的处理方法步骤示意图;
图2是本说明书的一个实施例提供的定点累加运算的处理流程示意图;
图3是本说明书的一个实施例提供的电子设备的结构示意图;
图4是本说明书的一个实施例提供的定点累加运算的处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
参照图1所示,为本说明书实施例提供的定点累加运算的处理方法步骤示意图,该处理方法的执行主体可以是定点累加运算处理装置,例如,可以是:手机、计算机、平板电脑等具备计算存储功能的电子设备。
该处理方法可以包括以下步骤:
步骤102:将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出。
具体地,将指定标志位重置可以为该指定标志位设置一取值,以表征第一数据寄存器中数据未发生饱和溢出,从而可以保证每次定点累加运算之前第一数据寄存器中没有饱和溢出,使得本次定点累加运算可以优先以比特位数较少的第一比特位数执行定点累加运算。
步骤104:基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值。
应理解,由于浮点类的运算并不涉及饱和溢出的问题,因此,本说明书实施例中的累加运算是定点累加运算。
本说明书实施例中,在执行定点累加运算时,输入数据的数据类型并不作限定,一般情况下,输入数据的比特位数不多于第一比特位数。输出数据,即定点累加结果。在执行定点累加运算时,可以将定点累加运算的每一次累加结果存放在第一数据寄存器中。
应理解,第一数据寄存器中存放的累加结果是每次累加更新后的累加结果。在累加运算过程中,所述第一数据寄存器中存放的数据,即定点累加结果可能会由于第一数据寄存器的位数限制而发生饱和溢出。而当第一数据寄存器中定点累加结果发生饱和溢出时,状态寄存器的指定标志位会被置为预设值。
其中,所述预设值可以是0或1。应理解,该预设值与状态寄存器重置后指定标志位的取值不同。
在本说明书实施例中,状态寄存器的指定标志位可以是饱和标志位,所述饱和标志位的具体位数位置可以根据系统设计进行定义。
例如,针对ARM处理器中CPU上的单指令多数据流(Single Instruction MultipleData,SIMD)的扩展结构NEON,可以定义状态寄存器的第27位作为饱和标志位。
步骤106:读取所述指定标志位。
在每次定点累加结果存放至第一数据寄存器后,都可以读取指定标志位的取值,以判断第一数据寄存器是否发生饱和溢出。具体读取操作可以按照现有的读取操作执行。
步骤108:如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;其中,所述第一比特位数少于所述第二比特位数。
如果读取到的指定标志位的取值为预设值,则确定第一数据寄存器发生饱和溢出,无论该饱和溢出是基于哪一次定点累加结果导致的,都可以基于第二比特位数重新执行本次的定点累加运算处理,并将定点累加结果存放至第二比特位数对应的第二数据寄存器中。
应理解,上述所涉及的第一比特位数少于所述第二比特位数。
通过上述技术方案,在进行定点累加运算处理时,可以先将状态寄存器的指定标志位重置,然后,基于比特位数较少的第一比特位数执行定点累加运算处理,并将定点累加结果存放在第一比特位数对应的第一数据寄存器中,保证在处理相同数据时,相比于以第二比特位数执行定点累加运算而言,可减少计算量,提升处理性能。在定点累加运算处理过程中,如果状态寄存器的指定标志位被置为预设值,则可以基于比特位数较多的第二比特位数执行定点累加运算处理,并将定点累加结果存放在第二比特位数对应的第二数据寄存器中,避免定点累加运算过程中饱和溢出影响最终定点累加结果。进而,在计算性能和饱和溢出两方面至少可以兼顾一项,灵活性较高,从整体上提升定点累加运算处理性能。
应理解,步骤102在每次定点累加运算的处理方案开始之前执行,可以保证每次定点累加运算之前数据寄存器中没有饱和溢出,避免上一次定点累加运算处理过程中由于饱和溢出而导致的指定标志位修改对本次定点累加运算造成影响,使得本次定点累加运算可以优先以比特位数较少的第一比特位数执行定点累加运算。
需要说明的是,在本说明书实施例中,一次定点累加运算处理可以理解为按照步骤102-步骤108执行完成的过程。而一次定点累加运算可以理解为步骤104中单次的定点累加过程,或是步骤108中单次的定点累加过程。
可选地,在本说明书实施例中,将所述状态寄存器的指定标志位重置,可具体包括以下两种方式:
1、将所述状态寄存器的指定标志位设置为0。
2、将所述状态寄存器的指定标志位设置为1。
在具体实现时,可以根据设置需求,将状态寄存器中表示饱和标志位的指定标志位设置为0或设置为1。如果重置时将状态寄存器的指定标志位设置为0,则表示第一数据寄存器中数据未发生饱和溢出,而当第一数据寄存器中数据发生饱和溢出时,状态寄存器的指定标志位发生变化,被设置为1。如果重置时将状态寄存器的指定标志位设置为1,则表示第一数据寄存器中数据未发生饱和溢出,而当第一数据寄存器中数据发生饱和溢出时,状态寄存器的指定标志位发生变化,被设置为0。
可选地,在本说明书实施例中,所述第二比特位数是所述第一比特位数的2倍。
进一步,所述第一比特位数的数据类型包括:16bit位数的short;所述第二比特位数的数据类型包括:32bit位数的int。
其实,也不排除:所述第一比特位数的数据类型包括:32bit位数的int;所述第二比特位数的数据类型包括:64bit位数的long。
可选地,在本说明书实施例中,所涉及的定点累加运算可以为定点卷积运算,换言之,可以是对定点卷积中相乘累加运算的处理。其实,也可以是其它形式的定点累加运算,例如,相减累加运算、相除累加运算等。
可选地,本说明书实施例所涉及的定点卷积运算处理方案可以应用于深度学习引擎中,例如,可基于深度学习进行图像识别、语音识别、文本识别等领域研究时所涉及的定点卷积运算。
下面以ARM处理器中NEON这一加速指令为例对本说明书上述定点累加运算的处理方案进行详述,其中,第一数据寄存器可以为16bit的short,第二数据寄存器可以为32bit的int。
应理解,本说明书实施例中,所涉及的数据(输入数据、输出数据)主要以向量指令形式为例进行说明,但是,也不排除对标量指令实施本说明书方案的情况。
参照图2所示,该定点累加运算的处理流程可以包括:
步骤202:将状态寄存器的饱和标志位重置。
具体实现时,可以将状态寄存器的饱和标志位重置为0,相应地,如果第一数据寄存器发生饱和溢出,则该状态寄存器的饱和标志位设置为1。
例如,可以通过将状态寄存器的饱和标志位[27]设置为0,以实现饱和标志位的重置。这样,使得每次进入定点累加运算的处理时,都可以保证当前第一数据寄存器是未发生饱和溢出的,避免由于前一次定点累加运算的处理使饱和标志位修改而对本次定点累加运算处理造成影响,使得本次定点累加运算处理可以优先以位数较低的16bit的short来执行,进而保证执行效率,减少运算量。
步骤204:基于16bit的short执行定点累加运算,并将定点累加结果存放至16bit的short对应的第一数据寄存器中。
在定点累加运算的循环中,可以使用NEON指令vqaddq_s16计算2个矢量寄存器(即输入数据)之和,如果在累加计算过程中第一数据寄存器有饱和溢出发生,则状态寄存器的饱和标志位[27]被修改为1。
步骤206:读取状态寄存器的饱和标志位。如果读取到饱和标志位为0,则跳转回步骤204,如果读取到饱和标志位为1,则执行步骤208。
步骤208:基于32bit的int重新执行所述定点累加运算,并将定点累加结果存放至32bit的int对应的第二数据寄存器中。
如果状态寄存器的饱和标志位[27]为1,则说明定点累加运算过程中第一数据寄存器存在饱和溢出,需要进行回弹操作,即可以用32bit的int重新执行定点累加运算。
由上述方案可知,在进行定点累加运算处理时,可先将状态寄存器的饱和标志位重置,进而可以优先基于16bit的short执行累加运算,并将累加结果存放在16bit对应的第一数据寄存器中,这样,16bit的比特位数相对较少,处理相同指令所耗费的计算量较小,可在一定程度上提升计算性能。在定点累加运算过程中,一旦第一数据寄存器发生饱和溢出,就可以基于比特位数较多的32bit的int来重新执行定点累加运算处理,并将累加结果存放在32bit对应的第二数据寄存器中。由于32bit对应的第二数据寄存器的位数相对较多,因此,在计算量并不是特别大,数据容量有限的情况下,可以减少甚至避免饱和溢出。从而,保证定点累加运算处理可以正常执行,提升处理性能。
图3是本说明书的一个实施例电子设备的结构示意图。请参考图3,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共享资源访问控制装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出;
基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值;
读取所述指定标志位;
如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;
其中,所述第一比特位数少于所述第二比特位数。
上述如本说明书图1-图2所示实施例揭示的定点累加运算处理装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1的方法,并实现定点累加运算处理装置在图1-图2所示实施例的功能,本说明书实施例在此不再赘述。
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
通过本说明书技术方案,在进行定点累加运算处理时,可以先将状态寄存器的指定标志位重置,然后,基于比特位数较少的第一比特位数执行定点累加运算处理,并将定点累加结果存放在第一比特位数对应的第一数据寄存器中,保证在处理相同数据时,相比于以第二比特位数执行定点累加运算而言,可减少计算量,提升处理性能。在定点累加运算处理过程中,如果状态寄存器的指定标志位被置为预设值,则可以基于比特位数较多的第二比特位数执行定点累加运算处理,并将定点累加结果存放在第二比特位数对应的第二数据寄存器中,避免定点累加运算过程中饱和溢出影响最终定点累加结果。进而,在计算性能和饱和溢出两方面至少可以兼顾一项,灵活性较高,从整体上提升定点累加运算处理性能。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下方法:
将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出;
基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值;
读取所述指定标志位;
如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;
其中,所述第一比特位数少于所述第二比特位数。
通过本说明书技术方案,在进行定点累加运算处理时,可以先将状态寄存器的指定标志位重置,然后,基于比特位数较少的第一比特位数执行定点累加运算处理,并将定点累加结果存放在第一比特位数对应的第一数据寄存器中,保证在处理相同数据时,相比于以第二比特位数执行定点累加运算而言,可减少计算量,提升处理性能。在定点累加运算处理过程中,如果状态寄存器的指定标志位被置为预设值,则可以基于比特位数较多的第二比特位数执行定点累加运算处理,并将定点累加结果存放在第二比特位数对应的第二数据寄存器中,避免定点累加运算过程中饱和溢出影响最终定点累加结果。进而,在计算性能和饱和溢出两方面至少可以兼顾一项,灵活性较高,从整体上提升定点累加运算处理性能。
图4为本说明书的一个实施例提供的定点累加运算的处理装置400的结构示意图。请参考图4,在一种软件实施方式中,定点累加运算的处理装置400可包括:
重置模块402,将状态寄存器的指定标志位重置,其中,重置后指定标志位的取值用于表征第一数据寄存器中数据未发生饱和溢出;
第一处理模块404,基于第一比特位数执行定点累加运算,并将定点累加结果存放至所述第一比特位数对应的第一数据寄存器中,其中,当所述第一数据寄存器中定点累加结果发生饱和溢出时所述状态寄存器的指定标志位被置为预设值;
读取模块406,读取所述指定标志位;
第二处理模块408,如果所述指定标志位为所述预设值,则基于第二比特位数重新执行所述定点累加运算,并将定点累加结果存放至所述第二比特位数对应的第二数据寄存器中;
其中,所述第一比特位数少于所述第二比特位数。
通过本说明书技术方案,在进行定点累加运算处理时,可以先将状态寄存器的指定标志位重置,然后,基于比特位数较少的第一比特位数执行定点累加运算处理,并将定点累加结果存放在第一比特位数对应的第一数据寄存器中,保证在处理相同数据时,相比于以第二比特位数执行定点累加运算而言,可减少计算量,提升处理性能。在定点累加运算处理过程中,如果状态寄存器的指定标志位被置为预设值,则可以基于比特位数较多的第二比特位数执行定点累加运算处理,并将定点累加结果存放在第二比特位数对应的第二数据寄存器中,避免定点累加运算过程中饱和溢出影响最终定点累加结果。进而,在计算性能和饱和溢出两方面至少可以兼顾一项,灵活性较高,从整体上提升定点累加运算处理性能。
在本说明书实施例的一种具体实现方式中,所述重置模块402在将所述状态寄存器的指定标志位重置时,可具体用于:
将所述状态寄存器的指定标志位设置为0;或者,
将所述状态寄存器的指定标志位设置为1。
在本说明书实施例的一种具体实现方式中,所述第二比特位数是所述第一比特位数的2倍。
在本说明书实施例的一种具体实现方式中,所述第一比特位数的数据类型包括:16bit位数的short;所述第二比特位数的数据类型包括:32bit位数的int。
在本说明书实施例的一种具体实现方式中,所述第一比特位数的数据类型包括:32bit位数的int;所述第二比特位数的数据类型包括:64bit位数的long。
在本说明书实施例的一种具体实现方式中,所述定点累加运算为定点卷积运算。
应理解,本说明书实施例的定点累加运算的处理装置还可执行图1-图2中定点累加运算的处理装置(或设备)执行的方法,并实现定点累加运算的处理装置(或设备)在图1-图2所示实施例的功能,在此不再赘述。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。