提升CPU并行性能的方法及装置和电子设备与流程

文档序号:18213268发布日期:2019-07-19 22:27阅读:717来源:国知局
提升CPU并行性能的方法及装置和电子设备与流程

本说明书实施例涉及互联网技术领域,尤其涉及一种提升cpu并行性能的方法及装置和电子设备。



背景技术:

在大数据处理场景下,数据呈现出越来越多的并行性,但是cpu(centralprocessingunit,中央处理器)的并行能力却是有限的。

在相关技术中,为了提升cpu的并行性能,只有增加cpu更多的超线程,但是超线程会占用更多cpu硬件开销。因此,需要不断增加cpu硬件上的性能,以满足越来越高的并行要求。

然而,cpu硬件的开发周期较长并且硬件成本也高。

因此,如何在不增加cpu硬件的情况下,如何从软件方面挖掘cpu更多的并行性能已经成为业内亟待解决的问题。



技术实现要素:

本说明书实施例提供的一种提升cpu并行性能的方法及装置和电子设备:

根据本说明书实施例的第一方面,提供一种提升cpu并行性能的方法,所述方法包括:

获取分配到同一cpu核心的相同类型的数据请求;

确定获取到的数据请求的请求个数;

如果所述请求个数大于或者等于并行数,所述cpu核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述cpu提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。

可选的,所述方法还包括:

如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。

可选的,所述方法还包括:

如果所述请求个数小于并行数但大于0,并且获取次数不小于并行数,所述cpu核心获取对应所述请求个数的可执行代码并执行;其中,所述获取次数为获取数据请求的次数。

可选的,所述方法还包括:

如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求。

可选的,在所述预先根据并行数编译过程中:

如果并行数为2,代码00和代码10的跳转指令都是向上跳转,执行如下步骤:

步骤31:执行代码00;

步骤32:执行代码10;

步骤33:设置标识位设为第一标识;

步骤34:根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行步骤35,如果不需要执行步骤36;

步骤35:再次执行代码00,并将标识位设为第二标识,执行步骤36;

步骤36:根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行步骤37,如果不需要执行步骤38;

步骤37:再次执行代码10,并将标识位设为第二标识,执行步骤38;

步骤38:判断标识位是否第一标识,如果不是,重复执行步骤33;直到标识位为第一标识时,循环结束。

可选的,所述根据代码的执行结果判断是否需要再次执行代码,具体包括:

如果代码的执行结果符合阈值,确定需要再次执行代码;

如果代码的执行结果不符合阈值,确定不需要再次执行代码。

可选的,在所述预先根据并行数编译过程中:

如果并行数为2,代码00和代码10的跳转指令都是向下跳转,执行如下步骤:

步骤41:执行代码00;

步骤42:执行代码00的跳转指令00,如果不跳转执行步骤43;如果跳转执行步骤44;

步骤43:顺序执行指令,即执行步骤44;

步骤44:执行代码10;

步骤45:执行代码10的跳转指令10,如果不跳转执行步骤46;如果跳转执行步骤47;

步骤46:顺序执行指令,即执行步骤47;

步骤47:执行下一代码01。

根据本说明书实施例的第二方面,提供一种提升cpu并行性能的装置,所述装置包括:

获取单元,获取分配到同一cpu核心的相同类型的数据请求;

确定单元,确定获取到的数据请求的请求个数;

执行单元,如果所述请求个数大于或者等于并行数,所述cpu核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述cpu提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。

根据本说明书实施例的第三方面,提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为上述任一项提升cpu并行性能的方法。

本说明书实施例,提供了一种提升cpu并行性能的方案,充分利用大数据处理的特征(执行数据请求的代码几乎相同,数据请求不具有数据相关性),通过预先根据并行数对相同代码进行混合链接从而得到并行数对应的可执行代码;在数据请求的请求个数大于或等于并行数时,直接获取并行数对应的可执行代码并执行。如此,在一个cpu核心运行中也可以产生并行执行数据请求的结果。实现了在不增加cpu硬件的情况下,提升了cpu并行处理性能。

附图说明

图1是本说明书一实施例提供的提升cpu并行性能的方法的流程图;

图2是本说明书一实施例提供的以并行数为3的并行处理过程的示意图;

图3是本说明书一实施例提供的两个代码跳转指令都是向上跳转的编译示意图;

图4是本说明书一实施例提供的两个代码跳转指令都是向下跳转的编译示意图;

图5是本说明书一实施例提供的提升cpu并行性能的装置的模块示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。

在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在大数据处理场景下,数据呈现出越来越多的并行性,但是cpu的并行能力却是有限的。

在相关技术中,为了提升cpu的并行性能,只有增加cpu更多的超线程,但是超线程会占用更多cpu硬件开销。因此,需要不断增加cpu硬件上的性能,通常就是增加cpu核心数量,例如从32核cpu增加到64核cpu以满足越来越高的并行要求。然而,cpu硬件的开发周期较长并且增加硬件的成本也高。在实际应用中,无法无限制地增加硬件,并且随着增加的硬件越多,能提升的并行性能却越小。

本说明书通过分析大数据处理的特征发现,大数据场景中的数据请求通常具有同质化现象,即批量的数据请求基本相同,仅是携带的参数不同,因此,执行这些数据请求的代码也几乎相同;并且,大数据场景中的数据请求之间不存在数据相关性,所述数据相性可以是指执行某个数据请求之前,必须等待其它数据请求执行完成,以获取其它数据请求执行结果,再带入本数据请求中;也就是说具有数据相关性的数据请求的输入数据是其它数据请求的输出数据,例如某个数据请求是将用户a的余额减100;如果要执行该请求,那么首先需要执行获取用户a的余额;只有在获取到用户a的余额后,才可以减100。

本说明书提供了一种提升cpu并行性能的方案,就是充分利用大数据处理的特征(执行数据请求的代码几乎相同,数据请求不具有数据相关性),通过预先根据并行数对相同代码进行混合链接从而得到并行数对应的可执行代码;在数据请求的请求个数大于或等于并行数时,直接获取并行数对应的可执行代码并执行。由于代码之间彼此不存在数据相关性,因此在一个cpu核心运行中也可以产生并行执行数据请求的结果。实现了在不增加cpu硬件的情况下,提升了cpu并行处理性能。

以下请参考图1所示的本说明书提供了一种提升cpu并行性能的方法,该方法可以应用于cpu,所述方法包括:

步骤110:获取分配到同一cpu核心的相同类型的数据请求;

步骤120:确定获取到的数据请求的请求个数;

步骤130:如果所述请求个数大于或者等于并行数,所述cpu核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述cpu提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。

本说明书实施例中,所述并行数为所述cpu提供的最大并行线程的数量。通常,cpu可以根据实际硬件资源确定最大并行线程的数量。

预先根据并行数将寄存器进行分组。当并行数为3个,寄存器为n个时,可以分为3份:当请求个数为1个时,将n个寄存器分为1份并编译1个请求数对应的可执行代码;

当请求个数为2个时,将n个寄存器分为2份(每份n/2)并编译2个请求数对应的可执行代码;

当请求个数大于或等于3个时,将n个寄存器分为3份(每份n/3)并编译3个请求数对应的可执行代码。

当分配到同一cpu核心的相同类型的数据请求的请求个数大于或等于并行数时,cpu核心可以获取对应所述并行数的可执行代码并执行。由于可执行代码是根据并行数编译后链接而成的代码程序,执行该可执行代码就可以处理所有数据请求。如此在单核cpu运行中也可以产生并行执行数据请求的结果。

在一实施例中,所述方法还包括:

如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。

当分配到同一cpu核心的相同类型的数据请求的请求个数小于并行数,并且获取次数也小于并行数时,说明当前获取到的数据请求的数量还没有达到最大并行数量,因此可以再次执行步骤110以获取更多的数据请求。

在一实施例中,所述方法还包括:

如果所述请求个数小于并行数但大于0,并且所述获取次数不小于并行数,所述cpu核心获取对应所述请求个数的可执行代码并执行。

如果请求个数小于并行数,但大于0;并且获取次数不小于并行数,说明已经多次获取过数据请求,还是没有达到最大并行数量,反映了当前待处理的数据请求并不多,可以直接处理这些已经获取到的数据请求。具体地,可以根据请求个数获取预先编译好的可执行代码。

在一实施例中,所述方法还包括:

如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求。

如果请求个数等于0,说明当前没有待处理的数据请求,可以继续执行步骤110以获取待处理的数据请求。

以下如图2所示以并行数为3的示例加以说明。假设使用分别将寄存器分为3组(请求数大于等于3时使用),2组(请求数为2时使用),1组(请求数为1时使用)。

步骤21:获取请求,执行步骤22。

获取分配到同一cpu核心的相同类型的数据请求。

步骤22:如果请求个数(即获取到的数据请求的数量)大于或者等于并行数即3,执行步骤28;如果请求数小于3,则执行步骤23。

如果请求个数大于或者等于并行数,说明当前待执行的数据请求已经达到最大并行数量,需要并行处理这些数据请求。

步骤23:如果获取次数(即获取请求的次数)小于3次,执行步骤21;如果获取次数不小于(大于或者等于)3次,则执行步骤24。

如果请求个数和获取次数均小于3,说明还没有达到最大并行数量,因此可以再次执行步骤21以获取更多的数据请求;如果请求个数小于3,但获取次数不小于(大于或者等于)3次,说明已经多次获取过数据请求,还是没有达到最大并行数量,反映了当前待处理的数据请求不多,直接处理这些已经获取到的数据请求。

步骤24:如果请求个数等于2,执行步骤27;如果请求个数小于2,执行步骤25。

如果请求个数小于3但等于2,说明有2个数据请求,那么可以针对这2个数据请求做并行处理。

步骤25:如果请求个数等于1,执行步骤26;如果请求个数小于1,执行步骤21。

如果请求个数小于3但等于1,说明仅有1个数据请求,那么可以单独进行处理,无需并行处理;如果请求个数小于1,说明没有获取到数据请求,对此重复执行步骤21以获取待处理的数据请求。

步骤26:获取请求数为1的可执行代码。

如果所述请求个数等于1,所述cpu核心获取预先编译好的请求数为1的可执行代码。

步骤27:获取请求数为2的可执行代码。

如果所述请求个数等于2,所述cpu核心获取预先编译好的请求数为2的可执行代码。

步骤28:获取请求数为3的可执行代码。

如果所述请求个数大于或者等于3,所述cpu核心获取预先编译好的请求数为3的可执行代码。

步骤29:完成。

整个cpu并行处理过程如上图2所示。

其中,在实际应用中,由于所有数据请求的代码相同,因此执行代码过程中涉及的跳转指令通常是一致的,例如跳转指令都是向上跳转,或者都是向下跳转。此时,在简单混编(混合编译)时会出现得不到正确编译结果的问题。

举例说明,假设并行数为2时,有如下代码:

假设都是向下跳转,则简单混编后执行过程为:

执行代码00,执行跳转指令00;

由于跳转指令00为向下跳转,因此,有可能会跳过代码10而执行代码01;类似的,由于跳转指令01也是向下跳转,同样可能会跳过代码11而执行代码02;这样有关代码10和代码11都无法执行。

综上,正常情况下cpu有n个寄存器,然后编译器可以将高级程序语言用这n个寄存器进行编译成cpu可执行的指令任务代码。如果希望在一个cpu核心中并行运行3个任务,那么先将相同的任务分别用n/3组寄存器,分别生成3份cpu可执行的指令任务代码。为了能使这3份cpu可执行的指令任务代码可以在一个cpu核心中运行,需要再次优化编译器,使编译器能够在上面三份代码的基础上再次进行链接优化。

具体地,虽然需要以每个代码为单位代码进行混编,但对于同一任务所有编译后的编译结果,其跳转指令方向都是一致的;因此只需要解决同时向上跳转以及同时向下跳转两种情况的混编链接结果。

请参考图3所示的两个跳转指令都为向上跳转的代码的编译示意图。假设并行数为2,代码包括代码00和代码10。步骤如下:

步骤31:执行代码00;

步骤32:执行代码10;

步骤33:标识位设为0(第一标识);

步骤34:根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行步骤35,如果不需要执行步骤36;

步骤35:再次执行代码00,并将标识位设为1(第二标识),执行步骤36;

步骤36:根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行步骤37,如果不需要执行步骤38;

步骤37:再次执行代码10,并将标识位设为1,执行步骤38;

步骤38:判断标识位是否0,如果不是,重复执行步骤33(进行循环);直到标识位为0时,结束循环。

其中,根据代码的执行结果判断是否需要再次执行代码,具体包括:

如果代码的执行结果符合阈值,确定需要再次执行代码;

如果代码的执行结果不符合阈值,确定不需要再次执行代码。

其中,00,01,02,…,0n代表将寄存器分组后,使用其中一组对任务进行编译的结果。

该实施例,每当有代码需要再次执行时,都可以保证标识位不为0,因此,每当有代码需要再次执行时,都可以再次进行循环,判断有没有代码需要再次执行,避免当有代码可以跳转而有的代码不能跳转时,就结束整体并行执行的情况。

值得一提的是,当前方向为向下,与原始方向相反,例如原有向上跳转的指令为ja,因此向下跳转指令只要变为jbe即可。这种跳转指令的修改非常简单方便,通过cpu中的编译器就可以实现;不需要借助额外其他工具。

请参考图4所示的两个跳转指令都为向下跳转的代码的编译示意图。假设并行数为2,代码包括代码00和代码10。步骤如下:

步骤41:执行代码00;

步骤42:执行跳转指令00,如果不跳转执行步骤43;如果跳转执行步骤44;

步骤43:顺序执行指令;即执行步骤44;

步骤44:执行代码10;

步骤45:执行跳转指令10,如果不跳转执行步骤46;如果跳转执行步骤47;

步骤46:顺序执行指令;即执行步骤47;

步骤47:执行下一代码01。

其中,00,01,02,…,0n代表将寄存器分组后,使用其中一组对任务进行编译的结果。

通过上述向上或向下跳转的实施例,在混编链接的时候,把每一个跳转模块作为混编的单位,处理了同时向上跳转和同时向下跳转两种混合链接方式。

综上,cpu在运行上面混编的结果的时候,由于是不同的寄存器,彼此不存在数据相关性,因此在一个cpu核心内部可以并行处理,最终提升任务处理的并行性。值得一提的是,本说明书提供的方案,可以增加的并行数量取决于当前cpu寄存器的数量,因此在不增加硬件开销的情况下,也可以提高cpu并行处理能力。

与前述提升cpu并行性能的方法实施例相对应,本说明书还提供了提升cpu并行性能的装置的实施例。

请参见图5,为本说明书一实施例提供的提升cpu并行性能的装置的模块图,所述装置对应了图1所示实施例,所述cpu中包含有寄存器,所述装置包括:

获取单元510,获取分配到同一cpu核心的相同类型的数据请求;

确定单元520,确定获取到的数据请求的请求个数;

执行单元530,如果所述请求个数大于或者等于并行数,所述cpu核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述cpu提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。

可选的,所述装置还包括:

第一获取子单元,如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。

可选的,所述装置还包括:

第一执行子单元,如果所述请求个数小于并行数但大于0,并且获取次数不小于并行数,所述cpu核心获取对应所述请求个数的可执行代码并执行;其中,所述获取次数为获取数据请求的次数。

可选的,所述装置还包括:

第二获取子单元,如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求。

可选的,在所述预先根据并行数编译过程中:

如果并行数为2,代码00和代码10的跳转指令都是向上跳转,执行如下子单元:

第一执行子单元,执行代码00;

第二执行子单元,执行代码10;

第一设置子单元,设置标识位设为第一标识;

第一判断子单元,根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行第三执行子单元,如果不需要执行第二判断子单元;

第三执行子单元,再次执行代码00,并将标识位设为第二标识,执行第二判断子单元;

第二判断子单元,根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行第四执行子单元,如果不需要执行标识判断子单元;

第四执行子单元,再次执行代码10,并将标识位设为第二标识,执行标识判断子单元;

标识判断子单元,判断标识位是否第一标识,如果不是,重复执行第一设置子单元;直到标识位为第一标识时,循环结束。

可选的,所述根据代码的执行结果判断是否需要再次执行代码,具体包括:

如果代码的执行结果符合阈值,确定需要再次执行代码;

如果代码的执行结果不符合阈值,确定不需要再次执行代码。

可选的,在所述预先根据并行数编译过程中:

如果并行数为2,代码00和代码10的跳转指令都是向下跳转,执行如下子单元:

第一执行子单元,执行代码00;

第一跳转子单元,执行代码00的跳转指令00,如果不跳转执行第一顺序子单元;如果跳转执行第二执行子单元;

第一顺序子单元,顺序执行指令,即执行第二执行子单元;

第二执行子单元,执行代码10;

第二跳转子单元,执行代码10的跳转指令10,如果不跳转执行第二顺序子单元;如果跳转执行第三执行子单元;

第二顺序子单元,顺序执行指令,即执行第三执行子单元;

第三执行子单元,执行下一代码01。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上图5描述了提升cpu并行性能的装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

获取分配到同一cpu核心的相同类型的数据请求;

确定获取到的数据请求的请求个数;

如果所述请求个数大于或者等于并行数,所述cpu核心获取对应所述并行数的可执行代码并执行;其中,所述并行数为所述cpu提供的最大并行线程的数量;所述可执行代码为预先根据并行数编译后链接而成的代码程序。

可选的,还包括:

如果所述请求个数小于并行数,并且获取次数小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求;其中,所述获取次数为获取数据请求的次数。

可选的,还包括:

如果所述请求个数小于并行数但大于0,并且获取次数不小于并行数,所述cpu核心获取对应所述请求个数的可执行代码并执行;其中,所述获取次数为获取数据请求的次数。

可选的,还包括:

如果所述请求个数等于0,并且所述获取次数不小于并行数,执行所述获取分配到同一cpu核心的相同类型的数据请求。

可选的,在所述预先根据并行数编译过程中:

如果并行数为2,代码00和代码10的跳转指令都是向上跳转,执行如下步骤:

步骤31:执行代码00;

步骤32:执行代码10;

步骤33:设置标识位设为第一标识;

步骤34:根据代码00的执行结果判断是否需要继续执行代码00;如果需要执行步骤35,如果不需要执行步骤36;

步骤35:再次执行代码00,并将标识位设为第二标识,执行步骤36;

步骤36:根据代码10的执行结果判断是否需要继续执行代码10;如果需要执行步骤37,如果不需要执行步骤38;

步骤37:再次执行代码10,并将标识位设为第二标识,执行步骤38;

步骤38:判断标识位是否第一标识,如果不是,重复执行步骤33;直到标识位为第一标识时,循环结束。

可选的,所述根据代码的执行结果判断是否需要再次执行代码,具体包括:

如果代码的执行结果符合阈值,确定需要再次执行代码;

如果代码的执行结果不符合阈值,确定不需要再次执行代码。

可选的,在所述预先根据并行数编译过程中:

如果并行数为2,代码00和代码10的跳转指令都是向下跳转,执行如下步骤:

步骤41:执行代码00;

步骤42:执行代码00的跳转指令00,如果不跳转执行步骤43;如果跳转执行步骤44;

步骤43:顺序执行指令,即执行步骤44;

步骤44:执行代码10;

步骤45:执行代码10的跳转指令10,如果不跳转执行步骤46;如果跳转执行步骤47;

步骤46:顺序执行指令,即执行步骤47;

步骤47:执行下一代码01。

在上述电子设备的实施例中,应理解,该处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-onlymemory,缩写:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。

应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

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