一种基于ZNS固态硬盘的存储硬件加速模块系统转让专利

申请号 : CN202210957441.5

文献号 : CN115033188B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘烈超刘兴斌

申请人 : 武汉麓谷科技有限公司

摘要 :

本发明提供了一种基于ZNS固态硬盘的存储硬件加速模块系统,本发明的存储硬件加速模块,通过NVMe命令接口模块收发NVMe请求,NVMe命令接口模块完成加速模块命令和NVMe命令的转换工作;异构众核存储加速模块完成实际的存储加速工作;ZNS固态硬盘操作模块负责管理数据的实际存取;数据缓存模块提供数据中转、暂存功能,Host数据的收发,ZNS固态硬盘数据的读写,以及加速模块数据存放都通过数据缓存模块完成。另外,异构众核存储加速模块中的通用微处理器,提供灵活的软件定义功能,可以根据不同的应用场景编写固件控制操作流程,完成所需的存储加速功能。本发明拥有良好的扩展性,因此很容易将其扩展为存储硬件加速器协议。

权利要求 :

1.一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于,包含:所有对外访问数据接口的PCIe链路;NVMe 命令接口模块,负责NVMe命令请求的收发管理,包括NVMe队列管理模块、命令仲裁模块、命令预取模块、主机数据DMA,主机数据DMA用于提供主动数据访问功能;NVMe 命令接口模块根据收到的来自主机CPU的请求,或者来自ZNS固态硬盘的完成包,提交到内部的命令队列;加速模块内部产生针对ZNS固态硬盘的请求,以及返回给主机CPU的完成包,将发送到请求队列,通过NVMe 命令接口模块发往相应目的;

命令分发模块负责NVMe命令的解析和分发,将解析后的命令发往对应的加速执行单元等待执行,并给缓冲区管理模块发同步控制信号;

异构众核存储加速模块,设计成统一接口的加速器簇,相同功能的加速器集合组成一个加速器簇,若干不同功能的加速器簇组成整个加速器模块,一个加速器簇包含多个单一相同的存储加速模块;

存储加速器包括用于通用控制功能的微处理器簇,用于机器学习推理用的AI处理器簇,以及用于数据运算用的ALU加速器簇,ALU加速器簇根据加速功能分为加解密、压缩和解压缩、转码、重复数据删除、查询、SQL Query、RAID XOR、KV compact专用存储加速器簇;每一个存储加速模块的ALU加速执行单元执行硬件加速前,与缓冲区管理模块同步对应的数据缓存是否可用,缓存可用时启动硬件加速,操作对应缓冲区的数据,ALU加速执行单元内部根据需要可增加DMA单元提高加速单元内部的数据中转效率;缓冲区管理模块负责缓冲区的状态管理、分配和释放,以及根据各执行模块的同步信号监控并设置缓冲区是否可用,在数据ready时发送请求给相应DMA执行数据传输。

2.根据权利要求1所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:ALU加速执行单元的每一个单核加速模块都具有包含加载存储单元、加载系数单元、乘法单元及蝶式/加法器ALU单元的多个执行单元。

3.根据权利要求2所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:每个ALU执行单元中的每一者经配置以响应于NVMe命令的操作码而执行运算,及非正交数据寄存器堆,其包括耦合到多个执行单元的一组数据寄存器,耦合到多个执行单元中的选定者的寄存器少于数据寄存器堆中的所有数据寄存器。

4.根据权利要求2所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:加载存储执行单元,其经配置以从存储器位置加载数据且将加载数据存储到加速模块处理器中的寄存器;加载系数执行单元,其经配置以从寄存器加载系数;乘法执行单元,其经配置以对来自寄存器的数据执行乘法运算且将结果存储于目的地寄存器中;及ALU加速执行单元,其经配置以对来自寄存器的数据执行蝶式及ADD运算且将结果存储于目的地寄存器中。

5.根据权利要求4所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:还包括数据寄存器堆,其包括具有宽度N的多个数据寄存器,数据寄存器堆耦合到加载存储执行单元、加载系数执行单元、乘法执行单元及ALU加速执行单元;其中数据寄存器堆中的多个数据寄存器与加载存储执行单元、加载系数执行单元、乘法执行单元及ALU加速执行单元之间的连接形成非正交架构。

6.根据权利要求1所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:存储加速模块还包括通用微处理器。

7.根据权利要求6所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:通用微处理器对指令采用乱序执行和分支预测的方式进行处理,通用微处理器指令流控制存储硬件加速器数据流向,完成不同的存储加速任务,通过操作NVMe接口模块的寄存器读写,控制数据在加速器和外部之间的数据传输;通过操作数据缓存模块的寄存器读写,控制数据在加速器内部的流控;通过操作异构众核加速模块的寄存器读写,控制实际的数据加速运算。

8.根据权利要求1所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:主机CPU、加速模块和ZNS固态硬盘三者之间交互都是通过NVMe命令提交队列SQ和命令完成队列CQ来完成。

9.根据权利要求8所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:SQ和CQ共有3组,分别用于主机CPU和加速模块,主机CPU和ZNS固态硬盘,加速模块和ZNS固态硬盘之间通信,每组可配置多个队列。

10.根据权利要求8所述的一种基于ZNS固态硬盘的存储硬件加速模块系统,其特征在于:SQ和CQ并不一定是一一对应的,主机CPU同时发送请求到加速模块和ZNS固态硬盘,加速模块接收到命令后发送请求到ZNS固态硬盘,ZNS固态硬盘将数据传给加速模块完成后,返回完成包到加速模块,加速模块根据ZNS固态硬盘的完成情况做硬件加速,然后返回数据给主机CPU,并传回完成包给主机CPU。

说明书 :

一种基于ZNS固态硬盘的存储硬件加速模块系统

技术领域

[0001] 本发明属于固态硬盘技术领域,具体地,涉及一种基于ZNS固态硬盘的存储硬件加速模块系统。

背景技术

[0002] 随着云计算、互联网技术的快速发展,日常工作生活中时时刻刻都会产生海量数据需要存储,数据存储技术得到相应的发展以满足爆炸式增长数据的现实存储需求,SSD(Solid State Drives,固态硬盘)为用固态电子存储芯片阵列制成的硬盘,由控制单元和固态存储单元组成。由于其稳定的性能,例如读写速度快、能耗较低,有效地克服了机械硬盘诸多缺点,而被广泛采用。
[0003] 固态硬盘主要用于在高性能计算机系统中替代磁盘,作为数据存储设备,随着半导体技术和存储技术的发展,单个固态硬盘的性能越来越高,这对原有存储系统软件和处理器能力都是一个挑战,近年来出现的分区ZNS固态硬盘,主机端和固态硬盘可基于ZNS(Zoned Namespace,区块命名空间)协议进行协同交互,将闪存操作接口暴露给上层存储系统软件。但上层系统如何结合应用优化闪存读写,ZNS规范并没有提供解决方案。另一方面,处理器性能提升遭遇瓶颈,越来越多的解决方案在存储系统内部引入硬件加速模块来提升系统整体性能。
[0004] 一种方法是采用标准SSD作为存储介质,搭配硬件加速卡,加速卡接收主机处理器操作指令,完成近存储计算,减轻系统数据传输压力。先前已知的方法包含专用硬件加速模块的使用,专用硬件加速模块经特别设计以执行特定向量运算。虽然使用这些专用硬件加速模块将增加待计算的每一向量运算的性能,但由于针对待加速的每一类型的向量计算添加单独的硬件功能所致,此方法也往往增加硅面积。虽然在使用专用硬件块来执行特定向量计算时将增加计算性能,但灵活性差及不能修改计算的缺点超过潜在收益。除执行特定专用功能以外,专用硬件加速模块并不用于其它操作,使得具有专用硬件加速模块的集成电路设计可为硅面积的低效使用(取决于特定功能多久执行一次)。常见的是加速卡通常只能针对某一种特定应用做加速,且高度定制化,编程困难,不能兼容现有的存储软件架构,同时SSD屏蔽了闪存操作接口,不能和应用程序结合优化,存在性能损失和存储空间浪费。
[0005] 另一种方法是在SSD盘内引入加速模块,这种方式虽然可以适用于所有存储在SSD上的数据读写,但无法针对应用程序做特定优化,只能完成一些非常简单的加解密、压缩和解压缩等类型的加速,且SSD用于管理NAND操作就需要大量逻辑硬件资源,留给硬件加速的逻辑硬件资源较少,同时由于是在盘内部做加速,耦合了FTL、NAND失效管理等算法,管理非常复杂。因此,这种加速方案一般只应用于一些加解密、压缩和解压缩类型的简单通用加速场景。

发明内容

[0006] 基于以上的现有技术缺陷,本发明的目的是提供一种基于ZNS固态硬盘、使用NVMe协议跟主机交互、采用异构众核统一融合硬件架构的存储硬件加速模块方案。
[0007] 本发明提出一种基于ZNS固态硬盘的存储硬件加速模块系统,包含所有对外访问数据接口的PCIe链路;NVMe 命令接口模块,负责NVMe命令请求的收发管理,包括NVMe队列管理模块、命令仲裁模块、命令预取模块、主机数据DMA,主机数据DMA用于提供主动数据访问功能;NVMe 命令接口模块根据收到的来自主机CPU的请求,或者来自ZNS固态硬盘的完成包,提交到内部的命令队列;加速模块内部产生针对ZNS固态硬盘的请求,以及返回给主机CPU的完成包,将发送到请求队列,通过NVMe 命令接口模块发往相应目的;
[0008] 命令分发模块负责NVMe命令的解析和分发,将解析后的命令发往对应的加速执行单元等待执行,并给缓冲区管理模块发同步控制信号;
[0009] 异构众核存储加速模块,设计成统一接口的加速器簇,相同功能的加速器集合组成一个加速器簇,若干不同功能的加速器簇组成整个加速器模块,一个加速器簇包含多个单一相同的存储加速模块;
[0010] 存储加速器包括用于通用控制功能的微处理器簇,用于机器学习推理用的AI处理器簇,以及用于数据运算用的ALU加速器簇,ALU加速器簇根据加速功能分为加解密、压缩和解压缩、转码、重复数据删除、查询、SQL Query、RAID XOR、KV compact等专用存储加速器簇。
[0011] 每一个存储加速模块的ALU加速执行单元执行硬件加速前,与缓冲区管理模块同步对应的数据缓存是否可用,缓存可用时启动硬件加速,操作对应缓冲区的数据,ALU加速执行单元内部根据需要可增加DMA单元提高加速单元内部的数据中转效率;缓冲区管理模块负责缓冲区的状态管理、分配和释放,以及根据各执行模块的同步信号监控并设置缓冲区是否可用,在数据ready时发送请求给相应DMA执行数据传输。
[0012] 进一步地,ALU加速模块的每一个单核加速模块都具有包含加载存储单元、加载系数单元、乘法单元及蝶式/加法器ALU单元的多个执行单元。
[0013] 进一步地,每个执行单元中的每一者经配置以响应于NVMe命令的操作码而执行运算,及非正交数据寄存器堆,其包括耦合到多个执行单元的一组数据寄存器,耦合到多个执行单元中的选定者的寄存器少于数据寄存器堆中的所有数据寄存器。
[0014] 进一步地,加载存储执行单元,其经配置以从存储器位置加载数据且将加载数据存储到加速模块处理器中的寄存器;加载系数执行单元,其经配置以从寄存器加载系数;乘法执行单元,其经配置以对来自寄存器的数据执行乘法运算且将结果存储于目的地寄存器中;及ALU加速执行单元,其经配置以对来自寄存器的数据执行蝶式及ADD运算且将结果存储于目的地寄存器中。
[0015] 进一步地,还包括数据寄存器堆,其包括具有宽度N的多个数据寄存器,数据寄存器堆耦合到加载存储执行单元、加载系数执行单元、乘法执行单元及ALU加速执行单元;其中数据寄存器堆中的多个数据寄存器与加载存储执行单元、加载系数执行单元、乘法执行单元及ALU加速执行单元之间的连接形成非正交架构。
[0016] 进一步地,存储加速模块还包括通用微处理器。
[0017] 进一步地,通用微处理器对指令采用乱序执行和分支预测的方式进行处理,通用微处理器指令流可以控制存储硬件加速器数据流向,完成不同的存储加速任务,通过操作NVMe接口模块的寄存器读写,控制数据在加速器和外部之间的数据传输;通过操作数据缓存模块的寄存器读写,控制数据在加速器内部的流控;通过操作异构众核加速模块的寄存器读写,控制实际的数据加速运算。因此,只需要根据应用场景设置好通用微处理器指令流,就可以完成存储硬件加速卡编程,定制存储加速功能。
[0018] 进一步地,主机CPU、加速模块和ZNS固态硬盘三者之间交互都是通过NVMe命令提交队列SQ和命令完成队列CQ来完成。
[0019] 进一步地,SQ和CQ共有3组,分别用于主机CPU和加速模块,主机CPU和ZNS固态硬盘,加速模块和ZNS固态硬盘之间通信,每组可配置多个队列。
[0020] 进一步地,SQ和CQ并不一定是一一对应的,主机CPU同时发送请求到加速模块和ZNS固态硬盘,加速模块接收到命令后发送请求到ZNS固态硬盘,ZNS固态硬盘将数据传给加速模块完成后,返回完成包到加速模块,加速模块根据ZNS固态硬盘的完成情况做硬件加速,然后返回数据给主机CPU,并传回完成包给主机CPU。
[0021] 本发明与背景技术相比,具有的有益的效果是:的本发明通过扩展NVMe协议来实现存储加速协议,简化系统设计、兼容现有存储软件架构。存储介质基于ZNS固态硬盘,使得存储应用能充分发挥闪存性能优势。采用异构众核统一融合硬件架构,拥有良好的可扩展性,加速模块编程方法统一高效。

附图说明

[0022] 为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0023] 本说明书附图所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本申请可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本申请所能产生的功效及所能达成的目的下,均应仍落在本申请所揭示的技术内容得能涵盖的范围内。
[0024] 图1 为本申请存储硬件加速模块逻辑结构图;
[0025] 图2 为本申请加速模块的在整个存储系统中的存储系统交互图;
[0026] 图3 为本申请存储硬件加速模块硬件设计结构图。

具体实施方式

[0027] 下面将结合本申请实施例中的附图,对本申请中的实施例进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0028] 本发明是一种硬件加速器方案,基于NVMe协议规范设计加速器操作接口,以兼容已有成熟的存储软件架构,NVMe协议是专为非易失存储介质设计的存储协议,拥有良好的扩展性,因此很容易将其扩展为存储硬件加速器协议。通过设计一种NVMe存储加速命令集加入到设备支持命令集中,来实现存储硬件加速协议。存储介质基于ZNS固态硬盘,去除FTL,将闪存操作特性暴露给加速器和上层主机软件,有利于针对应用优化闪存读写性能,同时,ZNS固态硬盘完成NAND介质管理工作,使得加速器可用专注于存储加速,从复杂的NAND介质管理/失效处理中解耦出来,另外,ZNS固态硬盘同样基于NVMe协议,为整体设计减轻复杂度。针对加速卡高度定制化,编程困难的问题,设计一种异构众核统一融合硬件架构,NVMe接口模块负责将不同存储加速命令解析成统一的加速命令发往加速器模块,加速模块被设计成统一接口的加速器簇,相同功能的加速器集合组成一个加速器簇,若干不同功能的加速器簇组成整个加速器模块,每个加速器都包含一个命令请求接口和数据传输接口,这种众核异构统一融合的硬件架构拥有良好的可扩展性,且编程简单统一高效。存储加速器包括用于通用控制功能的微处理器簇,用于机器学习推理用的AI处理器簇,以及用于数据运算用的ALU加速器簇,ALU加速器簇根据加速功能分为加解密、压缩和解压缩、转码、重复数据删除、查询、SQL Query、RAID XOR、KV compact等专用存储加速器簇。
[0029] 为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
[0030] 实施例1
[0031] 如图1 所示,为本申请存储硬件加速模块逻辑结构图,本发明的存储硬件加速模块,通过NVMe命令接口模块收发NVMe请求,NVMe命令接口模块完成加速模块命令和NVMe命令的转换工作;众核存储加速模块完成实际的存储加速工作;ZNS固态硬盘操作模块负责管理数据的实际存取;数据缓存模块提供数据中转、暂存功能,Host数据的收发,ZNS固态硬盘数据的读写,以及加速模块数据存放都通过数据缓存模块完成。另外,众核存储加速模块中的通用微处理器,提供灵活的软件定义功能,可以根据不同的应用场景编写固件控制操作流程,完成所需的存储加速功能。
[0032] 众核存储加速模块的每一个单核加速模块都具有包含加载存储单元、加载系数单元、乘法单元及蝶式/加法器ALU单元的多个执行单元,每个执行单元中的每一者经配置以响应于NVMe命令的操作码而执行运算,及非正交数据寄存器堆,其包括耦合到多个执行单元的一组数据寄存器,耦合到多个执行单元中的选定者的寄存器少于数据寄存器堆中的所有数据寄存器。具体地,加速模块,响应于NVMe命令的操作码而执行运算而执行从存储器检索的并行指令字,包含:加载存储执行单元,其经配置以从存储器位置加载数据且将加载数据存储到加速模块处理器中的寄存器;加载系数执行单元,其经配置以从寄存器加载系数;乘法执行单元,其经配置以对来自寄存器的数据执行乘法运算且将结果存储于目的地寄存器中;及ALU加速执行单元,其经配置以对来自寄存器的数据执行蝶式及ADD运算且将结果存储于目的地寄存器中;数据寄存器堆,其包括具有宽度N的多个数据寄存器,数据寄存器堆耦合到加载存储执行单元、加载系数执行单元、乘法执行单元及ALU加速执行单元;其中数据寄存器堆中的多个数据寄存器与加载存储执行单元、加载系数执行单元、乘法执行单元及ALU加速执行单元之间的连接形成非正交架构。
[0033] 存储加速模块还包括用于通用控制功能的通用微处理器簇,用于机器学习推理用的AI处理器簇,以及加解密、压缩和解压缩、转码、重复数据删除、查询、SQL Query、RAID XOR、KV compact等专用存储加速模块簇。
[0034] 通用微处理器簇由多核RISC微处理器组成,其工作负载主要以非数值、不规则标量应用为主,实现高性能的方法主要是开发指令级并行性,可以针对不同的应用场景编写固件控制操作流程。处理器对指令采用乱序执行和分支预测的方式进行处理,通用微处理器指令流可以控制存储硬件加速器数据流向,完成不同的存储加速任务,通过操作NVMe接口模块的寄存器读写,控制数据在加速器和外部之间的数据传输;通过操作数据缓存模块的寄存器读写,控制数据在加速器内部的流控;通过操作异构众核加速模块的寄存器读写,控制实际的数据加速运算。因此,只需要根据应用场景设置好通用微处理器指令流,就可以完成存储硬件加速卡编程,定制存储加速功能。
[0035] 如图2 所示本申请加速模块的在整个存储系统中的存储系统交互图,ZNS固态硬盘提供闪存管理功能,加速模块提供计算加速引擎,只需要根据应用需求定制加速引擎,并编写加速模块簇中的通用微处理器控制程序,就可以提供定制化的计算存储服务。主机CPU,加速模块和ZNS固态硬盘之间交互都是通过NVMe命令提交队列SQ和命令完成队列CQ来完成。 SQ和CQ共有3组,分别用于主机CPU和加速模块,主机CPU和ZNS固态硬盘,加速模块和ZNS固态硬盘之间通信,每组可配置多个队列,具体数量根据资源情况和实际应用场景确定,对于某个操作来说,SQ和CQ并不一定是一一对应的,例如,某个操作的完成,需要主机CPU同时发送请求到加速模块(SQ0某个队列)和ZNS固态硬盘(SQ1某个队列),加速模块接收到命令后发送请求到ZNS固态硬盘(SQ2某个队列),ZNS固态硬盘将数据传给加速模块完成后,返回完成包到加速模块(CQ2某个队列),加速模块根据ZNS固态硬盘的完成情况做硬件加速,然后返回数据给主机CPU,并传回完成包给主机CPU(CQ0某个队列)。可以通过发送不同的主机CPU请求和灵活设计可编程的加速模块中微处理器控制程序,选择不同的IO路径和加速功能。
[0036] 如图3本申请存储硬件加速模块硬件设计结构图所示,所有对外访问数据接口都是通过PCIe链路;NVMe 命令接口模块,负责NVMe命令请求的收发管理,包括NVMe队列管理模块、命令仲裁模块、命令预取模块、主机数据DMA,主机数据DMA用于提供主动数据访问功能;NVMe 命令接口模块根据收到的来自主机CPU的请求,或者来自ZNS固态硬盘的完成包,提交到内部的命令队列,另外,加速模块内部产生的针对ZNS固态硬盘的请求,以及返回给主机CPU的完成包,将发送到请求队列,通过NVMe 命令接口模块发往相应目的;命令分发模块负责NVMe命令的解析和分发,将解析后的命令发往对应的ALU加速执行单元等待执行,并给缓冲区管理模块发同步控制信号;ALU加速执行单元执行硬件加速前,会跟缓冲区管理模块同步对应的数据缓存是否可用,缓存可用时启动硬件加速,操作对应缓冲区的数据,ALU加速执行单元内部根据需要可增加DMA单元提高加速单元内部的数据中转效率;缓冲区管理模块负责缓冲区的状态管理、分配和释放,以及根据各执行模块的同步信号监控并设置缓冲区是否可用/ready,在数据ready时发送请求给相应DMA执行数据传输。
[0037] 本说明书中各个实施例采用递进、或并列、或递进和并列结合的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0038] 需要说明的是,在本申请的描述中,需要理解的是,术语“上”、“下”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中设置的组件。
[0039] 还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的物品或者设备中还存在另外的相同要素。
[0040] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。