内存分配加速器的制作方法

文档序号:14266213阅读:150来源:国知局
内存分配加速器的制作方法

本申请是国际申请号为pct/us2013/030876、国际申请日为2013年3月13日、发明名称为“内存分配加速器”的pct国际申请于2015年9月10日进入中国国家阶段后申请号为“cn201380074458.5”的中国国家阶段专利申请的分案申请。

本发明的实施方式总体上涉及内存分配,具体而言,涉及内存分配加速器。



背景技术:

除非本文中另有指示,本部分中描述的材料和术语并不是针对本申请中权利要求的现有技术,并且不因包括在本部分中而被承认是现有技术。

在多核架构中,多个处理器内核可被包括在单个集成电路晶粒中或包括在设置在单个芯片封装件中的多个集成电路晶粒上。高速缓存可以被用于存储供处理器内核中的一个或多个访问的数据。数据能够是存储在通常定位在晶粒外部的较大内存中的数据子集。每个内核可以被提供有为内核存储数据的高速缓存。



技术实现要素:

在一些示例中,大致描述了用于为处理器分配内存的方法。该方法可以包括由处理器生成分配所请求内存块的请求。该方法还可以包括由内存分配加速器接收请求,该内存分配加速器被配置为与处理器通信。该方法可以包括由内存分配加速器处理该请求,以识别与该请求相对应的特定内存块的地址。该方法还可以包括由内存分配加速器将该地址返回至处理器。

在一些示例中,片(tiles)可以包括处理器内核、高速缓存以及内存分配加速器,该内存分配加速器被配置为与内核以及高速缓存通信。处理器可以被配置为由处理器生成分配所请求内存块的请求。该内存分配加速器可以被配置为接收该请求。该内存分配加速器可以被配置为处理该请求,以识别与该请求相对应的特定内存块的地址。该内存分配加速器可以被配置为将该地址返回至处理器。

在一些示例中,内存分配加速器可以包括存储器和控制器,该控制器与该存储器通信。该控制器可以被配置为接收分配所请求内存块的请求。该控制器可以被配置为处理该请求,以识别与该请求相对应的特定内存块的地址。该控制器可以被配置为将地址返回。

前面的概述仅仅是示例性的,而不意在以任何方式进行限制。通过参考附图以及下面的详细说明,除了上文所描述的示例性的方面、实施例、术语和特征之外,另外的方面、实施例、术语和特征将变得清晰可见。

附图说明

通过下面结合附图给出的详细说明和随附的权利要求,本公开的前述特征以及其它特征将变得更加清晰。应理解的是,这些附图仅描绘了依照本公开的多个实施例,因此,不应视为对本公开范围的限制,将通过利用附图结合附加的具体描述和细节对本公开进行说明,在附图中:

图1示出了能够用于实施内存分配加速器的示例系统;

图2示出了能够用于实施图1的内存分配加速器的示例系统,其显示与可以使用的元数据相关的额外细节;

图3示出了能够用于实施图2的内存分配加速器的示例系统,其显示包括预分配表的额外细节;

图4描述了用于实施内存分配加速器的示例处理的流程图;

图5示出了能够用于实施内存分配加速器的计算机程序产品;以及

图6是示出了被设置为实施内存分配加速器的示例计算设备的框图;

所有附图都根据本文中所描述的至少一些实施例设置。

具体实施方式

在下面的详细说明中,将参考附图,附图构成了详细说明的一部分。在附图中,除非上下文指出,否则相似的符号通常表示相似的组件。在详细说明、附图和权利要求中所描述的示例性实施例不意在限制。可以使用其它实施例,并且可以做出其它改变,而不偏离本文呈现的主题的精神或范围。将易于理解的是,如本文大致描述且如图中所图示的,本公开的方面能够以各种不同配置来布置、替代、组合、分离和设计,所有这些都在本文中明确地构思出。

本公开一般尤其涉及与内存分配加速器有关的方法、装置、系统、设备和计算机程序产品。

简而言之,大致描述了用于实施内存分配加速器的方法和系统的技术。处理器可以生成分配所请求内存块的请求。该请求可以由内存分配加速器接收,该内存分配加速器被配置为与处理器通信。内存分配加速器可以处理该请求,以识别与该请求相对应的特定内存块的地址并可将该地址返回至处理器。

图1示出了根据本文描述的至少一些实施例设置的用于实施内存分配加速器的示例系统。示例系统100可以包括晶粒102、硬件控制器106和/或内存108,其都被配置为与彼此通信。硬件控制器106和/或内存108可以被物理地定位在晶粒102外部。晶粒102可以包括片200,片200包括片200a、200b、200c和/或200d。片200可以包括处理器内核(本文中为“内核”或“处理器”或“处理器内核”)110(包括内核110a、110b、110c、110d)、高速缓存114(包括高速缓存114a、114b、114c和/或114d)和/或路由器300(包括路由器300a、300b、300c和/或300d)。路由器300可以被配置为通过网络150通信。高速缓存114可以是例如l2或l3高速缓存。

片200a可以包括内核110a、高速缓存114a和/或路由器300a。片200b可以包括内核110b、高速缓存114b和/或路由器300b。片200c可以包括内核110c、高速缓存114c和/或路由器300c。片200d可以包括内核110d、高速缓存114d和/或路由器300d。

硬件控制器106可以被配置为从程序80或操作系统104接收指令90。指令90可以与程序80的运行相关。响应于指令90,硬件控制器106可以在晶粒102中选择一个或多个片200,以运行程序80。

一个或多个内核110可以包括内存分配加速器。针对如所示出的内核110a,内核110a可以包括内存分配加速器116。内存分配加速器116可以被配置为与内核110a通信并且可以是内核110a的功能单元。

如以下将更具体描述的,内存分配加速器116可以是针对特定功能性能的硬件实施功能单元。内存分配加速器116可以针对分配由内核110a使用的内存的功能。内核110a可以例如向内存108请求分配内存块。分配内存的请求可以由内存分配加速器116接收和处理。内存分配加速器116可以识别与该请求相对应的内存块的起始地址。响应于该请求,内存分配加速器116可以向内核110a分配内存块。内存分配加速器116可以向内核110a提供分配至内核110a的内存块的起始位置的地址。在分配内存块并提供地址之后,内核110a可以使用内存块来继续处理程序80。

图2示出了根据本文描述的至少一些实施例设置的能够用于实施图1的内存分配加速器的示例系统,其显示与可以使用的元数据相关的额外细节。图2大致与图1的系统100类似,其具有额外的细节。为清楚描述的目的,图2中与图1中的组件标记相同的那些组件将不再次描述。

内存分配加速器116可以存储并保持元数据表122。元数据表122可以被用于跟踪待分配至处理器110a的地址。元数据表122可以被存储在例如高速缓存114中,其在所分配的地址处开始(以下描述)。可与由处理器110a执行的处理的固定地址区域相关地存储元数据122的地址。例如,由程序80使用的堆(heap)的第一页可以被保留为元数据122可以被存储的地址。在另一示例中,处理器110a可以包括寄存器132,其被用于存储元数据122的起始地址或地址。由于环境或程序在处理器110a中转换,内核110a的处理器状态(包括元数据表122的地址)可以被保持在内核110a中的寄存器132中。

元数据表122可以包括空闲列表124和/或池列表(poollist)126。空闲列表124可以包括最近可用的内存块的标识。例如,在空闲列表124中标识的内存块可以在当前被存储在高速缓存114a中但已经被解除分配。这些内存块能够被迅速重新使用,并且这种重新使用可以避免高速缓存缺失的发生。循环解除分配的块可以利用时间局部性(temporallocality),因为所循环的块能够被快速循环。池列表126可以包括内存108中地址的标识,其中新的内存块可用于被分配。池列表126可以包括储存器(bins),其包括各种尺寸的内存块。例如,储存器可以包括具有8或16字节的倍数(如图2中所示为16字节的倍数)的尺寸的块。池列表126可以帮助利用类似尺寸的块的空间格局(spatialpattern)的分配。池列表126还可以包括剩余块数量字段“nleft”。剩余块数量字段nleft可以指示所指示块尺寸的池中的可用块的数量。

空闲列表124可以被配置为存储指向所指示尺寸的内存块的起始地址的指针(“headptr”)。例如,空闲列表124可以包括指向尺寸为16字节(“sz16”)的内存块的起始地址的指针。类似地,空闲列表124可以包括指向尺寸为32字节(“sz32”)、48字节(“sz48”)或512字节(“sz512”)的内存块的起始地址的指针。

池列表126可以存储适于指向具有所指示尺寸的内存块的当前起始地址的当前指针(“curptr”)。池列表126可以包括指向池的预先分配的块的指针。池可以是内存108中具有统一尺寸的块的连续内存地址范围。来自池的块可以通过识别指向块的开始的当前指针的值而被分配。内存分配加速器116可以将在块的开始处地址的值返回至内核110a。内存分配加速器116之后可以按照块的尺寸增加指针的地址,从而指向内存108中的新地址。例如,池列表126可以包括适于指向尺寸为16字节的内存块的起始地址的指针。类似地,池列表126可以包括适于指向尺寸为32、48或512字节的内存块的起始地址的指针。

在一个示例中,内存分配加速器116可以被指派或可以请求内存108中的页。内存分配加速器116可以之后分配在该页中具有8字节的倍数的各种尺寸的内存块空间。在池列表126中,当前指针curptr可以指向内存108中可用的内存块中的一个的起始地址。在内核110请求内存块的分配时的示例中,作为响应内存分配加速器116可以将指针curptr中识别的地址返回。随着内存块被分配至内核110,当前指针curptr可以被更新,以反映内存块可用的下一个地址。

剩余块数量“nleft”字段可以将池中仍然可用的特定尺寸的块的数量的指示存储在池列表126中。例如,如果5个16字节块的大块(block)可用,则“nleft(sz16)”字段可以指示数字5。随着内存块被分配,剩余块数量“nleft”字段的值可以由内存分配加速器110减小。

在一个示例中,程序80可以由内核110运行。程序80可以请求16字节的内存的分配。该请求可以被发送至作为内核110的功能单元的内存分配加速器116。内存分配加速器116可以首先分析空闲列表124,以确定在内存108中16字节的块是否可用。如果在空闲列表124中16字节的块被指示为可用,则内存分配加速器116可以将headptr字段中识别的块的相应起始地址返回。如果在空闲列表124中16字节的块未被指示为可用,则内存分配加速器116可以分析池列表126。如果在池列表126中16字节的块被指示为可用,则内存分配加速器116可以将当前指针curptr字段中识别的相应地址返回。内存分配加速器116可以进一步减小剩余块数量字段nleft,以指示少了一个可用的16字节的块。内存分配加速器116可以进一步按照内存块的尺寸增加当前指针字段curptr(在按照16字节的示例中)。如果池列表不包括16字节的块的指示,则内存分配加速器116可以生成异常处理程序,并且可以在异常处理完成之后重新尝试请求。

在一个示例中,程序80可以由内核110运行。程序80可以生成请求16字节或其他数量字节的内存块的解除分配的解除分配请求。该解除分配请求可以被发送至作为内核110的功能单元的内存分配加速器116。内存分配加速器116可以通过更新headptr字段以指向新解除分配的块,来更新空闲列表124。新解除分配的块可以被更新为包括在headptr字段被更新之前指向在headptr字段中引用的块的指针。

以下是如上具体描述可以用于由内存分配加速器116实施内存分配的伪代码的示例。

如图2中所示,元数据122可以被存储为tag-less格式。在tag-less格式中,位操作可以用于索引数据。位操作可以包括通过使用比特方式and/or运算转换一些数量的比特位置以及屏蔽感兴趣的比特。在tag-less格式中,不需要执行比较,并且元数据122的分析与使用tag-ed格式的情况相比可以相对更加简单且迅速。在其他示例中,元数据122可以以如所期望的其他格式被索引。

图3示出了根据本文描述的至少一些实施例设置的能够用于实施图2的内存分配加速器的示例系统,其显示了包括预先分配表的额外细节。图3与图1和2的系统100大致类似,其具有额外的细节。为清楚描述的目的,图3中与图1和2中的组件标记相同的那些组件将不再次描述。

内存分配加速器可以包括控制器128和/或预先分配表130。预先分配表130可以是与内存108相比较而言相对小的硬件结构,并且可以被布置,从而使得预先分配表130可以由内存加速器116以低延时访问。预先分配表130可以包括块尺寸字段132和/或指针字段134。为了进一步加速内存分配,内存分配加速器116可以位于预先分配表130。预先分配表130可以是内存分配加速器116内的硬件结构。内存分配加速器116可以预先分配内存块,甚至在处理器110a发出针对块的请求之前。例如,内存分配加速器116可以识别历史上已经由处理器110a请求的某些块尺寸。内存加速器116可以之后预先分配具有那些尺寸的内存块,并且存储预先分配表130中的预先分配的块的指针。在另一示例中,内存分配加速器可以预先分配预先分配表130中具有一些或所有可用尺寸的内存块。控制器128可以针对某些尺寸块分配超过一个条目。控制器128可以识别频繁请求的块尺寸并将那些频繁请求的块尺寸在预先分配表130中保持优先级。

在一个示例中,内核110可以请求32字节内存块的分配。内存分配加速器116的控制器128可以分析预先分配表130中的数据,以确定与32字节块对应的指针是否已经被存储。如果块已经被预先分配,则控制器128可以识别相应的指针并将相应的地址返回给处理器110。相应的指针现已经被消耗,并且控制器128可以识别元数据122中的新指针。新指针可以在元数据122中被识别并存储在预先分配表130的指针字段134中。元数据122中相应的当前指针值headptr或curptr可以被更新,并且剩余块数量值nleft可以被减小。

在一个示例中,内核110a可以请求分配16字节的内存块。内存分配加速器116的控制器128可以分析预先分配表130,以确定16字节块是否已经被预先分配。如果块没有被预先分配,则控制器128可以针对块分析元数据122的空闲列表124和池列表126。如果块在元数据122中被识别,则相应的地址可以被返回至处理器110。相应的当前指针curptr值可以被更新,并且剩余块数量nleft值可以被减小。在另一示例中,如果16字节块没有被预先分配,但32字节块已经被预先分配,则控制器128可以将32字节块的地址返回。控制器128可以之后驱逐预先分配表130中的条目并将16字节块的条目输入到预期的未来请求中。

下表示出了与本文公开的示例系统中的一些相关的一些实验数据。

在其他可能的优点之中,根据本公开的系统可能够加速内存分配。对象通过调用被分配至内存分配程序库的使用堆内存的程序(例如c和c++)可以从所公开的系统中受益。内存分配可以显著有助于运行时间,并且可以从所公开的系统中受益。由于单个指令和简单的表查找可以用于分配或解除分配内存而不是可能数百的动态指令,能量效率可以得到改善。如在库调用中使用的那些类似的内存分配调用可以被使用。

图4描述了根据本文中描述的至少一些实施例设置的用于为处理器分配内存的示例处理的流程图。在一些示例中,图4中的处理可以使用如上所述的系统100实施。

示例处理可以包括由方框s2、s4、s6和/或s8中的一个或多个示出的一个或多个操作、动作或功能。虽然图示为离散的方框,基于所期望的实施方式,各方框可以划分成额外的方框、组合成较少的方框,或者被去除。

处理可以在方框s2“由处理器生成分配所请求内存块的请求”开始。在方框s2,处理器可以被配置为生成分配所请求内存块的请求。在一些示例中,预先分配数据可以在生成该请求之前被存储。处理可以从方框s2向方框s4“由被配置为与处理器通信的内存分配加速器接收请求”继续。在方框s4,内存分配加速器可以被配置为接收请求。

处理还可以从方框s4向方框s6“由内存分配加速器处理请求,以识别与请求相对应的特定内存块的地址”继续。在方框s6,内存分配加速器可以被配置为识别与请求相对应的特定内存块的地址。

处理可以从方框s6向方框s8“由内存分配加速器将地址返回至处理器”继续。在方框s8,内存分配加速器可以将与内存块相对应的地址返回。内存分配加速器可以进一步存储与可用于被分配给处理器的内存相关的元数据。元数据可以包括空闲列表中的起始地址以及池列表中的指向起始地址的指针。空闲列表可以标识存储在高速缓存中解除分配的内存块。池列表可标识池中的内存块。

当处理请求时,内存分配加速器可以分析空闲列表中的指针,以确定指针是否识别响应于所请求块的响应块。当响应块没有在空闲列表中被识别时,内存分配加速器可以分析响应于所请求块的块的池列表中的指针。响应于将地址返回,内存分配加速器可以基于特定块的尺寸将池列表中的指针中的一个移动至不同的地址。池列表可以包括可用于分配相应块尺寸的块的数量。内存分配加速器可以减小可用于具有特定块尺寸的块的块的数量。处理器可以将元数据的地址存储在与由处理器运行的程序相关的区域中或处理器的寄存器中。预先分配数据可以在分析元数据之前被分析。

图5示出根据本文描述的至少一些实施例设置的能够用于实施内存分配加速器的示例计算机程序产品300。程序产品300可以包括信号承载介质302。信号承载介质302可以包括一条或多条指令304,当通过例如处理器执行时,这些指令可以提供上文结合图1-4描述的功能。由此,例如,参考系统100,处理器110a和/或内存分配加速器116可以响应于由介质302传递给系统100的指令304而进行如图5中显示的方框中的一个或多个。

在一些实施方式中,信号承载介质302可以包含计算机可读介质306,例如但不限于硬盘驱动器、压缩盘(cd)、数字多功能盘(dvd)、数字磁带、存储器等。在一些实施方式中,信号承载介质302可以包含可记录介质308,例如但不限于存储器、读/写(r/w)cd、r/wdvd,等等。在一些实施方式中,信号承载介质302可以包含通信介质310,例如但不限于数字和/或模拟通信介质(例如,光纤线缆、波导、有线通信链路、无线通信链路等)。因此,例如,程序产品300可以通过rf信号承载介质302传送到系统100的一个或多个模块,其中信号承载介质302由无线通信介质310(例如,符合ieee802.11标准的无线通信介质)来传送。

图6是示出了根据本文所描述的至少一些实施例设置的被设置为实施内存分配加速器的示例计算设备400的框图。在最基本的配置402中,计算设备400通常包括一个或多个处理器404和系统存储器406。存储器总线408可用于在处理器404与系统存储器406之间通信。

根据所需的配置,处理器404可以是任意类型,包括但不限于微处理器(μp)、微控制器(μc)、数字信号处理器(dsp)或其任意组合。处理器404可以包括例如一级高速缓存410和二级高速缓存412的一级或多级高速缓存、处理器内核414和寄存器416。示例的处理器内核414可以包括算术逻辑单元(alu)、浮点单元(fpu)、数字信号处理核(dspcore)或其任意组合。示例的存储器控制器418还可与处理器404一起使用,或者在一些实施方式中,存储器控制器418可以是处理器404的内部组件。

根据所需的配置,系统存储器406可以是任意类型,包括但不限于易失性存储器(例如ram)、非易失性存储器(例如rom、闪存等)或其任意组合。系统存储器406可以包括操作系统420、一个或多个应用422以及程序数据424。应用422可以包括内存分配加速器算法426,该算法可设置成执行如本文所描述的功能,包括参考如图1-5的系统100所描述的功能。程序数据424可以包括内存分配加速器数据428,其可以用于实施如本文所描述的内存分配加速器。在一些实施例中,应用422可布置成在操作系统420上操作程序数据424,使得可提供内存分配加速器。这种所描述的基本配置402在图6中通过内部虚线内的那些组件示出。

计算设备400可具有附加的特征或功能以及附加的接口以便于基本配置402与任何所需的设备和接口之间的通信。例如,总线/接口控制器430可用于利于基本配置402与一个或多个数据存储设备432之间经由存储接口总线434的通信。数据存储设备432可以是可移除存储设备436、非可移除存储设备438或者其组合。可移除存储设备和非可移除存储设备的示例包括例如软盘驱动器和硬盘驱动器(hdd)的磁盘设备、例如压缩盘(cd)驱动器或数字多功能盘(dvd)驱动器的光盘驱动器、固态驱动器(ssd)和磁带驱动器,仅列举了几个。示例的计算机存储介质可以包括以用于例如计算机可读指令、数据结构、程序模块或其它数据的信息的存储的任何方法或技术实现的易失性和非易失性的介质以及可移除和非可移除的介质。

系统存储器406、可移除存储设备436和非可移除存储设备438是计算机存储介质的示例。计算机存储介质包括但不限于ram、rom、eeprom、闪存(flashmemory)或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光学存储设备、磁盒、磁带、磁盘存储设备或其它磁存储设备、或者可用于存储所需信息并且可由计算设备400访问的任何其它介质。任意这样的计算机存储介质可以是计算设备400的部分。

计算设备400还可以包括接口总线440,该接口总线用于方便从各接口设备(例如,输出接口442、外围设备接口444和通信设备446)经由总线/接口控制器430到基本配置402的通信。示例的输出接口442包括图形处理单元448和音频处理单元450,其可配置为经由一个或多个a/v端口452与例如显示器或扬声器的各外部设备通信。示例的外围设备接口444包括串行接口控制器454或并行接口控制器456,其可配置为经由一个或多个i/o端口458与例如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其它外围设备(例如,打印机、扫描仪等)的外部设备通信。示例的通信设备446包括网络控制器460,其可布置成便于经由一个或多个通信端口464通过网络通信链路与一个或多个计算设备462的通信。

网络通信链路可以是通信介质的一个示例。通信介质通常可通过计算机可读指令、数据结构、程序模块或例如载波或其它传输机制的调制数据信号中的其它数据来具体化,并且可以包括任何信息输送介质。“调制数据信号”可以是使得其特性中的一个或多个以将信号中的信息编码的方式设定或改变的信号。通过举例而不是限制的方式,通信介质可以包括例如有线网络或直接线连接的有线介质,以及例如声波、射频(rf)、微波、红外(ir)和其它无线介质的无线介质。如本文所使用的术语计算机可读介质可以包括存储介质和通信介质两者。

计算设备400可实现为例如蜂窝电话、个人数据助理(pda)、个人媒体播放器设备、无线网页监视设备(wirelessweb-watchdevice)、个人头戴送受话器设备、专用设备或包括上述功能中的任一种的混合设备的小型便携式(或移动)电子设备的一部分。计算设备400还可实现为包括膝上型计算机和非膝上型计算机配置两者的个人计算机。

本公开不限于本文所描述的特定实施例,这些实施例意在为各方案的示例。能够在不偏离其精神和范围的情况下做出多种改进和变型,这对于本领域技术人员而言是显而易见的。通过前面的说明,除了本文所列举的那些之外,在本公开的范围内的功能上等同的方法和装置对于本领域技术人员而言将是显而易见的。旨在使这些改进和变型落在所附权利要求书的范围内。本公开仅受所附权利要求书以及这些权利要是所给予权利的等同方案的整个范围所限制。应当理解的是,本公开不限于特定的方法、试剂、化合物组成或生物系统,当然这些会变化。还应理解的是,本文所使用的术语是仅仅是为了描述特定实施例的目的,而不意在限制。

关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。

本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达引导性权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗指不定冠词“一”或“一个”引导权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及例如“一”或“一个”的不定冠词(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个以上的记述项)。此外,在使用类似于“a、b和c等中的至少一个”的惯用法的那些示例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有a、b和c中的至少一个的系统”将包括但不限于仅具有a、仅具有b、仅具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b和c等等的系统)。在使用类似于“a、b或c等中的至少一个”的惯用法的那些示例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有a、b或c中的至少一个的系统”将包括但不限于仅具有a、仅具有b、仅具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b和c等等的系统)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“a或b”将理解为包括“a”或“b”或“a和b”的可能性。

另外,在根据马库什组(markushgroup)描述本公开的特征或方案的情况下,本领域技术人员将理解的是本公开也因此以马库什组的任何独立成员或成员的子组来描述。

本领域技术人员将理解的是,为了任何以及全部的目的,例如在提供所撰写的说明书方面,本文所公开的全部范围也涵盖了任何和全部的可能的子范围及其子范围的组合。能够容易地认识到任何所列范围都充分地描述了同一范围并且使同一范围分解成至少均等的一半、三分之一、四分之一、五分之一、十分之一等等。作为非限制示例,本文所论述的每个范围能够容易地分解成下三分之一、中三分之一和上三分之一,等等。本领域技术人员还将理解的是,例如“多达”、“至少”等所有的语言包括所记述的数量并且是指如上文所论述的随后能够分解成子范围的范围。最后,本领域技术人员将理解的是,范围包括每个独立的成员。因此,例如,具有1-3个单元的组是指具有1个、2个或3个单元的组。类似地,具有1-5个单元的组是指具有1个、2个、3个、4个、或5个单元的组,等等。

通过前面的论述,将理解到本文已经为了示例的目的描述了本公开的各实施例,并且可以在不偏离本公开的范围和精神的情况下进行各种改进。因此,本文所公开的各个实施例不意在限制,真正的范围和精神是通过随附的权利要求表示的。

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