一种高速缓存清理方法及处理器与流程

文档序号:14571840发布日期:2018-06-01 22:41阅读:392来源:国知局
一种高速缓存清理方法及处理器与流程

本申请本申请涉及处理器技术领域,具体涉及一种高速缓存清理方法及处理器。



背景技术:

高速缓存(cache)是存在于内存与中央处理器(CPU,Central Processing Unit)之间的存储器,由静态随机存取存储器(SRAM,Static Random Access Memory)组成,容量比内存较小但速度比内存高得多,接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器,它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。

高速缓存的出现主要是因为CPU运算速率要比内存读写速率快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在高速缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从高速缓存中调用,从而加快读取速率。高速缓存对CPU的性能影响很大,主要原因有CPU的数据交换顺序和CPU与高速缓存间的带宽,其中,读取数据的顺序会影响到高速缓存的读取命中率,该读取命中率是高速缓存的一个重要参数,在处理器技术领域通常也采用cache miss率,即高速缓存的读取未命中率来表征读取命中率,当发生cache miss时,即CPU要读取的数据不在高速缓存中而在内存中,处理器需要等待数据从内存读入高速缓存;而高速缓存的带宽将直接影响CPU读取高速缓存数据的速度,即单位时间内CPU从高速缓存中读取的数据量的大小,两则结合会影响整个系统的效率。

为了提高高速缓存的利用率,会将高速缓存分为多个具有固定大小的缓存线(cache line),CPU对高速缓存进行读写也是以缓存线为单位,例如,每个缓存线的大小可以是32Byte或64Byte,由于高速缓存的容量远小于内存,只能将最常用的数据预取存入高速缓存中,所以不可避免的是CPU要读取的数不在高速缓存中而在内存中,即发生cache miss的情况,此时就需要从内存查找该数据并读入高速缓存,读入的数据需要占用高速缓存的存储空间,而由于高速缓存的总容量较小,导致缓存线的数量是有上限的,因此针对缓存线会有一些合适的淘汰策略,如近期最少使用和最不经常的优先淘汰或是先进新出等方式,而这些淘汰策略均为CPU自行进行的判断,可能会出现一些替换出内容是即将要使用的,由此会导致cache miss率增加。



技术实现要素:

本申请实施例提供了一种高速缓存清理方法来解决现有由于CPU自行判断高速缓存中要替换的内容,使得替换出内容可能是即将要使用的,从而会导致cache miss率增加的问题。

有鉴于此,本申请第一方面提供一种高速缓存清理方法,该方法中,为处理器内除了高速缓存之外还设有一与高速缓存同速度级别的存储器,用于存储高速缓存内的部分或者全部的缓存线的有效信息,当处理器在向高速缓存中写入数据时,当发现高速缓存已经没有足够的空间写入数据时,便在写入数据时将高速缓存内的部分缓存线替换为写入的数据,此时,该高速缓存清理方法包括,首先由处理器确定高速缓存内的目标缓存线,在确定出目标缓存线时会一并读取存储器中对应此目标缓存线的有效信息,如果发现根据有效信息确定该目标缓存线失效,则会在写入数据时替换掉该目标缓存线,而若是发现该目标缓存线并未失效,则在写入数据的时候保留该目标缓存线。

可以看出,采用此方式在处理器想要替换某目标缓存线时,需要根据有效信息对该目标缓存线的有效性进行判断,只有失效的目标缓存线才会被替换,而有效的目标缓存线则仍然存在于高速缓存中,此举使得处理器后续访问高速缓存时,不会出现由于之前将有效的缓存线替换出去而出现的cache miss的情况,从而降低cache miss率,由于对失效缓存线的剔除,不仅能够提高高速缓存的利用率而提升整个系统的计算效率,还能够降低系统对高速缓存容量的需求,从而降低CPU的使用功耗,从而降低系统的搭建成本和使用成本。

在一些实施例中,有效信息包括有效值,不同的有效值指示所述缓存线的不同优先级,如此便能对缓存线的优先级进行划分,以便于CPU在替换缓存线时能够从低优先级开始替换,提高高速缓存的利用率,在此划分方式下,处理器确定目标缓存线失效的过程可变为,处理器对有效值进行判断,当根据有效值确定所述目标缓存线的优先级低于预设的优先级时,此时便会确定目标缓存线失效。

在一些实施例中,在采用有效值指示不同的优先级的情形下,类似的,处理器确定目标缓存线失效的过程可变为,处理器对有效值进行判断,当根据有效值确定所述目标缓存线的优先级不低于预设的优先级时,此时便会确定目标缓存线有效,同样,此方式能够使得高优先级的缓存线不会优先被替换掉,提升系统的稳定性,减少cache miss率。

在一些实施例中,CPU除了能够对存储器中的缓存线的有效信息进行读取之外,还可根据应用层发来的应用层指令对存储器的有效值进行修改,具体的过程可以是,处理器接收应用层指令,该指令中包括被所述应用层指令指示的缓存线的信息;而后处理器便能够根据该信息找到并对被指示的缓存线的有效值进行修改,以达到修改该被指示的缓存线的优先级的目的,使得能够通过应用层对高速缓存的优先级进行配置,使得应用层需要的缓存线不会被清理,从而不仅提高高速缓存的利用率,好减少cache miss率,提升系统性能。

在一些实施例中,处理器会对被指示的缓存线的信息进行判断,该信息中能够携带被指示的缓存线的一些信息,如能够通过该信息确定被指示的缓存线已使用结束,此时处理器便会对有效值进行修改,使得修改后的有效值对应的优先级低于预设的优先级,从而能够在替换缓存线时能够优先被替换。

在一些实施例中,该被指示的缓存线的信息还能够指示被指示的缓存线是否为关键缓存线,关键缓存线即该缓存线内的数据较为重要,在未来会被再次被使用,乃至重复多次使用,对这类缓存线需要通过修改有效值,将其优先级调整为高于预设的优先级,使其无法在替换缓存线的过程中被覆盖,从而减小cache miss率。

在一些实施例中,处理器还会对高速缓存内的缓存线进行周期性的检查,其主要检查这些缓存线是否有更新,若发现某一缓存线已经经过预设的时间阈值还未发生更新的情况,便会对该缓存线的有效值进行修改,使得修改后的有效值对应的优先级低于所述预设的优先级,从而达到对长时间不适用但占用高速缓存空间的缓存线进行清理的目的,提升高速缓存的利用率。

在一些实施例中,处理器还会获取CPU时钟,该CPU时钟会包括一个或多个CPU周期,而后在后续检查缓存线时,便会按照获取的CPU时钟为周期对缓存线进行周期性检查。此周期的设置一方面能够对缓存线的更新情况较为及时的检查,另一方面也不会对CPU的资源进行过多的占用。

本申请实施例第二方面还提供一种处理器,高速缓存和处理核心,所述高速缓存内包括至少一条缓存线,处理器内还设有用于存储高速缓存内至少一条缓存线的有效信息的存储器,所述存储器、高速缓存和处理核心均通过总线相连接,该处理核心用于执行本申请第一方面或第一方面的任一实施例中提供的NVMe数据读写方法。

本申请实施例第三方面还提供一种计算机存储介质,该计算机存储介质中存储了程序代码,如应用层的程序代码,该程序代码被处理器运行时,执行第一方面或第一方面的任意一种实现方式提供的高速缓存清理方法。该计算机存储介质包括但不限于快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,简称:HDD)或固态硬盘(英文:solid state drive,简称:SSD)。

本申请实施例第四方面还提供一种计算机存储介质,该计算机存储介质设置在计算机的处理器内部,用于与处理器直接交互,该计算机存储介质用于存储处理器内的高速缓存内的缓存线的有效信息,处理器通过读取该计算机存储介质获取高速缓存内的缓存线的有效性。该计算机存储介质为由SRAM组成,可以是指令高速缓存、或数据高速缓存。

附图说明

图1是本申请实施例的高速缓存清理方法的应用架构图;

图2是本申请实施例的高速缓存清理方法的一个实施例图;

图3是本申请实施例的处理器的一个实施例图。

具体实施方式

本申请实施例提供了一种高速缓存清理方法能够通过对高速缓存内的缓存线的有效性进行判断,在清理高速缓存内容时优先对失效的缓存线进行清理,降低对高速缓存容量的依赖,从而不仅降低系统的搭建和使用成本,而且提高系统的计算效率。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。

以下分别进行详细说明。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。

鉴于CPU运算速率要比内存读写速率快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存的情形下,高速缓存的出线无疑成为二者速率不匹配的缓冲。CPU的高速缓存通常较大,而CPU在操作时并不会每次都对整个高速缓存中的内容进行操作,因此会将高速缓存按照CPU操作的最小单位划分成多个固定大小缓存线,即CPU的最小操作单位为一个缓存线;CPU内部的高速缓存一般而言分为三种,第一种是用于存储指令的指令高速缓存,第二种是用于存储数据的数据高速缓存,而数据高速缓存针对CPU架构的不同可以有多级,例如英特尔的桌面系统haswell系列CPU一般包含三级高速缓存,即L1cache、L2cache和L3cache在多核CPU系统中,L1cache和L2cache是每个核心私有,而L3cache则为多个核心所共有。此外,第三种cache,翻译后备缓冲器(TLB,Translation Lookaside Buffer)则主要用于加速虚拟地址物理地址转换。

下面对CPU访问主存进行介绍,CPU在访问内存的过程中,由于前述高速缓存的存在,是通过高速缓存间接访问内存,而高速缓存管理系统在管理高速缓存时以高速缓存条目(cache entry)的方式,每个高速缓存条目包括一个缓存线、用于标记缓存线对应内存的地址的标记以及标识位,该标识位用于标记缓存线是否为无效的,若是该缓存线为数据高速缓存时,则该表示位还用于标识该缓存线是否为脏,即该缓存线是否被修改过。CPU在每次需要访问内存时,会遍历一遍全部的缓存线,查找内存的地址是否在某个缓存线中,如未找到,即cache miss,此时CPU会分配一个新的高速缓存条目,而后将内存中的内容同步到该缓存线中,CPU再从该缓存线中读取相应的内容。

由于高速缓存中包含的高速缓存条目有限,因此在高速缓存条目达到上限时,需要有合适的淘汰策略,例如1、近期最少使用(LRU,Least Recently Used)算法:将最近最少使用的内容替换出高速缓存;2、最不经常使用(LFU,Least Frequently Used)算法:将访问次数最少的内容替换出高速缓存;3、如果高速缓存中所有内容都是同一天被缓存的,则将最大的文档替换出高速缓存,否则按LRU算法进行替换;4、先进先出(FIFO,First In First Out)算法:遵循先入先出原则,若当前高速缓存被填满,则替换最早进入高速缓存的那个。

可以看出,这些淘汰策略中,仅仅按照CPU访问高速缓存的一般规律,而未结合当前系统中运行的应用场景,如有些场景存入高速缓存中的数据是会重复使用的,或者虽然不经常使用,但是会在一定条件下使用等,此时上述淘汰策略便不能很好的兼顾这些应用场景,导致淘汰出的缓存线是即将要使用到的,从而导致cache miss增加的问题。

有鉴于此,本申请实施例提出一种高速缓存清理方法,该方式中,将在CPU内单独设置与高速缓存同速度级别的存储器,该存储器可以是独立于高速缓存设置的存储器,也可以是从高速缓存中划分出一部分空间作为该存储器。该存储器中存储有高速缓存内的部分或者全部缓存线的有效性信息,这些有效信息可以结合应用层的信息的进行修改。请参阅图1和图2,图1是本申请实施例的高速缓存清理方法的应用架构图,图2是本申请实施例的高速缓存清理方法的一个实施例图,图1中处理器的处理核心、存储器和应用层接口均与总线连接,该核心中还设有高速缓存接口,用于对处理器内的高速缓存进行访问,核心与存储器以及应用层接口之间的通讯过程均通过总线进行。下面对高速缓存清理方法进行详细说明,请参阅图2,图2是本申请实施例的高速缓存清理方法一个实施例图,该方法可包括:

201、处理器确定高速缓存内的目标缓存线。

其中,当由于cache miss或者高速缓存中正在更新数据时,需要向高速缓存写入数据,发现高速缓存中的剩余缓存线不足以应对写入的数据时,便会由处理器根据一些淘汰策略确定待替换的目标缓存线,这些淘汰策略可以是通过LRU算法、LFU算法和FIFO算法等确定出的目标缓存线,即本申请实施例的高速缓存清理方法能够兼容目前的高速缓存淘汰策略,当然也可以自行设定不同的淘汰策略来确定目标缓存线。

202、处理器读取存储器内对应目标缓存线的有效信息。

从图1中可以看出,处理器的核心能够通过总线访问存储器,处理器在确定出了目标缓存线之后,便会在该存储器中查找对应该目标缓存线的有效信息,该有效信息能够指示该目标缓存线是有效还是无效。

203、处理器根据有效信息判断对应的目标缓存线是否有效,若失效,则执行步骤204,若有效则执行步骤205。

其中,处理器在根据有效信息确定出目标缓存线有效时,便会执行步骤204,当处理器在根据有效信息确定出目标缓存线无效时,便会执行步骤205。

可选的,该有效信息包括有效值,不同的有效值指示所述缓存线的不同优先级,相当于将高速缓存中的缓存线的淘汰级别按照重要性进行了进一步的划分。处理器在判断目标缓存线是否失效时通过判断该有效值即可。

如,根据有效信息确定目标缓存线失效可以是:

处理器根据有效值确定所述目标缓存线的优先级低于预设的优先级,则确定所述目标缓存线失效。该预设的优先级为预先设定的,只要低于该预设的优先级,则表示该缓存线的优先级低,属于可被替换的,若是不低于该预设的优先级,则表示该缓存线属于不可被替换的,预设的优先级对应的有效值可以在系统初始化的时候进行设定,并且处理器也可在系统运行过程中对其进行更改。在高速缓存清理的设定上,针对优先级可以设定为,只要有更低的优先级的缓存线存在,那么高于该优先级的缓存线虽然仍低于预设的优先级,但是会等到该更低的优先级的缓存线被替换掉之后才考虑对该缓存线进行替换。当然,也可设定为只要低于预设的优先级,并且被确定为目标缓存线时,虽然高速缓存中仍有更低优先级的缓存线,但是仍旧对该目标缓存线进行清理。

又如,根据有效信息确定目标缓存线失效可以是:

处理器根据有效值确定所述目标缓存线的优先级不低于预设的优先级,则确定所述目标缓存线有效。

此外,由于本申请实施例中应用层接口同样连接到该总线,因此应用层也能够对存储器进行访问,其具体的访问过程可以是:

由处理器接收应用层指令,该应用层指令中包括被该应用层指令指示的高速缓存中的缓存线的信息,例如,该信息包括被指示的缓存线的逻辑地址以及对被指示的缓存线的将要进行的修改信息,该修改信息可通过一个字段或者一个标志位实现,可对该字段或者标志位对应的修改方式进行预先定义,当处理器接收到该应用层指令后,便可通过逻辑地址与物理地址的转换关系找到高速缓存中对应的缓存线,而后通过该表示修改信息的标志位或者字段对该缓存线的有效值进行修改。当然,也可以由处理器对该应用层指令进行解析得到缓存线的信息来确定缓存线;在确定缓存线后,处理器会根据该应用层指令中的缓存线的信息对被指示缓存线的有效值进行修改从而对优先级进行修改,不同的应用层指令会使得处理器对有效值的修改有所不同。

举例来说,对于应用层,一些缓存线在该应用层任务结束之后,其中的数据不再需要的情况下,这些缓存线应当设置为最低的优先级,即最先被淘汰。此情形下,处理器根据被指示的缓存线的信息修改所述被指示的缓存线的有效值可以包括:首先处理器根据所述被指示的缓存线的信息确定所述被指示的缓存线使用结束,而后处理器修改所述被指示的缓存线的有效值,修改后的有效值对应的优先级低于预设的优先级,即表示该缓存线属于可被替换的行列。

又举例来说,对于应用层的某一应用来说,某一高速缓存中的缓存线变为关键缓存线,即该关键缓存线是该应用执行过程中,即将要用到或者需要重复使用的,此时可以对该关键缓存线的优先级进行修改。此情形下,处理器根据被指示的缓存线的信息修改所述被指示的缓存线的有效值可以包括:首先处理器根据所述被指示的缓存线的信息确定所述被指示的缓存线为关键缓存线,而后处理器修改所述关键缓存线的有效值,修改后的有效值对应的优先级不低于预设的优先级,表示该缓存线属于不可被替换的行列,禁止CPU对其进行覆盖。

此外,可选的,还可由处理器对高速缓存内的缓存线进行周期性的检查,并对其中一些缓存线的有效值进行修改,例如,对于高速缓存内的缓存线,可以有处理器根据CPU时钟对该高速缓存内的缓存线的更新进行检查,若发现高速缓存内的缓存线超过预设的时间阈值未更新,则会将该超时的缓存线的有效值对应的优先级修改为低于所述预设的优先级,此方式的意义在于,为了防止某一应用程序在运行时将缓存线设定为高于预设的优先级,即不可替换,但是其运行过程中发生出错的问题,导致该缓存线以较高的优先级在高速缓存中驻留,而又无法被替换掉,由此会造成高速缓存容量的浪费,降低系统的额执行效率,因此可以预先设定一时间阈值,只要超过该时间阈值仍未更新的缓存线便被确定为此类驻留的缓存线,将其优先级调整至低于预设的优先级,以便于能够被及时替换掉。

其中,CPU时钟包括多个CPU周期(CPU Circle),CPU周期即CPU所能识别的最小时间单元,通常为亿分之几秒。CPU执行最简单的指令时所需要的时间,例如读取寄存器中的内容。

204、替换所述目标缓存线。

在确定该目标缓存线无效时,便会对目标缓存线进行替换,即将新生成的高速缓存条目对应的缓存线替换该目标缓存线。

205、保留所述目标缓存线。

若确定出该目标缓存线并非无效,而是有效的,那么便会放弃替换该目标缓存线。而此时由于仍旧需要替换高速缓存中缓存线以写入要写入的数据,一种方式是处理器重新读取存储器,从中找到无效的缓存线,并将需要写入的缓存线替换该无效的缓存线,当然查找无效的缓存线的顺序仍旧是按照低优先级先替换的原则,即找到最低优先级的缓存线进行替换,若数量不足,则找到较最低优先级高一级的缓存线进行补足,直到能够替换所有写入的缓存线。

上面对本申请实施例的高速缓存的清理方法进行了介绍,下面对本申请实施例的处理器进行介绍,请参阅图3,图3是本申请实施例的处理器的一个实施例图,该处理器3可包括处理核心301、高速缓存302和存储器303,当然该处理器内还包括应用层接口304,处理核心301、高速缓存302、存储器303和应用层接口304之间均通过总线连接,处理核心301可以为多个,高速缓存302可以类似英特尔的处理器设置多级,其中,高速缓存内包括至少一条缓存线,存储器用于存储高速缓存内至少一条缓存线的有效信息;

其中,处理核心301用于确定高速缓存302内的目标缓存线,还用于读取所述存储器303内的目标缓存线的有效信息;该处理核心301还用于当根据所述有效信息确定所述目标缓存线失效时,替换所述目标缓存线;或,

当所述根据所述有效信息确定所述目标缓存线有效时,保留所述目标缓存线。

需要说明的是,该处理器3中的存储器303可以设置在高速缓存302内,也可以作为处理器301内的另一高速缓存,此外,处理核心301执行的缓存线的清理过程可参阅图2所示实施例中的缓存线的清理过程,此处不再赘述。

可选的,有效信息包括有效值,不同的有效值指示所述缓存线的不同优先级,此时,处理核心301具体用于:当根据所述有效值确定所述目标缓存线的优先级低于预设的优先级时,确定所述目标缓存线失效。

需要说明的是,该确定过程与图2所示实施例中针对步骤203的说明类似,此处不再赘述。

可选的,处理核心301具体用于:当根据有效值确定目标缓存线的优先级不低于所述预设的优先级时,确定所述目标缓存线有效。

需要说明的是,该确定过程与图2所示实施例中针对步骤203的说明类似,此处不再赘述。

可选的,所述处理核心301还用于:接收应用层指令,所述应用层指令内包括被所述应用层指令指示的缓存线的信息;根据被指示的缓存线的信息修改所述被指示的缓存线的有效值。

需要说明的是,该确定过程与图2所示实施例中针对步骤203的说明类似,此处不再赘述。

可选的,处理核心301还具体用于:根据所述被指示的缓存线的信息确定所述被指示的缓存线使用结束;修改所述被指示的缓存线的有效值,修改后的有效值对应的优先级低于预设的优先级。

需要说明的是,该确定过程与图2所示实施例中针对步骤203的说明类似,此处不再赘述。

可选的,处理核心301还具体用于:根据所述被指示的缓存线的信息确定所述被指示的缓存线为关键缓存线;修改所述关键缓存线的有效值,修改后的有效值对应的优先级不低于预设的优先级。

需要说明的是,该确定过程与图2所示实施例中针对步骤203的说明类似,此处不再赘述。

可选的,处理核心301还用于:对所述高速缓存内的缓存线周期性检查,当确定所述高速缓存内的缓存线超过预设的时间阈值未更新时,修改所述未更新的缓存线的有效值,修改后的有效值对应的优先级低于所述预设的优先级。

需要说明的是,该确定过程与图2所示实施例中针对步骤203的说明类似,此处不再赘述。

可选的,处理核心301还具体用于:获取中央处理器CPU时钟;以所述CPU时钟为周期对所述高速缓存内的缓存线周期性检查。

需要说明的是,该确定过程与图2所示实施例中针对步骤203的说明类似,此处不再赘述。

下面对本申请实施例中的涉及的存储器以及高速缓存进行说明,该存储器或者高速缓存由SRAM组成,可以是指令高速缓存、或数据高速缓存,当作为数据高速缓存时,可以有多个级别。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行替换;而这些修改或者替换,并不使相应技术方案脱离本申请各实施例技术方案的范围。

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