一种基于数据对象感知的内存库划分方法和装置与流程

文档序号:12719135阅读:241来源:国知局
一种基于数据对象感知的内存库划分方法和装置与流程

本发明涉及一种内存库划分技术,尤其涉及一种基于数据对象感知的内存库划分方法和装置。



背景技术:

在对存储性能进行分析评测时,往往需要获取数据流或指令流。然而,用来获取的数据流或指令流的传统工具或模拟器存在多种问题。首先,模拟器不能提供真实的运行环境,因此无法严格保证数据的真实性和精确性,特别是时间的准确性无法严格保证。其次,传统工具可能需要对应用或硬件进行修改,才能获取所需的数据流或指令流,而这种方法在很多种情况下是不适用的。

主存由多个内存库(bank)组成,例如主流的单条DDR2/3内存条会包含8或16个bank。bank数量会随主存的容量同步增长。每个bank是一个二位矩阵,包含多个行,每个行又划分为多列。在bank内部又包含一个独立的行缓存结构,用于保存最近一次被访问的整行数据。

采用上述结构的主存能同时利用并行性和局部性来提高访存性能。访存并行性是指主存能够利用多bank结构同时响应多个访存请求,而多个访存请求重叠执行,能够隐藏部分访存延迟。访存局部性是指处理器能直接从行缓冲器(row buffer)读取之前被缓存的数据,避免额外的预充电、行选以及列选等操作。

一旦多个访存请求同时访问相同的bank,产生的访存冲突会导致两方面的负面影响。首先,bank冲突会使并行的访存请求串行执行,使访存延迟成倍增长。其次,行缓存冲突使得原本空间局部性较强的数据回写阵列,而频繁的换行操作会进一步增加访存的延迟,使处理器的访存性能恶化。

单芯片多处理器(Chip multiprocessors,CMP,也指多核心)通过复用传统的单核处理器设计,利用并行的方式进一步推进计算机系统的性能提升。但是,一旦CMP发起的并行访存操作争抢共享bank资源,会导致访存冲突并降低访存性能。相关研究工作在进程间对bank进行划分,缓解线程级并行(Thread Level Parallelism,TLP)导致的访存冲突。但该类方法忽视了指令级并行(Instruction Level Parallelism,ILP)引入的访存冲突。当单个进程中共享bank资源的数据对象被同时访问时,仍然会产生访存冲突。

除处理器外,计算机系统中还存在多种访存设备(例如:显卡,磁盘和网卡等)。虽然这些设备的访存行为不仅存在巨大的差异,但访存设备之间都会共享主存。

因此,这更需要通过操作系统来灵活调整数据布局,在达到性能优化的同时,兼顾通用性、灵活性和准确性。



技术实现要素:

本发明涉及计算机系统的内存管理技术,特别是涉及在不修改硬件和应用的前提下,利用缺页异常在真实机器上准确地获取访存踪迹的方法,评估应用在各执行阶段的访存行为,并指导内存分配。

本发明所要解决的技术问题是克服目前在进程间对bank进行划分缓解线程级并行访存冲突时所忽视的指令级并行所引入的访存冲突的不足。

为了解决上述技术问题,本发明提供了一种基于数据对象感知的内存库划分方法,包括:

根据数据对象的规模标识待分析的数据对象;

根据获取的子数据流,从待分析的数据对象中标识被并行访问的数据对象,并结合性能监视单元PMU分析被并行访问的数据对象的访存冲突开销,确定冲突源,并量化冲突源对性能的负面影响;

根据伪缺页异常的分析,获取在多个时间片段内密集访问主存的数据对象组合,通过操作系统调整已经标识出的被并行访问的数据对象在主存中的分布。

优选地,获取子数据流包括:利用伪缺页异常机制捕获所述子数据流。

优选地,利用伪缺页异常机制捕获所述子数据流之后还包括:利用伪缺页异常机制分析所述子数据流。

优选地,利用伪缺页异常机制捕获所述子数据流,包括以下至少之一:

进程创建阶段,通过未分配物理内存获得所述子数据流;

通过数据对象内存初始化分配获得所述子数据流;

设置伪缺页状态,通过标记待分析的数据对象获得所述子数据流;

通过触发伪缺页异常获得所述子数据流;

通过无异常数据访问获得所述子数据流。

优选地,利用伪缺页异常机制分析所述子数据流包括:

收集伪缺缺页异常产生的异常地址;

结合PMU分析当前代码片段所访问的数据对象对性能的负面影响

采用瞬时的主存访问频度和/或次数和/或时间跨度判断访存的性能。

优选地,所述数据对象包括静态数据对象或动态数据对象;

通过读取编译器生成的符号表来获取所述静态数据对象的规模,通过捕获操作系统的动态内存分配操作来获取所述动态数据对象的规模。

优选地,标识待分析的数据对象,包括:

保存所述待分析的数据对象的起始地址和结束地址。

为了解决上述技术问题,本发明还提供了一种基于数据对象感知的内存库划分装置,包括:

标识模块,设置为根据数据对象的规模标识待分析的数据对象;

数据流模块,设置为根据获取的子数据流,从待分析的数据对象中标识被并行访问的数据对象,并结合PMU分析被并行访问的数据对象的访存冲突开销,确定冲突源,并量化冲突源对性能的负面影响;

划分模块,设置为根据伪缺页异常的分析,获取在多个时间片段内密集访问主存的数据对象组合,通过操作系统调整已经标识出的被并行访问的数据对象在主存中的分布。

优选地,所述数据流模块还设置为利用伪缺页异常机制捕获所述子数据流。

优选地,所述数据流模块还设置为利用伪缺页异常机制分析所述子数据流。

优选地,所述数据流模块利用伪缺页异常机制捕获所述子数据流,包括以下至少之一:

进程创建阶段,通过未分配物理内存获得所述子数据流;

通过数据对象内存初始化分配获得所述子数据流;

设置伪缺页状态,通过标记待分析的数据对象获得所述子数据流;

通过触发伪缺页异常获得所述子数据流;

通过无异常数据访问获得所述子数据流。

优选地,所述数据流模块利用伪缺页异常机制分析所述子数据流包括:

收集伪缺缺页异常产生的异常地址;

结合PMU分析当前代码片段所访问的数据对象对性能的负面影响

采用瞬时的主存访问频度和/或次数和/或时间跨度判断访存的性能。

优选地,所述标识模块通过读取编译器生成的符号表来获取所述静态数据对象的规模,通过捕获操作系统的动态内存分配操作来获取所述动态数据对象的规模。

与现有技术相比,本申请的实施例不修改硬件和应用,利用缺页异常在真实机器上评估应用在各执行阶段的访存行为并指导内存分配,能够准确地获取访存踪迹,可以获得更高的真实性和精确性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1是本发明实施例的基于数据对象感知的bank划分方法的流程图;

图2是本发明实施例的基于数据对象感知的bank划分装置的结构示意图;

图3是本发明实施例使用伪缺页异常获取子数据流,并标识被并行访问数据对象的方法的示意图;

图4是本发明实施例的基于数据对象感知的bank划分装置实例的结构示意图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。本申请实施例以及实施例中的各个特征在不相冲突前提下的相互结合,均在本发明的保护范围之内。

另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请的实施例利用缺页异常机制来分析进程在各时间片段内的访存行为,标识时间段内被并行访问的数据对象,并确定数据对象之间的访存冲突开销。通过修改操作系统的内存分配器,将冲突开销较大的数据对象分散到不同的bank中,避免频繁访存冲突对性能的负面影响。

如图1所示,本申请实施例提供的基于数据对象感知的bank划分方法主要包括如下内容。

步骤S110,根据数据对象的规模标识待分析的数据对象,减少分析过程的复杂度和开销。

上述数据对象的规模,是指数据对象占据内存单元的多少个字节。

可以有两种方式来获取数据对象的规模,而这两种方式分别针对的是静态数据对象和动态数据对象。

对于静态数据对象,其所占据的内存单元的数量在编译阶段已经确定。例如,全局变量(Global Variable)和静态变量(Static Variable)。因此,通过读取编译器生成的符号表即可以确定静态数据对象的规模。本申请的实施例中,如果静态数据对象在符号的起始地址和结束地址之间的差值大于某个阈值,则相应的静态数据对象被标识。

对于动态数据对象,其所占据的内存单元的数量在运行阶段才能被确定。例如,随用户输入的变化,动态数据对象的规模会出现变化。因此,本申请的实施例,通过捕获操作系统的动态内存分配(malloc)操作来获取被申请的内存大小,如果被申请的内存大小超过某个阈值,则相应的动态数据对象被标识。

所述的规模是根据高速缓冲存储器(Cache)的容量来判断的,数据规模超过Cache的容量,无法在Cache中装载,所以对这些数据的操作会导致频繁的主存访问。相反,如果数据能够在Cache中驻留,由于不访问主存,也就不会发生访存冲突。

标识的方式,是保存待分析的数据对象的起始地址和结束地址(这个地址是虚拟地址,数据对象虚拟地址连续)。例如数据对象O,Os和Oe分别代表起始地址和结束地址。要对[Os,…,Oe]地址段的访问,就是在访问数据对象O。

为了明确访存冲突源,需要知道在各时间段内被处理器同时访问的数据对象组合。无论对于单进程,还是多进程,只有多个数据对象被同时访问,并且产生频繁的访存冲突,才会对性能造成负面的影响。操作系统会为数据对象分配私有的物理页帧。多个进程之间不共享物理内存,因此来自不同进程的数据对象会分散在不同的物理页帧中。而单进程内部的数据对象,当其规模超过基页的大小,由于基页无法同时容纳这些数据对象,因此这些数据对象同样会分散在不同的页帧中。因此,需要操作系统去捕获内存申请操作,有针对性地分析规模较大的数据对象的访存行为。其中,规模较大的数据对象,比如是超过预设规模的数据对象。

步骤S120,根据在程序执行过程中获取的子数据流,从待分析的数据对象中标识被并行访问的数据对象,并结合PMU(Performance Monitor Unit,性能监视单元)分析被并行访问的数据对象的访存冲突开销,确定冲突源,并量化冲突源对性能的负面影响。

数据流是处理器访问内存地址的序列。而地址与数据对象有一一对应的关系,因此,子数据流中的地址可以用来标识数据对象。

本申请的实施例中,处理器在一个预设时间段内访问过的数据对象,被认为是被处理器并行访问的数据对象。

其中,确定冲突源是根据子数据流中的地址,就能够确定处理器在某个时间段所操作的数据对象。在量化冲突源对性能的负面影响时,是根据预设时间段内处理器访问主存的次数来进行判断的。只有多个数据对象被同时访问,并且频繁访存的时候,才会产生较大的负面影响。

在单位时间段内处理器访问主存的次数,比如每个时钟周期完成多少次访存(access/time),表示处理器瞬时的访问频度。频度越高,说明单位时间段内的访问主存的次数越多,那么对性能的负面影响也就越大。

本发明使用伪缺页异常的方法来捕获并分析子数据流。

数据流是指进程的访存序列,其会因访问不同的数据对象而发生变化。为了捕获冲突对象子集,需要对子数据流进行分析。从进程瞬时的访存特征判断处理器当前所访问的数据是否会导致频繁的访存冲突。如果把数据流的处理器的访存序列看成一个集合,则子数据流就是访存序列这个集合的子集。

对于会导致频繁访存冲突的经过标识的被并行访问的数据对象,为其分配特定的物理内存。将不同的数据对象所获得的物理内存分散在不同的bank中,那么这些数据对象就不再共享bank资源。即使数据对象被同时访问,也不会产生访存冲突。

现有技术基于模拟器和编译器来对访存的行为进行分析,并没有在操作系统层开展工作。而使用模拟器和编译器进行分析,毕竟不属于真实环境,因此分析所获得的结果存在较大的偏差。

步骤S130,根据伪缺页异常的分析,获取在多个时间片段内密集访问主存的数据对象组合,通过操作系统调整已经标识出的被并行访问的数据对象在主存中的分布,避免冲突开销较大的数据对象共享使用bank。

本发明根据rank地址和bank地址将部分物理内存划分为多个链表,即同一链表中的页帧属于同一bank。由于仅有部分页帧被放入bank列表(list),剩余的页帧仍然采用伙伴(buddy)系统管理。这是为了满足应用和设备对物理内存的不同需求。本申请的实施例,同一链表中的页帧在bank位上的取值相同。

同时,本申请的实施例还修改了物理内存分配接口,通过参数来指定期望分区的页帧所对应的链表。对于多道程序,需要首先保证并行的程序之间会均分bank资源。例如双核处理器,各个处理器会获得二分之一的bank资源。单个进程内部的数据对象根据染色结果来指导bank划分,并且各个进程已经获取bank资源会在不同类型的颜色之间均分。不同颜色的数据对象,可能会被同时访问,所以为这些数据对象分配来自不同链表的页帧。

操作系统的传统内存分器,只有一个参数,该参数是指定应该分配的内存的数量,也就是说传统的内存分配器只要在内存池不为空时,就会从内存池中随机选取一个页帧。而在本专利中对内存分配借口进行了修改,加入了另一个参数,用于指定期望分区的页帧属于哪个链表,也就是也真会分布在哪个bank中。

如图2所示,本申请的实施例中利用伪缺页异常捕获子数据流主要包括如下内容。

步骤S210,进程创建阶段,未分配物理内存。

本申请的实施例利用页表项的保留位来区分正常的缺页异常和伪缺页异常。由于进程创建阶段没有虚拟地址和物理地址之间的映射关系,即对应的页表项为空。此时,页表项的当前(present)位和保留(reserve)位均为0。

步骤S220,数据对象内存初始化分配。当处理器发出内存请求时,内存管理单元(MMU)会检查相应页表项的present位。如果present位是0,缺页异常会在初始阶段通知操作系统去分配一个新的物理页帧。当数据对象对应页表项中的present位为1时,处理器对该物理页帧的访问不会触发异常,但是PMU会记录访问的数据是否直接在cache中命中,或者需要发起片外存储访问。

步骤S230,设置伪缺页状态,标记待分析的数据对象。一旦完成内存分配,操作系统在空闲内存充足的情况下不会主动回收进程的页帧,即操作系统无法明确处理器所访问的数据对象。因此,在异常处理函数(中断和系统调用)内要清除数据对象对应页表项的present位,将值为1的present位重置为0。

本申请的实施例,到操作系统完成物理内存分配,也就是给某个虚拟页建立好虚实地址的映射关系时,会将present位置1。之后,处理器对这个虚拟页的访问不再触发异常,因为present位始终保持为1。只有present位变为0,处理器对该页的访问才会触发异常。通常情况下,只有系统中的空闲页帧较少时,操作系统才会回收物理页帧,并将present位置0。本申请的实施例是让采用伪缺页异常的方式,主动将present位置0,强制处理器向操作系统报告其所访问的地址。通过获取的异常地址,来判断数据对象。

本申请的实施例,需要严格区分伪缺页异常与正常缺页异常。如果不加以区分,每一次缺页异常都会分配新的页帧,导致应用原有正确的数据丢失而产生错误的计算结果。如图3所示,本申请的实施例使用页表项中的保留位(reserve)位来对二者进行区分。在执行阶段操作系统定期清除步骤S110中通过阈值筛选出来的数据对象对应页表项的present位,同时会将页表项中的保留位置1。

步骤S240,触发伪缺页异常。当处理器再次访问这些页表项的present位被置为0的数据对象时,会产生伪缺页异常,并向操作系统报告异常地址。数据对象在内存中表现为一组物理页帧。

然后,根据异常地址来分析所访问的数据对象。当处理器访问页帧时,发现present位为0并触发异常。同时操作系统会读取保留位的值,如果保留位为0表示正常缺页异常,由操作系统分配页帧。如果保留位为1表示伪缺页异常,此时操作系统仅记录发生异常的地址。

步骤S250,无异常数据访问。当数据对象对应页表项中的present位为1时,处理器对该页帧的访问不会触发异常,但是PMU会记录访问的数据是否直接在cache中命中,或者需要发起片外存储访问。

如图3所示,本申请的实施例中基于伪缺页异常的访存冲突分析主要包括如下内容。

步骤S310,收集伪缺缺页异常产生的异常地址。根据内存申请阶段记录的虚拟地址表示捕获的异常地址所属的数据对象,确定预设时间段内所访问的数据对象组合。上述异常地址,用来标识所访问的数据对象。对象和地址之间存在一一对应的关系,通过异常地址就能知道所访问的数据对象。

步骤S320,结合PMU分析当前代码片段所访问的数据对象对性能的负面影响。PMU记录每1000次伪缺页异常的时间跨度,以及该时间跨度内处理器访问主存的次数。本申请的实施例中,访问频度频度高,并且越接近阈值,说明对性能的负面影响越大。只有接近该阈值,才说明性能差。

步骤S330,采用瞬时的主存访问频度(主存访问次数/时间跨度)判断访存性能的高低。访存频度越高,说明访存操作对性能的影响越大,将对应的数据对象标识为冲突数据对象子集。将该信息提供给操作系统,避免子集中的数据对象共享相同的bank。

本申请的实施例基于数据对象感知的bank划分方法,可以同时消除TLP和ILP技术产生的访存冲突。本申请的实施例以时间切片的方式捕获进程的子数据流,并通过分析子数据流的访存特征选取访存冲突密集阶段所访问的数据对象组合,作为冲突数据对象集。然后,基于剖视结果为冲突数据对象分配不同的bank资源。无论是TLP还是ILP技术,所产生的并行主存访问操作都不会争抢bank,因此能进一步提高CMP处理器的访存性能。

本申请的实施例利用缺页异常来分析进程的瞬时访存行为,能在多种处理器中实用。所有的剖视分析工作均基于真实处理器,保证数据的准确性。使用操作系统来调整数据对象的布局,无需对源码修改。

本发明根据上述方法实施例,相应地还提供了一种基于数据对象感知的bank划分装置实施例,如图2所示,包括:

标识模块,设置为根据数据对象的规模标识待分析的数据对象;

数据流模块,设置为根据获取的子数据流,从待分析的数据对象中标识被并行访问的数据对象,并结合PMU分析被并行访问的数据对象的访存冲突开销,确定冲突源,并量化冲突源对性能的负面影响;

划分模块,设置为根据伪缺页异常的分析,获取在多个时间片段内密集访问主存的数据对象组合,通过操作系统调整已经标识出的被并行访问的数据对象在主存中的分布。

所述数据流模块还设置为利用伪缺页异常机制捕获所述子数据流。

所述数据流模块还设置为利用伪缺页异常机制分析所述子数据流。

所述数据流模块利用伪缺页异常机制捕获所述子数据流,包括以下至少之一:

进程创建阶段,通过未分配物理内存获得所述子数据流;

通过数据对象内存初始化分配获得所述子数据流;

设置伪缺页状态,通过标记待分析的数据对象获得所述子数据流;

通过触发伪缺页异常获得所述子数据流;

通过无异常数据访问获得所述子数据流。

所述数据流模块利用伪缺页异常机制分析所述子数据流包括:

收集伪缺缺页异常产生的异常地址;

结合PMU分析当前代码片段所访问的数据对象对性能的负面影响

采用瞬时的主存访问频度和/或次数和/或时间跨度判断访存的性能。

所述标识模块通过读取编译器生成的符号表来获取所述静态数据对象的规模,通过捕获操作系统的动态内存分配操作来获取所述动态数据对象的规模。

实施例一

结合图4,说明基于数据对象感知的bank划分装置实例:

主要包括内存申请捕获模块410、数据对象监测状态设定模块420、子数据流捕获模块430、子数据流分析模块440以及数据对象染色模块450。

内存申请捕获模块410,用于确定待分析的数据对象。进程数据对象的数目较多,但是大部分的数据可以驻留与cache中,因此需要挑选那些可能导致频繁访存的数据对象并进行分析。该模块将选定的数据对象传递给对象检测状态设定模块。

数据对象监测状态设定模块420,与内存申请捕获模块410相连,用于定期将数据对象对应的页表项中的present位置0。同时为了区分正常的缺页异常和伪缺页异常,在将present位置0的过程中,同时还将页表项中的reserved位置1。

子数据流捕获模块430,与数据对象监测状态设定模块420相连,用于标识被并行访问的数据对象。当处理器访问数据对象时,如果present位为0,处理器会触发异常。缺页异常处理程序会根据reserved位的取值进行对应的操作。如果reserved位为0,说明是正常的缺页异常,为进程分配物理页帧;否则,说明是伪缺页异常,在记录异常地址后返回用户态。

子数据流分析模块440,与数据对象监测状态设定模块420相连,用于分析当前访问的数据对象是否产生频繁的访存冲突。该模块记录每一千次伪缺页异常的时间跨度,并记录该时间段内的片外存储访问的次数。然后用二者的比值来表示处理器的瞬时访问频度,频度越高说明该时间段内的访存操作对性能的负面影响也越大。因此,挑选访存频度较高的数据对象组合作为待优化的数据对象。

数据对象染色模块450,与子数据流捕获模块430及子数据流分析模块440相连,用于指导内存分配。通过获取子数据流捕获和分析模块的输出,该模块将所有存在冲突的数据对象染成不同的颜色,并通知操作系统在下次进程执行时,避免不同颜色的数据共享使用bank资源。

本发明所要解决如何减少CMP多核处理器的并行访存请求对bank资源的争抢,包含三个方面:1.)根据应用的访存行为来标识冲突源,这需要明确进程各执行片段所访问的数据对象;2.)准确量化多个数据对象被同时访问时的访存性能,明确这些数据对象是否存在优化的价值;3.)根据分析的结果调整数据布局,避免被同时访问并导致频繁访存冲突的数据对象共享bank资源。

本申请的实施例中,无论对于单进程,还是多进程,只要多个数据对象被处理器同时访问,并且产生频繁的访存冲突,才会导致对性能的负面影响。因此,首先要明确进程所包含的哪些数据对象有可能会频繁产生访存冲突。

本申请的实施例中,数据对象是程序的重要组成部分,其仅仅是一个静态的概念,而在进程执行过程中可能存在多种并行访问的数据对象组合。因此,必须标识进程实际执行过程中的并行访问数据对象。

本申请的实施例中,由于处理器设计的差异会表现出相异的访存行为,例如高速缓冲存储器(cache)容量,相联度和替换算法等。因此,需要根据真实处理器的访存行为来分析并行访问数据对象的访存开销,通过内存分配的方式避免开销较大的数据对象共享bank。

本申请的实施例以数据对象为中心对bank资源进行划分,目的是为了同时消除线程级并行(thread level parallelism,TLP)和指令级并行(instruction level parallelism,ILP)技术产生的访存冲突。本发明提出的伪缺页异常的方法,以时间切片的方式捕获进程的子数据流,基于子数据流中的访存地址来标识所访问的数据对象。同时,结合PMU分析子数据流的访存特征,并选取访存冲突密集阶段所访问的数据对象组合,作为冲突数据对象集。最后,基于剖视结果为冲突数据对象分配不同的bank资源。无论是TLP还是ILP技术,它们产生的并行主存访问操作都不会争抢bank,因此能进一步提高CMP处理器的访存性能。本申请的实施例利用缺页异常来分析进程的瞬时访存行为,能在多种处理器中使用。本申请实施例中所有的剖视分析工作均基于真实处理器,保证分析的准确性和真实性。使用操作系统来调整数据对象的布局,不依赖特殊的底层硬件,也无需对源码修改。

本领域的技术人员应该明白,上述的本申请实施例所提供的装置和/或系统的各组成部分,以及方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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