CN104699574A - 一种建立处理器Cache检查点的方法、装置及系统 - Google Patents
一种建立处理器Cache检查点的方法、装置及系统 Download PDFInfo
- Publication number
- CN104699574A CN104699574A CN201310662178.8A CN201310662178A CN104699574A CN 104699574 A CN104699574 A CN 104699574A CN 201310662178 A CN201310662178 A CN 201310662178A CN 104699574 A CN104699574 A CN 104699574A
- Authority
- CN
- China
- Prior art keywords
- cache
- processor
- address
- write
- row address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种建立处理器Cache检查点的方法、装置及系统,以保证建立Cache检查点不存在影响处理器运行,该方法包括:在Cache中内容逐行导出过程中,当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分,执行处理器写Cache操作,同时将写Cache操作写入Cache行中内容导出;当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,执行处理器写Cache操作,暂停Cache中内容导出;当接收到处理器读Cache信号时,执行处理器读Cache操作,暂停Cache中内容导出。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种建立处理器Cache检查点的方法、装置及系统。
背景技术
在计算机系统中,处理器高速缓冲存储器(CPU Cache)是用于减少处理器访问内存所需平均时间的部件,其容量远小于内存,但速度却可以接近处理器的频率。同时,某个进程周期性地保存执行程序的状态至稳定存储器,系统在失效后能够根据这些信息得以恢复,每一个被保存的程序状态称为检查点,目前检查点技术广泛用于系统的容错设计中。则Cache检查点就是针对Cache建立的检查点,它保存了某一时刻的整个Cache状态,在故障迁移和状态恢复中,如果可以使用Cache检查点恢复Cache状态,那么处理器就不用初始化Cache,节约了大量的Cache重建时间,加快了系统故障恢复和状态迁移的速度。
在现有技术中,建立Cache检查点的方法,是在处理器工作的过程中,利用Cache的空闲时间导出建立过程开始时刻的Cache状态到压缩器中,从而建立Cache检查点。在Cache检查点建立过程中,如果没有对Cache的更新操作,所有的Cache内容会按照Cache地址顺序依次导出到压缩器中。但是如果有对Cache的更新操作,并且更新操作对应的Cache行中的原有内容尚未导出,就需要暂停处理器操作,将此Cache行原有的内容先导出到压缩器,然后再启动处理器更新该Cache行,即在需要更新未导出区域的数据时,需要首先保存原有数据,也就需要延迟处理器更新数据的操作,暂停流水线或者暂停访存操作。因此,现有技术建立处理器Cache检查点的方法存在影响处理器运行的情况,影响系统的正常运行。
发明内容
有鉴于此,本发明实施例的主要目的是提供一种建立处理器Cache检查点的方法、装置及系统,以解决现有技术中建立处理器Cache检查点的方法存在影响处理器运行的情况,影响系统的正常运行的问题。
为解决上述问题,本发明提供的技术方案如下:
第一方面,本发明提供了一种建立处理器Cache检查点的方法,所述方法包括:
在将Cache中的内容逐行导出的过程中,当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分,则执行处理器写Cache操作,并同时将所述写Cache操作写入Cache行中的内容进行导出;
当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,则执行处理器写Cache操作,并暂停将Cache中的内容进行导出;
当接收到处理器读Cache信号时,执行处理器读Cache操作,并暂停将Cache中的内容进行导出。
在第一方面的第一种可能的实现方式中,所述方法还包括:
当接收到的处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行,则执行处理器读Cache操作,并同时将所述读Cache操作对应的Cache行中的内容进行导出。
结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:
控制地址生成器由Cache行地址范围的一端开始生成第一地址。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将Cache中的内容逐行导出的过程具体为:将所述第一地址所对应的Cache行中的内容导出到压缩器内存储,每导出一Cache行后则控制所述地址生成器将第一地址变化为下一Cache行地址。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述判断所述写操作对应的Cache行是否是已导出的Cache行,包括:
所述检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分,包括:
接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址小于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址大于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,包括:
接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址大于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址小于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分。
结合第一方面的第三种可能的实现方式,在第六种可能的实现方式中,所述检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行,包括:
接收比较器的比较结果,所述比较器还用于比较所述处理器读Cache操作对应的Cache行地址与当前第一地址的大小;
所述比较结果为处理器读Cache操作对应的Cache行地址等于当前第一地址,确定处理器读Cache操作对应的Cache行是下一被导出的Cache行。
第二方面,本发明提供了一种建立处理器Cache检查点的装置,所述装置包括:
接收单元,用于在将Cache中的内容逐行导出的过程中,接收处理器写Cache信号或者接收处理器读Cache信号;
第一确定单元,用于在所述接收单元接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
第一处理单元,用于在所述第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,执行处理器写Cache操作;
第一导出单元,用于在所述第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,将所述写Cache操作写入Cache行中的内容进行导出;
第二确定单元,用于在所述接收单元接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
第二处理单元,用于在所述第二确定单元检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分时,执行处理器写Cache操作,并暂停将Cache中的内容进行导出;
第三处理单元,用于在所述接收单元接收到处理器读Cache信号时,执行处理器读Cache操作,并暂停将Cache中的内容进行导出。
在第二方面的第一种可能的实现方式中,所述装置还包括:
第三确定单元,用于在所述接收单元接收到处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行;
第四处理单元,用于在所述第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,执行处理器读Cache操作;
第二导出单元,用于在所述第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,将所述读Cache操作对应的Cache行中的内容进行导出。
结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:
控制单元,用于控制地址生成器由Cache行地址范围的一端开始生成第一地址。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将Cache中的内容逐行导出的过程具体为:将所述控制单元控制地址生成器生成的第一地址所对应的Cache行中的内容导出到压缩器内存储,每导出一Cache行后则所述控制单元控制所述地址生成器将第一地址变化为下一Cache行地址。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一确定单元包括:
接收子单元,用于接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
第一确定子单元,用于当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址小于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
第二确定子单元,用于当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址大于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
结合第二方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第二确定单元包括:
接收子单元,用于接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
第三确定子单元,用于当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址大于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
第四确定子单元,用于当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址小于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分。
结合第二方面的第三种可能的实现方式,在第六种可能的实现方式中,所述第三确定单元包括:
接收子单元,用于接收比较器的比较结果,所述比较器还用于比较所述处理器读Cache操作对应的Cache行地址与当前第一地址的大小;
第五确定子单元,用于所述接收子单元接收的比较结果为处理器读Cache操作对应的Cache行地址等于当前第一地址,确定处理器读Cache操作对应的Cache行是下一被导出的Cache行。
第三方面,本发明提供了一种建立处理器Cache检查点的系统,所述系统包括:
导出控制器,是本发明第二方面所述的建立处理器Cache检查点的装置;
地址生成器,用于根据所述导出控制器的控制生成第一地址;
比较器,用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小,比较所述处理器读Cache操作对应的Cache行地址与当前第一地址的大小,并将比较结果发送给所述导出控制器;
压缩器,用于存储Cache行的内容。
由此可见,本发明实施例具有如下有益效果:
本发明实施例在将Cache中的内容逐行导出的过程中,如果检测确定处理器需要写Cache且写Cache操作对应的Cache行在Cache的已导出部分,则执行处理器写Cache操作,并同时将所述写Cache操作写入Cache行中的内容进行导出;如果检测确定处理器需要写Cache且写Cache操作对应的Cache行在Cache的未导出部分,则执行处理器写Cache操作,并暂停将Cache中的内容进行导出;而检测到处理器需要读Cache则执行处理器读Cache操作,并暂停将Cache中的内容进行导出。这样在逐行导出Cache中内容的过程中,在Cache不空闲时,暂停Cache导出过程,当对Cache进行写操作即发生对Cache的更新操作时,且更新操作发生在Cache的已导出部分,更新的数据需要同时存储到压缩器内,这样导出到压缩器中的数据是每一Cache行内的最新数据,建立的Cache检查点是建立过程结束时刻的Cache状态。在整个Cache检查点建立过程中,在处理器一直处于正常工作的状态时,没有因为建立Cache检查点中断或推迟处理器的任何操作,建立Cache检查点的过程不存在影响处理器运行的情况,保证了系统的正常运行。
附图说明
图1为现有技术建立处理器Cache检查点的方法的示意图;
图2为本发明实施例建立处理器Cache检查点的方法实施例一的流程图;
图3为本发明实施例建立处理器Cache检查点的方法实施例的示意图;
图4为本发明实施例建立处理器Cache检查点的方法实施例二的流程图;
图5为本发明实施例建立处理器Cache检查点的方法实施例三的流程图;
图6为本发明实施例建立处理器Cache检查点的装置实施例一的示意图;
图7为本发明实施例建立处理器Cache检查点的装置实施例二的示意图;
图8为本发明实施例建立处理器Cache检查点的系统实施例一的示意图;
图9为本发明实施例建立处理器Cache检查点的系统实施例二的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
本发明实施例的建立处理器Cache检查点的方法、装置及系统可以适用于CPU Cache的检查点建立。CPU Cache是用于减少处理器访问内存所需平均时间的部件,每个Cache由若干Cache行组成,每个Cache行中又可以包括索引(Index)、标签(Tag)、若干标志位,如有效位(valid bit)、脏位(dirtybit)、使用位(use bit)等。在处理器看来,Cache可以认为是一个透明部件,通常无法直接干预对缓存的操作,也无法通过软件的方法直接读取Cache的内容。
在大规模系统中,设计越来越复杂,规模越来越大,一些部件出现故障会影响整个系统的运行,甚至整个系统的瘫痪,可靠性问题越来越严峻。为了保障系统的可靠性,可以使用故障恢复技术和状态迁移技术。在故障迁移和状态恢复中,如果可以使用Cache检查点恢复Cache状态,那么处理器就不用初始化Cache,节约了大量的Cache重建时间,加快了系统故障恢复和状态迁移的速度。Cache检查点也可以用于系统的检错,纠错和故障诊断中,辅助系统调试等。
在现有技术中,有一种离线建立Cache检查点的方法,当系统需要建立检查点时,首先暂停处理器的运行,停止流水线,在所有Cache数据都存储到压缩器后,再启动处理器。但是这种方法,需要暂停处理器的正常工作状态,停止流水线,影响了系统的运行,在建立Cache检查点阶段处理器不能执行任何操作,所需时间长,成本高。同时此技术破坏了系统的实时性,对于一些实时系统,暂停以后处理器可能无法再继续正常运行。
因此,在现有技术中,有另一种建立Cache检查点的方法,其主要思想是将导出建立过程开始时刻的Cache状态到压缩器中。参见图1所示,系统从A时刻开始导出Cache的内容到压缩器中,直到B时刻结束,导出的Cache内容为A时刻的Cache状态。在此建立过程中,如果Cache没有数据更新操作,所有的Cache行会按照Cache地址顺序依次导出到压缩器中。但是如果有更新操作,并且更新的Cache行的内容尚未导出,就需要暂停流水线,将此Cache行原有的内容先导出到压缩器,然后再启动流水线,更新该Cache行。否则,更新操作覆盖了原有数据,原有数据无法获得,也就无法导出A时刻的Cache数据。
由此可见,这种现有技术会影响处理器的运行,即在需要更新未导出区域的数据时,需要首先保存原有数据,也就需要延迟处理器更新数据的操作,暂停流水线或者暂停访存操作,使得数据导出时的处理器执行与正常模式不一样,一些操作被推迟,影响了系统的正常运行。
因此,在现有技术中建立Cache检查点的方式均会影响处理器的正常运行,为此本发明实施例提供了如下的建立处理器Cache检查点的方法、装置及系统。
参见图2所示,本发明实施例建立处理器Cache检查点的方法实施例一,可以包括以下步骤:
步骤201:在将Cache中的内容逐行导出的过程中,当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分,则执行处理器写Cache操作,并同时将所述写Cache操作写入Cache行中的内容进行导出。
本发明实施例建立处理器Cache检查点的方法可以由结合处理器Cache架构新增的导出控制器执行。
在接收到外部输入的使能信号时,可以在不存在对Cache的读写操作即Cache处于空闲状态时,开始按照Cache地址顺序由低至高或者由高至低导出每一行的Cache数据内容到压缩器中,在具体实现中,可以每导出一行返回继续判断是否存在对Cache的读写操作,如果Cache继续空闲,则导出上一导出Cache行的下一Cache行中的内容,即在Cache空闲的状态下逐行导出Cache的内容。
在将Cache中的内容逐行导出的过程中,整个Cache就可以被分为两个部分:已导出部分和未导出部分。
其中,每次导出的数据包括该Cache行的所有数据,即Tag、Valid、Dirty、Data信息。Tag信息为标识信息,与Cache行地址,偏移地址结合可以确定该Cache行中的保存的数据的段地址偏移;Valid位是有效位信息,表示该数据是否有效;Dirty位是脏位信息,在写回策略中,确定该数据是否被更新过;Data信息则为Cache行保存的对应地址的数据内容。
压缩器可以使用无损压缩的方法,根据Tag,data信息之间的相关性进行压缩,在Cache行的内容进行存储。
当接收到处理器写Cache信号时,代表处理器需要执行写Cache操作,写操作即更新操作,是向Cache内写入需要更新的数据。当接收到处理器写Cache信号时,进一步检测确定写操作发生的位置,在确定写操作发生在Cache的已导出部分,写入Cache的数据除了要写入到Cache中之外,还需要同时进行导出存储到压缩器中,
步骤202:当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,则执行处理器写Cache操作,并暂停将Cache中的内容进行导出。
当检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,则可以正常执行处理器写Cache操作,并暂停将Cache中的内容进行导出。可以在处理器写Cache操作后继续将Cache中的内容逐行导出的过程。
步骤203:当接收到处理器读Cache信号时,执行处理器读Cache操作,并暂停将Cache中的内容进行导出。
当接收到处理器读Cache信号时,也即处理器需要进行读读Cache操作,则正常执行处理器读Cache操作,并暂停将Cache中的内容进行导出。可以在处理器读Cache操作后继续将Cache中的内容逐行导出的过程。
如果全部Cache行已经被导出,则一个处理器Cache检查点建立完成,此时保存在压缩器中的Cache内容是导出结束时刻的Cache中的内容。
参见图3所示,本发明实施例在建立Cache检查点的过程中Cache会被分为已导出部分和未导出部分,当更新操作发生在已导出部分时,更新的数据同时保存到压缩器中,对处理器更新Cache操作本身没有任何影响,这样本发明实施例中所导出的Cache数据始终为Cache的最新内容,即建立的Cache检查点为导出结束时刻B时刻的Cache状态,在整个Cache检查点建立过程中,在处理器一直处于正常工作的状态时,没有因为建立Cache检查点中断或推迟处理器的任何操作,建立Cache检查点的过程不存在影响处理器运行的情况,保证了系统的正常运行。
在发明的一些实施例中,本发明实施例建立处理器Cache检查点的方法还可以包括:
当接收到的处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行,则执行处理器读Cache操作,并同时将所述读Cache操作对应的Cache行中的内容进行导出。
也就是说,在对Cache的读写操作为对Cache的读操作时,为了加快导出Cache的速度,在读操作对应的Cache行正好是下一Cache行时,同样对该Cache行中的内容进行导出,也即Cache读操作时原本是需要对Cache导出进行暂停的,但当读操作所对应的Cache行是在下一次即将导出的Cache行时,直接将该行内容导出,在特殊情况下,读操作时也进行了Cache的导出,加快了速度,避免了对Cache内容的重复读取。
参见图4所示,本发明实施例建立处理器Cache检查点的方法实施例二,可以包括以下步骤:
步骤401:在接收外部输入的使能信号时,进入步骤403。
在接收到外部输入的使能信号时,开始判断是否存在对Cache的读写操作。也即在接收到外部的使能信号时,开始建立处理器Cache检查点的过程。
步骤402:判断全部Cache行是否已经被导出,如果是,建立处理器Cache检查点结束,如果否,进入步骤403。
步骤403:判断是否存在对Cache的读写操作,如果是,进入步骤405或步骤408,如果否,进入步骤404。
步骤404:将上一导出Cache行的下一Cache行中的内容导出到压缩器内存储,并返回步骤402。
需要注意的是,在开始判断是否存在对Cache的读写操作后,首次获得不存在对Cache的读写操作的判断结果时,由于还不存在上一导出Cache行,故上一导出Cache行的下一Cache行可以认为就是第一行Cache行。
步骤405:当接收到处理器写Cache信号即存在对Cache的写操作时,检测处理器写Cache操作对应的Cache行是否在Cache的已导出部分,如果是,进入步骤406,如果否,进入步骤407。
步骤406:执行处理器写Cache操作,将处理器写Cache操作写入该Cache行中的内容同时存储到压缩器内存储,并返回步骤402。
步骤407:执行处理器写Cache操作,暂停将Cache中的内容进行导出,并返回步骤402。
步骤408:当接收到处理器读Cache信号即存在对Cache的读操作时,检测处理器读Cache操作对应的Cache行是否是上一导出Cache行的下一Cache行,如果是,进入步骤404,如果否,进入步骤409。
步骤409:执行处理器读Cache操作,暂停将Cache中的内容进行导出,并返回步骤402。
本方法实施例包括了建立Cache检查点的完整过程,当接收到外部输入的使能信号时,开始Cache检查点的建立,在对任一Cache行进行操作后实时判断Cache的当前状态,以决定后续对Cache进行怎样的操作,直到全部Cache行的内容均被导出后,停止导出步骤,一个Cache检查点建立过程完成。
具体的,从本方法实施例中可以看出,当开始建立检查点后,如果处理器处于以下三种情况时,则导出控制器允许保存数据至压缩器中:
第一,处理器不读写Cache,即Cache处于空闲状态,将上一导出Cache行的下一Cache行中的内容导出到压缩器内存储;
第二,处理器处于读Cache操作,同时读取的Cache行与下一被导出的Cache行相同,则将该下一被导出的Cache行即上一导出Cache行的下一Cache行中的内容导出到压缩器内存储;
第三,处理器更新Cache数据,同时更新的Cache行是已导出的Cache行,则将更新的数据同时存储到压缩器内存储。
这样,本发明实施例建立处理器Cache检查点的方法使处理器在正常工作状态时,依然可以实现Cache检查点的建立。
在具体应用中,为了实现本发明实施例建立处理器Cache检查点的方法可以结合处理器Cache架构还可以增加地址生成器、比较器。地址生成器可以用于根据所述导出控制器的控制生成第一地址,第一地址可以认为是当前即将需要导出的Cache行地址;比较器可以用于处理器写Cache操作对应的Cache行地址与当前第一地址的大小,比较所述处理器读Cache操作对应的Cache行地址与当前第一地址的大小,,并将比较结果发送给导出控制器,以判断更新操作是否发生在已导出部分,或者读操作对于的地址是否是即将需要导出的Cache行地址,进一步使导出控制器根据比较器的比较结果、Cache是否处于空闲状态等信息决定是否将数据保存到压缩器中。
具体的,在发明的一些实施例中,本发明实施例建立处理器Cache检查点的方法还可以包括:
控制地址生成器由Cache行地址范围的一端开始生成第一地址。
即在接收到外部输入的使能信号时,建立处理器Cache检测点开始,导出控制器控制地址生成器由Cache的低地址端或高地址端开始生成第一地址,第一地址对应的即为当前需要导出的Cache行地址。每导出一行Cache的内容,则控制地址生成器将当前第一地址变化为下一Cache行地址的地址,例如从低地址端开始生成第一地址,在每导出一行Cache的内容后,第一地址自增至下一Cache行地址,这样将Cache行中的内容导出到压缩器内存储的实现就可以是导出变化后的第一地址对应的Cache行内容。
这样,在本发明的一些实施例中,将Cache中的内容逐行导出的过程具体可以为:将第一地址所对应的Cache行中的内容导出到压缩器内存储,每导出一Cache行后则控制所述地址生成器将第一地址变化为下一Cache行地址。
在本发明的一些实施例中,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分的具体实现可以包括:
接收比较器的比较结果,比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
当地址生成器由Cache行地址范围的低地址端开始生成第一地址时,比较结果为处理器写Cache操作对应的Cache行地址小于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
当地址生成器由Cache行地址范围的高地址端开始生成第一地址时,比较结果为处理器写Cache操作对应的Cache行地址大于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
以地址生成器由Cache行地址范围的低地址端开始生成第一地址为例,在符合导出Cache行内容的情况下,将第一地址对应的Cache行导出后,第一地址自增至下一Cache行地址,重复此过程,这样,Cache的低地址到当前第一地址(不包括当前第一地址)的Cache范围就是已导出部分,则可以判断写操作对应的Cache行地址与当前第一地址的大小,写操作对应的Cache行地址小于当前第一地址时,写操作对应的Cache行在已导出部分,该写操场写入该Cache行的内容需要同时保存到压缩器中。当地址生成器由Cache行地址范围的高地址端开始生成第一地址时,则写操作对应的Cache行地址大于当前第一地址时,代表写操作对应的Cache行在已导出部分。
类似的,在本发明的一些实施例中,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分的具体实现可以包括:
接收比较器的比较结果,比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
当地址生成器由Cache行地址范围的低地址端开始生成第一地址时,比较结果为处理器写Cache操作对应的Cache行地址大于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
当地址生成器由Cache行地址范围的高地址端开始生成第一地址时,比较结果为处理器写Cache操作对应的Cache行地址小于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分。
类似的,在本发明的一些实施例中,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行的具体实现可以包括:
接收比较器的比较结果,比较器还用于比较处理器读Cache操作对应的Cache行地址与当前第一地址的大小;
比较结果为处理器读Cache操作对应的Cache行地址等于当前第一地址,确定处理器读Cache操作对应的Cache行是下一被导出的Cache行。
参见图5所示,本发明实施例建立处理器Cache检查点的方法实施例三,可以包括以下步骤:
步骤501:在接收外部输入的使能信号时,控制地址生成器由Cache的低地址端开始生成第一地址,并进入步骤503。
步骤502:判断全部Cache行是否已经被导出,如果是,建立处理器Cache检查点结束,如果否,进入步骤503。
步骤503:判断是否存在对Cache的读写操作,如果是,进入步骤504,如果否,进入步骤505。
步骤504:检测处理器读写Cache操作的类型,如果存在对Cache的写操作时,进入步骤506,如果存在对Cache的读操作时,进入步骤507。
步骤505:将第一地址所对应的Cache行中的内容导出到压缩器内存储,并控制地址生成器将第一地址增加到下一Cache行地址,返回步骤502。
步骤506:接收比较器的比较结果,判断比较结果是否为处理器写Cache操作对应的Cache行地址小于当前第一地址,如果是,进入步骤508,如果否,进入步骤509。
步骤507:接收比较器的比较结果,判断比较结果是否为处理器读Cache操作对应的Cache行地址等于当前第一地址,如果是,进入步骤505,如果否,进入步骤510。
步骤508:执行处理器写Cache操作,并将写操作写入该Cache行的内容同时存储到压缩器内存储,并返回步骤502。
步骤509:执行处理器写Cache操作,并暂停对Cache行的导出,并返回步骤502。
步骤510:执行处理器读Cache操作,并暂停对Cache行的导出,并返回步骤502。
本方法实施例以地址生成器由Cache的低地址端开始生成第一地址为例,说明了具体在哪些情况下进行Cache内容的导出以及判断条件,进一步的,在不存在对Cache的读写操作即Cache空闲时将第一地址所对应的Cache行中的内容导出到压缩器内存储;在比较器的比较结果为读操作对应的Cache行地址等于当前第一地址时将第一地址所对应的Cache行中的内容导出到压缩器内存储;在比较器的比较结果为写操作对应的Cache行地址小于当前第一地址时,将写操作写入该Cache行的内容同时存储到压缩器内存储,以实现Cache检查点的建立。
类似的,地址生成器由Cache的高地址端开始生成第一地址,则在不存在对Cache的读写操作即Cache空闲时将第一地址所对应的Cache行中的内容导出到压缩器内存储;在比较器的比较结果为读操作对应的Cache行地址等于当前第一地址时将第一地址所对应的Cache行中的内容导出到压缩器内存储;在比较器的比较结果为写操作对应的Cache行地址大于当前第一地址时,将写操作写入该Cache行的内容同时存储到压缩器内存储,以实现Cache检查点的建立。
这样,本发明实施例从检查点建立时刻起,在不存在对Cache的读写操作即Cache空闲状态时,逐行导出Cache中的内容到压缩器内存储,在Cache不空闲时,暂停Cache导出过程,但当对Cache进行写操作即发生Cache更新操作时,且更新操作发生在Cache的已导出部分,更新的数据需要同时存储到压缩器内,这样导出到压缩器中的数据是每一Cache行内的最新数据,建立的Cache检查点是建立过程结束时刻的Cache状态。在整个Cache检查点建立过程中,在处理器一直处于正常工作的状态时,没有因为建立Cache检查点中断或推迟处理器的任何操作,建立Cache检查点的过程不存在影响处理器运行的情况,保证了系统的正常运行。
相应的,参见图6所示,本发明实施例建立处理器Cache检查点的装置实施例一,可以包括:
接收单元601,用于在将Cache中的内容逐行导出的过程中,接收处理器写Cache信号或者接收处理器读Cache信号。
第一确定单元602,用于在接收单元接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
第一处理单元603,用于在第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,执行处理器写Cache操作。
第一导出单元604,用于在第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,将写Cache操作写入Cache行中的内容进行导出。
第二确定单元605,用于在接收单元接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分。
第二处理单元606,用于在第二确定单元检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分时,执行处理器写Cache操作,并暂停将Cache中的内容进行导出。
第三处理单元607,用于在接收单元接收到处理器读Cache信号时,执行处理器读Cache操作,并暂停将Cache中的内容进行导出。
在本发明的一些实施例中,本发明实施例建立处理器Cache检查点的装置还可以包括:
第三确定单元,用于在接收单元接收到处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行;
第四处理单元,用于在第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,执行处理器读Cache操作;
第二导出单元,用于在第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,将读Cache操作对应的Cache行中的内容进行导出。
参见图7所示,本发明实施例建立处理器Cache检查点的装置实施例二,可以包括:
接收单元701,用于接收处理器写Cache信号或者接收处理器读Cache信号。
第一判断单元702,用于判断是否全部Cache行已经被导出,如果第一判断单元的判断结果为全部Cache行已经被导出,则建立处理器Cache检查点结束,如果第一判断单元的判断结果为Cache行没有被全部导出,则进入第二判断单元判断是否存在对Cache的读写操作。
第二判断单元703,用于根据是否接收单元接收到的处理器写Cache信号或者接收处理器读Cache信号判断是否存在对Cache的读写操作。
第三导出单元704,用于如果第二判断单元的判断结果为不存在对Cache的读写操作时,将上一导出Cache行的下一Cache行中的内容导出到压缩器内存储,并进入第一判断单元。
第一确定单元705,在接收单元接收到处理器写Cache信号使第二判断单元的判断结果为存在对Cache的写操作时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
第一处理单元706,用于在第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,执行处理器写Cache操作。
第一导出单元707,用于在第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,将写Cache操作写入Cache行中的内容进行导出,并进入第一判断单元;
第二确定单元708,用于在接收单元接收到处理器写Cache信号使第二判断单元的判断结果为存在对Cache的写操作时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
第二处理单元709,用于在第二确定单元检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分时,执行处理器写Cache操作,并暂停将Cache中的内容进行导出,并进入第一判断单元;
第三确定单元710,用于在接收单元接收到处理器读Cache信号使第二判断单元的判断结果为存在对Cache的读操作时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行;
第四处理单元711,用于在第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,执行处理器读Cache操作;
第二导出单元712,用于在第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,将读Cache操作对应的Cache行中的内容进行导出,并进入第一判断单元。
第四确定单元713,用于在接收单元接收到处理器读Cache信号使第二判断单元的判断结果为存在对Cache的读操作时,检测确定处理器读Cache操作对应的Cache行不是下一被导出的Cache行;
第三处理单元714,用于第四确定单元检测确定处理器读Cache操作对应的Cache行不是下一被导出的Cache行,执行处理器读Cache操作,暂停将Cache中的内容进行导出。
在本发明的一些实施例中,本发明实施例建立处理器Cache检查点的装置还可以包括:
控制单元,用于控制地址生成器由Cache行地址范围的一端开始生成第一地址。
在本发明的一些实施例中,将Cache中的内容逐行导出的过程具体为:将控制单元控制地址生成器生成的第一地址所对应的Cache行中的内容导出到压缩器内存储,每导出一Cache行后则控制单元控制地址生成器将第一地址变化为下一Cache行地址。
在本发明的一些实施例中,第一确定单元可以包括:
接收子单元,用于接收比较器的比较结果,比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
第一确定子单元,用于当地址生成器由Cache行地址范围的低地址端开始生成第一地址时,接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址小于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
第二确定子单元,用于当地址生成器由Cache行地址范围的高地址端开始生成第一地址时,接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址大于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
在本发明的一些实施例中,第二确定单元可以包括:
接收子单元,用于接收比较器的比较结果,比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
第三确定子单元,用于当地址生成器由Cache行地址范围的低地址端开始生成第一地址时,接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址大于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
第四确定子单元,用于当地址生成器由Cache行地址范围的高地址端开始生成第一地址时,接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址小于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分。
在本发明的一些实施例中,第三确定单元可以包括:
接收子单元,用于接收比较器的比较结果,比较器还用于比较处理器读Cache操作对应的Cache行地址与当前第一地址的大小;
第五确定子单元,用于接收子单元接收的比较结果为处理器读Cache操作对应的Cache行地址等于当前第一地址,确定处理器读Cache操作对应的Cache行是下一被导出的Cache行。
这样,本发明实施例从检查点建立时刻起,在不存在对Cache的读写操作即Cache空闲状态时,逐行导出Cache中的内容到压缩器内存储,在Cache不空闲时,暂停Cache导出过程,但当对Cache进行写操作即发生Cache更新操作时,且更新操作发生在Cache的已导出部分,更新的数据需要同时存储到压缩器内,这样导出到压缩器中的数据是每一Cache行内的最新数据,建立的Cache检查点是建立过程结束时刻的Cache状态。在整个Cache检查点建立过程中,在处理器一直处于正常工作的状态时,没有因为建立Cache检查点中断或推迟处理器的任何操作,建立Cache检查点的过程不存在影响处理器运行的情况,保证了系统的正常运行。
相应的,参见图8所示,本发明实施例建立处理器Cache检查点的系统实施例一,可以包括:
导出控制器801,可以是上述的建立处理器Cache检查点的装置实施例。
地址生成器802,用于根据导出控制器的控制生成第一地址;
比较器803,用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小,比较处理器读Cache操作对应的Cache行地址与当前第一地址的大小,并将比较结果发送给导出控制器;
压缩器804,用于存储Cache行的内容。
本系统实施例的工作原理是:
导出控制器在接收外部输入的使能信号时,控制地址生成器由Cache行地址范围的一端开始生成第一地址,并判断是否存在对Cache的读写操作;
如果不存在对Cache的读写操作时,将第一地址所对应的Cache行中的内容导出到压缩器内存储,并控制地址生成器将第一地址变化为下一Cache行地址,判断全部Cache行是否已经被导出;如果全部Cache行已经被导出,则建立处理器Cache检查点结束,如果Cache行没有被全部导出,继续判断是否存在对Cache的读写操作;如果存在对Cache的读写操作时,判断读写操作的类型;
如果对Cache的读写操作为对Cache的写操作,接收比较器的比较结果,判断比较结果是否为写操作对应的Cache行是已导出的Cache行;如果对Cache的读写操作为对Cache的读操作,接收比较器的比较结果,判断比较器的比较结果是否为读操作对应的Cache行地址等于当前第一地址;
如果比较器的比较结果为写操作对应的Cache行是已导出的Cache行,将写操作写入该Cache行的内容同时存储到压缩器内存储,返回判断全部Cache行是否已经被导出;如果比较器的比较结果为写操作对应的Cache行不是已导出的Cache行,暂停对Cache行的导出,返回判断全部Cache行是否已经被导出;
如果比较器的比较结果为读操作对应的Cache行地址等于当前第一地址,并控制地址生成器将第一地址变化为下一Cache行地址,返回判断全部Cache行是否已经被导出;如果比较器的比较结果为读操作对应的Cache行地址不等于当前第一地址,暂停对Cache行的导出,返回判断全部Cache行是否已经被导出。
也就是说,在将Cache中的内容逐行导出的过程中,当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分,则执行处理器写Cache操作,并同时将写Cache操作写入Cache行中的内容进行导出。
当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,则执行处理器写Cache操作,并暂停将Cache中的内容进行导出。
当接收到的处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行,则执行处理器读Cache操作,并同时将读Cache操作对应的Cache行中的内容进行导出。
当接收到处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行不是下一被导出的Cache行,执行处理器读Cache操作,并暂停将Cache中的内容进行导出。
这样,可以实现将导出结束时刻的Cache状态导出到压缩器中存储。
参见图9所示,是本发明实施例建立处理器Cache检查点的系统实施例二,在实际应用中,结合具体的Cache结构,本发明实施例增加的硬件模块包括地址生成器、比较器、导出控制器、压缩器以及若干个选择器。
在实际应用中,当Dump_enable使能信号有效,系统使能了Cache检查点建立,开始建立Cache检查点,导出控制器控制地址生成器开始生成第一地址(以从低地址端生成第一地址为例);
导出控制器接收处理器访存单元(LSQ)发出的Valid信号,判断是否存在对Cache的读写操作;
当Valid信号无效时,代表Cache空闲,导出控制器向压缩器发送使能Dump信号,通过Addr_sel信号选择地址生成器生成的第一地址作为Cache读写地址,将地址生成器生成的第一地址对应的Cache行内容导出到压缩器,导出数据包括该Cache行内的Tag、Valid、Data等全部数据,然后控制地址生成器自增到下一Cache地址。如果Cache仍空闲,重复上述过程;
当Valid信号有效时,代表Cache不空闲,导出控制器无效Dump信号,暂停导出过程。但当检测到以下两种情况发生时,导出控制器使能Dump信号,导出相应数据:
第一,接收LSQ发送的写信号Wr或者读信号Rw,以判断读写操作的类型,当为处理器更新已导出部分的Cache时,即Wr信号有效,同时接收比较器Cpr_res信号,当第一地址小于Cache的读写地址Address时,同时将更新的数据导出到压缩器中;
第二,当为读操作时,接收比较器Cpr_res信号,当Cache的读写地址Address等于第一地址时,将第一地址对应的Cache行内容导出到压缩器内存储;
具体的,导出控制器发出Dsel信号,选择压缩器的数据来源,当将更新的数据存储到压缩器中时,利用Dsel信号控制选择ND数据流;当将Cache的数据导出到压缩器中时,利用Dsel信号控制选择Cache的数据流;
当地址生成器达到地址最大值时,导出结束,Cache此时刻的状态全部存储在压缩器中,一个Cache检查点建立过程完成。
其中,LSQ(load store queue,访存队列)其作用就是缓存处理器对于Cache的访存操作,并将访存操作发送到Cache,在本发明实施例中,LSQ的作用是向Cache发送读写命令,以使能相应的Wr或Rw信号,在Wr写使能信号有效时,送入写数据,在Rw读使能信号有效时,读出数据。
另外,FSM(Finite State Machine,有限状态机),其相当于Cache的控制器模块,用于生成各种Cache控制信号,并与其它模块(LSQ和内存Mem)进行交互。Full信号用于标示压缩器存储空间是否已满,如果存储空间已满,则不能继续存储新数据。
这样,本发明实施例从检查点建立时刻起,在处理器不存在对Cache的读写操作即Cache空闲状态时,逐行导出Cache中的内容到压缩器内存储,在Cache不空闲时,暂停Cache导出过程,但当对Cache进行写操作即发生Cache更新操作时,且更新操作发生在Cache的已导出部分,更新的数据需要同时存储到压缩器内,这样导出到压缩器中的数据是每一Cache行内的最新数据,建立的Cache检查点是建立过程结束时刻的Cache状态。在整个Cache检查点建立过程中,在处理器一直处于正常工作的状态时,没有因为建立Cache检查点中断或推迟处理器的任何操作,建立Cache检查点的过程不存在影响处理器运行的情况,保证了系统的正常运行。
同时,当系统发生故障(例如软错误)后,需要进行故障恢复,回滚到上一个无故障的检查点。保存的Cache检查点可以快速的恢复Cache的状态,使得系统能够最快的恢复到正常运行,避免发生大量的Cache miss,提高访存效率。同样在状态迁移,即将一个处理器的状态迁移到另一个处理器,Cache状态的恢复也可以使处理器快速的恢复局部性,能够直接从Cache中获得所需数据,提高了迁移的效率。
Cache检查点中保存了处理器最近使用的数据,这些数据对于了解程序的运行和系统的状态都很重要,因此可用于系统的检错,纠错,故障恢复和故障诊断。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种建立处理器Cache检查点的方法,其特征在于,所述方法包括:
在将Cache中的内容逐行导出的过程中,当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分,则执行处理器写Cache操作,并同时将所述写Cache操作写入Cache行中的内容进行导出;
当接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,则执行处理器写Cache操作,并暂停将Cache中的内容进行导出;
当接收到处理器读Cache信号时,执行处理器读Cache操作,并暂停将Cache中的内容进行导出。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到的处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行,则执行处理器读Cache操作,并同时将所述读Cache操作对应的Cache行中的内容进行导出。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
控制地址生成器由Cache行地址范围的一端开始生成第一地址。
4.根据权利要求3所述的方法,其特征在于,所述将Cache中的内容逐行导出的过程具体为:将所述第一地址所对应的Cache行中的内容导出到压缩器内存储,每导出一Cache行后则控制所述地址生成器将第一地址变化为下一Cache行地址。
5.根据权利要求4所述的方法,其特征在于,所述检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分,包括:
接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址小于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址大于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
6.根据权利要求4所述的方法,其特征在于,所述检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分,包括:
接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址大于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述比较结果为处理器写Cache操作对应的Cache行地址小于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分。
7.根据权利要求4所述的方法,其特征在于,所述检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行,包括:
接收比较器的比较结果,所述比较器还用于比较所述处理器读Cache操作对应的Cache行地址与当前第一地址的大小;
所述比较结果为处理器读Cache操作对应的Cache行地址等于当前第一地址,确定处理器读Cache操作对应的Cache行是下一被导出的Cache行。
8.一种建立处理器Cache检查点的装置,其特征在于,所述装置包括:
接收单元,用于在将Cache中的内容逐行导出的过程中,接收处理器写Cache信号或者接收处理器读Cache信号;
第一确定单元,用于在所述接收单元接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
第一处理单元,用于在所述第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,执行处理器写Cache操作;
第一导出单元,用于在所述第一确定单元检测确定处理器写Cache操作对应的Cache行在Cache的已导出部分时,将所述写Cache操作写入Cache行中的内容进行导出;
第二确定单元,用于在所述接收单元接收到处理器写Cache信号时,检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
第二处理单元,用于在所述第二确定单元检测确定处理器写Cache操作对应的Cache行在Cache的未导出部分时,执行处理器写Cache操作,并暂停将Cache中的内容进行导出;
第三处理单元,用于在所述接收单元接收到处理器读Cache信号时,执行处理器读Cache操作,并暂停将Cache中的内容进行导出。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第三确定单元,用于在所述接收单元接收到处理器读Cache信号时,检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行;
第四处理单元,用于在所述第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,执行处理器读Cache操作;
第二导出单元,用于在所述第三确定单元检测确定处理器读Cache操作对应的Cache行是下一被导出的Cache行时,将所述读Cache操作对应的Cache行中的内容进行导出。
10.根据权利要求8或9所述的装置,其特征在于,所述装置还包括:
控制单元,用于控制地址生成器由Cache行地址范围的一端开始生成第一地址。
11.根据权利要求10所述的装置,其特征在于,所述将Cache中的内容逐行导出的过程具体为:将所述控制单元控制地址生成器生成的第一地址所对应的Cache行中的内容导出到压缩器内存储,每导出一Cache行后则所述控制单元控制所述地址生成器将第一地址变化为下一Cache行地址。
12.根据权利要求11所述的装置,其特征在于,所述第一确定单元包括:
接收子单元,用于接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
第一确定子单元,用于当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址小于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分;
第二确定子单元,用于当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址大于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的已导出部分。
13.根据权利要求11所述的装置,其特征在于,所述第二确定单元包括:
接收子单元,用于接收比较器的比较结果,所述比较器用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小;
第三确定子单元,用于当所述地址生成器由Cache行地址范围的低地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址大于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分;
第四确定子单元,用于当所述地址生成器由Cache行地址范围的高地址端开始生成第一地址时,所述接收子单元接收到的比较结果为处理器写Cache操作对应的Cache行地址小于或等于当前第一地址,确定处理器写Cache操作对应的Cache行在Cache的未导出部分。
14.根据权利要求11所述的装置,其特征在于,所述第三确定单元包括:
接收子单元,用于接收比较器的比较结果,所述比较器还用于比较所述处理器读Cache操作对应的Cache行地址与当前第一地址的大小;
第五确定子单元,用于所述接收子单元接收的比较结果为处理器读Cache操作对应的Cache行地址等于当前第一地址,确定处理器读Cache操作对应的Cache行是下一被导出的Cache行。
15.一种建立处理器Cache检查点的系统,其特征在于,所述系统包括:
导出控制器,是权利要求8-14任一项所述的建立处理器Cache检查点的装置;
地址生成器,用于根据所述导出控制器的控制生成第一地址;
比较器,用于比较处理器写Cache操作对应的Cache行地址与当前第一地址的大小,比较所述处理器读Cache操作对应的Cache行地址与当前第一地址的大小,并将比较结果发送给所述导出控制器;
压缩器,用于存储Cache行的内容。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310662178.8A CN104699574B (zh) | 2013-12-09 | 2013-12-09 | 一种建立处理器Cache检查点的方法、装置及系统 |
PCT/CN2014/093230 WO2015085891A1 (zh) | 2013-12-09 | 2014-12-08 | 一种建立处理器Cache检查点的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310662178.8A CN104699574B (zh) | 2013-12-09 | 2013-12-09 | 一种建立处理器Cache检查点的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699574A true CN104699574A (zh) | 2015-06-10 |
CN104699574B CN104699574B (zh) | 2018-04-20 |
Family
ID=53346734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310662178.8A Active CN104699574B (zh) | 2013-12-09 | 2013-12-09 | 一种建立处理器Cache检查点的方法、装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104699574B (zh) |
WO (1) | WO2015085891A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066707A (zh) * | 2017-03-27 | 2017-08-18 | 中国科学院计算技术研究所 | 一种使用快照的可调试性设计追踪方法及装置 |
CN107103116A (zh) * | 2017-03-27 | 2017-08-29 | 中国科学院计算技术研究所 | 一种复用追踪缓存的触发装置及设计方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527697A (zh) * | 2020-05-11 | 2021-03-19 | 大唐半导体科技有限公司 | Cache RAM与Retention RAM数据交换控制器及实现方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1175732A (zh) * | 1996-09-04 | 1998-03-11 | 株式会社东芝 | 检查点处理加速装置 |
US5748985A (en) * | 1993-06-15 | 1998-05-05 | Hitachi, Ltd. | Cache control method and cache controller |
JP2000330729A (ja) * | 1999-05-18 | 2000-11-30 | Toshiba Corp | オンラインバックアップ機能を持つディスクアレイシステム |
US6584581B1 (en) * | 1999-12-06 | 2003-06-24 | Ab Initio Software Corporation | Continuous flow checkpointing data processing |
CN1704903A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种快照备份的方法 |
CN1996268A (zh) * | 2006-12-28 | 2007-07-11 | 北京时代民芯科技有限公司 | 一种片上指令cache的实现方法 |
CN101118519A (zh) * | 2007-09-10 | 2008-02-06 | 杭州华三通信技术有限公司 | 对缓存内容进行保护的方法和装置以及缓存控制器 |
CN102473156A (zh) * | 2009-08-20 | 2012-05-23 | 国际商业机器公司 | 推测版本控制高速缓存内的检查点 |
-
2013
- 2013-12-09 CN CN201310662178.8A patent/CN104699574B/zh active Active
-
2014
- 2014-12-08 WO PCT/CN2014/093230 patent/WO2015085891A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748985A (en) * | 1993-06-15 | 1998-05-05 | Hitachi, Ltd. | Cache control method and cache controller |
CN1175732A (zh) * | 1996-09-04 | 1998-03-11 | 株式会社东芝 | 检查点处理加速装置 |
JP2000330729A (ja) * | 1999-05-18 | 2000-11-30 | Toshiba Corp | オンラインバックアップ機能を持つディスクアレイシステム |
US6584581B1 (en) * | 1999-12-06 | 2003-06-24 | Ab Initio Software Corporation | Continuous flow checkpointing data processing |
CN1704903A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种快照备份的方法 |
CN1996268A (zh) * | 2006-12-28 | 2007-07-11 | 北京时代民芯科技有限公司 | 一种片上指令cache的实现方法 |
CN101118519A (zh) * | 2007-09-10 | 2008-02-06 | 杭州华三通信技术有限公司 | 对缓存内容进行保护的方法和装置以及缓存控制器 |
CN102473156A (zh) * | 2009-08-20 | 2012-05-23 | 国际商业机器公司 | 推测版本控制高速缓存内的检查点 |
Non-Patent Citations (1)
Title |
---|
RADU TEODORESCU 等: "SWICH: A PROTOTYPE FOR EFFICIENT CACHE-LEVEL CHECKPOINTING AND ROLLBACK", 《IEEE MICRO》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066707A (zh) * | 2017-03-27 | 2017-08-18 | 中国科学院计算技术研究所 | 一种使用快照的可调试性设计追踪方法及装置 |
CN107103116A (zh) * | 2017-03-27 | 2017-08-29 | 中国科学院计算技术研究所 | 一种复用追踪缓存的触发装置及设计方法 |
CN107066707B (zh) * | 2017-03-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种使用快照的可调试性设计追踪方法及装置 |
CN107103116B (zh) * | 2017-03-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种复用追踪缓存的触发装置及设计方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015085891A1 (zh) | 2015-06-18 |
CN104699574B (zh) | 2018-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10509730B2 (en) | Aggregation of write traffic to a data store | |
TWI596480B (zh) | 記憶體儲存系統及其中控裝置、管理方法與斷電復原方法 | |
US10146627B2 (en) | Mobile flash storage boot partition and/or logical unit shadowing | |
US7921339B2 (en) | Flash storage device with data correction function | |
US20100070729A1 (en) | System and method of managing metadata | |
TW201916018A (zh) | 資料儲存裝置與將資料寫入記憶體裝置之方法 | |
US20100235568A1 (en) | Storage device using non-volatile memory | |
CN103871447A (zh) | 与非门快闪存储器阵列及芯片及其存取、读取及管理方法 | |
US10423343B2 (en) | Information processing device and memory controller | |
JP2006252530A (ja) | ディスクライト抜け検出装置およびディスクライト抜け検出方法 | |
US9710378B2 (en) | Writing an address conversion table for nonvolatile memory wear leveling | |
US10324782B1 (en) | Hiccup management in a storage array | |
EP4031971A1 (en) | Incrementally updating recovery map data for a memory system | |
KR20210024188A (ko) | 기입 버퍼 관리 | |
CN104699574A (zh) | 一种建立处理器Cache检查点的方法、装置及系统 | |
US11176037B2 (en) | Wear leveling in a memory system | |
JP2004252525A (ja) | エミュレータおよびプログラム | |
US20240004745A1 (en) | Pausing memory system based on critical event | |
TWI704454B (zh) | 固態儲存裝置的對應表管理方法 | |
US20210374065A1 (en) | Effective avoidance of line cache misses | |
CN103116484A (zh) | 指令处理方法及设备 | |
CN101694781A (zh) | 一种高效bch解码纠错电路 | |
JP2013214172A (ja) | デバッグ検証装置、デバッグ検証方法、及びそのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |