CN106502810A - 一种高速缓冲存储器的故障检测方法及装置 - Google Patents

一种高速缓冲存储器的故障检测方法及装置 Download PDF

Info

Publication number
CN106502810A
CN106502810A CN201610816291.0A CN201610816291A CN106502810A CN 106502810 A CN106502810 A CN 106502810A CN 201610816291 A CN201610816291 A CN 201610816291A CN 106502810 A CN106502810 A CN 106502810A
Authority
CN
China
Prior art keywords
memory cell
memory
data
internal memory
write
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
Application number
CN201610816291.0A
Other languages
English (en)
Other versions
CN106502810B (zh
Inventor
孙建
张鸣
张彦龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610816291.0A priority Critical patent/CN106502810B/zh
Publication of CN106502810A publication Critical patent/CN106502810A/zh
Application granted granted Critical
Publication of CN106502810B publication Critical patent/CN106502810B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system

Abstract

一种高速缓冲存储器的故障检测方法和装置,用以实现对高速缓冲存储器中的写逻辑电路与读逻辑电路之间干扰故障的检测。方法包括:将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与目的内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元;当目的内存中写入第二数据的至少一个存储单元中存在一个存储单元,该一个存储单元存储的数据与按照一一对应关系该一个存储单元对应的源内存中的一个存储单元存储的数据不一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。

Description

一种高速缓冲存储器的故障检测方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种高速缓冲存储器的故障检测方法及装置。
背景技术
高速缓冲存储器(Cache)是位于中央处理器(Central Processing Unit,CPU)和主存储器之间的存储器,Cache的容量较小,但是数据传输速度很快。由于CPU的处理速度远大于主存储器的数据传输速度,因此CPU直接从主存储器中存取数据时需要较长的等待时间。Cache可以保存CPU刚刚使用或循环使用的部分数据,当CPU需要再次使用该部分数据时可直接从Cache中调用,这样就避免了重复存取数据,减少了CPU的等待时间,提高了系统效率。
高速缓冲存储器可分为一级高速缓冲存储器(L1Cache)、二级高速缓冲存储器(L2Cache)或者更高级别的高速缓冲存储器。
以如图1所示的CPU、L1Cache、L2Cache与主存储器之间的连接关系为例,L2Cache是计算机系统中必不可少的存储器,L2Cache的存取速度比L1Cache的存取速度慢,但L2Cache的容量比L1Cache的容量大,可用于L1Cache和主存储器的数据交换。L2Cache存在故障时会导致系统复位,因而需要对L2Cache进行故障检测。
L2Cache的内部逻辑结构可如图2所示,图2中,L201表示主存储器通过写逻辑电路向L2Cache传输数据的过程,L202表示L2Cache通过读逻辑电路向L1Cache传输数据的过程。现有技术中只存在对L2Cache的内部存储单元的故障检测方法,针对L2Cache中写逻辑电路与读逻辑电路同时存在数据传输的场景,现有技术中没有检测写逻辑电路与读逻辑电路之间干扰故障的方法,比如写逻辑电路与读逻辑电路之间存在干扰故障时会导致L2Cache传输的数据发生比特位跳变现象。
综上,目前没有检测L2Cache或者更高级别的高速缓冲存储器中写逻辑电路与读逻辑电路之间干扰故障的技术方案。
发明内容
本发明实施例提供一种高速缓冲存储器的故障检测方法及装置,用以实现对高速缓冲存储器中的写逻辑电路与读逻辑电路之间干扰故障的检测,该高速缓冲存储器可以为L2Cache或者更高级别的高速缓冲存储器。
第一方面,本发明实施例提供一种高速缓冲存储器的故障检测方法,该方法包括如下步骤:
将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元中存储的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,再将第二数据写入到目的内存的至少一个存储单元中;当目的内存中执行过上述写入第二数据操作的存储单元中存在一个存储单元,该存储单元存储的数据与该存储单元对应的源内存中的存储单元中存储的数据不一致时,则可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
其中,源内存中的初始化数据包括第二数据。目的内存的至少一个存储单元与源内存的至少一个存储单元存在一一对应关系,即目的内存中的至少一个存储单元的数量与源内存中的至少一个存储单元的数量相同,且目的内存的至少一个存储单元与源内存的至少一个存储单元是一一对应的:按照上述一一对应关系,目的内存的任意一个存储单元与该任意一个存储单元对应的源内存中的存储单元映射在高速缓冲存储器中的不同的存储单元。将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
采用上述方案,由于将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,相当于通过高速缓冲存储器中的写逻辑电路向目的内存的至少一个存储单元写入第一数据的过程,与通过高速缓冲存储器中的读逻辑电路读取源内存中至少一个存储单元的第二数据的过程存在时间重叠。因此,如果高速缓冲存储器中的写逻辑电路与读逻辑电路间存在干扰故障,则向目的内存的至少一个存储单元中写入的第一数据和从源内存的至少一个存储单元中读取的第二数据会产生比特位跳变。
上述方案中,在读取源内存中的至少一个存储单元的第二数据后,又将读取到的第二数据写入了目的内存的至少一个存储单元,那么目的内存的至少一个存储单元中存储的数据即为读取到的第二数据。由于高速缓冲存储器中的写逻辑电路与读逻辑电路间存在干扰故障时,从源内存的至少一个存储单元中读取的第二数据会产生比特位跳变,因而会导致读取到的第二数据与源内存的至少一个存储单元中原本存储的数据不同,即导致目的内存的至少一个存储单元中存储的第二数据与源内存的至少一个存储单元中原本存储的数据不同。
因此,采用上述方案,可以通过比较目的内存的至少一个存储单元中存储的数据与源内存中至少一个存储单元存储的数据是否相同来判断高速缓冲存储器中的写逻辑电路与读逻辑电路间是否存在干扰故障,即当目的内存中执行过上述写入第二数据操作的存储单元中存在一个存储单元,该存储单元存储的数据与该存储单元对应的源内存中的存储单元中存储的数据不一致时,可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
上述第一方面中,实现将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠的实现方式有多种,比如通过定时器实现或者通过计数器实现。以通过定时器实现的方式为例,包括:在将第一数据写入目的内存的至少一个存储单元时启动定时器;当定时器的当前时长为零时,读取源内存的至少一个存储单元的第二数据;其中,定时器设置的时长满足:将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
在一种可能的实现方式中,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,可以有多种情况,例如:第一种情况,在将第一数据写入目的内存的至少一个存储单元的过程中,发生读取源内存中至少一个存储单元的第二数据的过程;第二种情况,在将第一数据写入目的内存的至少一个存储单元的过程中开始读取源内存中至少一个存储单元的第二数据的过程,但在将第一数据写入目的内存的至少一个存储单元的过程结束时,读取源内存中至少一个存储单元的第二数据的过程还未结束。
针对上述第一种情况,由于在发生将第一数据写入目的内存的至少一个存储单元的过程中发生读取源内存中的至少一个存储单元的第二数据的过程,因而两个过程的发生时间重叠的时间最长,从而发生写逻辑电路与读逻辑电路间的干扰故障的可能性最大,能更准确地检测高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障。
在一种可能的实现方式中,当目的内存中写入第二数据的至少一个存储单元中的每个存储单元存储的数据,与按照一一对应关系每个存储单元对应的源内存中的每个存储单元存储的数据均一致时,则可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间不存在干扰故障。
在一种可能的实现方式中,将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元,可通过以下方式实现:
分别将目的内存的至少一个存储单元中的任意一个存储单元作为目的内存的当前存储单元,并将目的内存的当前存储单元对应的源内存的至少一个存储单元中的一个存储单元作为源内存的当前存储单元,针对每个目的内存的当前存储单元和源内存的当前存储单元执行如下步骤:将第一子数据写入目的内存的当前存储单元,读取源内存的当前存储单元的第二子数据,并将第二子数据写入目的内存的当前存储单元。
其中,写入目的内存的至少一个存储单元中的每个存储单元的第一子数据组成第一数据,读取源内存的至少一个存储单元中的每个存储单元的第二子数据组成第二数据。
上述可能的实现方式中,通过循环执行在目的内存的当前存储单元中写入第一子数据、读取源内存中当前存储单元的第二子数据、在目的内存的当前存储单元中写入第二子数据的过程,可以使得写逻辑电路与读逻辑电路同时存在数据传输这一场景发生的次数等于目的内存中执行过写入第二子数据的存储单元的个数(也就是源内存中执行过读取第二子数据的存储单元的个数)。在具体实现时,仅需保证多次循环执行上述过程后,目的内存的至少一个存储单元中的每个存储单元均执行过写入第一子数据和写入第二子数据的过程即可,对于目的内存的至少一个存储单元中哪个存储单元先执行,哪个存储单元后执行不做限制;同样地,仅需保证多次循环执行上述过程后,源内存的至少一个存储单元中的每个存储单元均执行过过读取第二子数据的过程即可,对于源内存的至少一个存储单元中哪个存储单元先执行,哪个存储单元后执行不做限制。
采用上述方案,由于高速缓冲存储器中的写逻辑电路与读逻辑电路同时存在数据传输这一场景发生的次数等于目的内存中执行过写入第二子数据的存储单元的个数(也就是源内存中执行过读取第二子数据的存储单元的个数),因而可以更充分地检测高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障,检测结果更准确,检测效果更好。
在一种可能的实现方式中,目的内存中的初始化数据和源内存中的初始化数据互相取反。
具体实现时,目的内存中的初始化数据和源内存中的初始化数据互相取反的一种可能的实现方式是:在将第一数据写入目的内存的至少一个存储单元之前,高速缓冲存储器的故障检测方法还包括:将目的内存的初始化数据写入目的内存的至少一个存储单元;对目的内存的初始化数据取反操作得到源内存的初始化数据,按照一一对应关系将源内存的初始化数据写入源内存的至少一个存储单元。
采用上述方案,如果在执行高速缓冲存储器的故障检测方法时,如果在数据读写过程中某个比特位发生了漏读或漏写,那么在比较源内存中存在比特位漏读或漏写情况的存储单元存储的数据与该存储单元对应的目的内存的存储单元存储的数据时,由于这两个存储单元的初始化数据本就互相取反,因而在进行数据比较时这两个存储单元的数据不可能完全一致,从而可以检测出写逻辑电路和读逻辑电路间存在干扰故障。
需要说明的是,写入初始化数据的操作可以视为高速缓冲存储器的故障检测方法的前期准备步骤,与计算机领域传统的初始化操作的含义不同。
在一种可能的实现方式中,上述故障检测方法可以应用于二级高速缓冲存储器或者三级高速缓冲存储器,或者应用于随时技术发展出现的更高级别的高速缓冲存储器。
第二方面,本发明实施例提供一种高速缓冲存储器的故障检测装置,该装置包括数据读写单元和故障检测单元。其中,
数据读写单元,用于将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元。
其中,源内存中的初始化数据包括第二数据;目的内存的至少一个存储单元与源内存的至少一个存储单元存在一一对应关系,即目的内存的至少一个存储单元的数量与源内存的至少一个存储单元的数量相同,且目的内存的至少一个存储单元与源内存的至少一个存储单元是一一对应的。按照上述一一对应关系,目的内存的任意一个存储单元与该任意一个存储单元对应的源内存中的存储单元映射在高速缓冲存储器中的不同的存储单元;特别地,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
故障检测单元,用于当目的内存中数据读写单元写入第二数据的至少一个存储单元中存在一个存储单元,该存储单元存储的数据与按照一一对应关系该存储单元对应的源内存中的存储单元存储的数据不一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
采用上述方案,由于将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,相当于通过高速缓冲存储器中的写逻辑电路向目的内存的至少一个存储单元写入第一数据的过程,与通过高速缓冲存储器中的读逻辑电路读取源内存中至少一个存储单元的第二数据的过程存在时间重叠。因此,如果高速缓冲存储器中的写逻辑电路与读逻辑电路间存在干扰故障,则数据读写单元向目的内存的至少一个存储单元中写入的第一数据和从源内存的至少一个存储单元中读取的第二数据会产生比特位跳变。
上述方案中,在数据读写单元读取源内存中的至少一个存储单元的第二数据后,又将读取到的第二数据写入了目的内存的至少一个存储单元,那么目的内存的至少一个存储单元中存储的数据即为读取到的第二数据。由于高速缓冲存储器中的写逻辑电路与读逻辑电路间存在干扰故障时,数据读写单元从源内存的至少一个存储单元中读取的第二数据会产生比特位跳变,因而会导致数据读写单元读取到的第二数据与源内存的至少一个存储单元中原本存储的数据不同,即导致目的内存的至少一个存储单元中存储的第二数据与源内存的至少一个存储单元中原本存储的数据不同。
因此,故障检测单元可以通过比较目的内存的至少一个存储单元中存储的数据与源内存中至少一个存储单元存储的数据是否相同来判断高速缓冲存储器中的写逻辑电路与读逻辑电路间是否存在干扰故障:当目的内存中执行过上述写入第二数据操作的存储单元中存在一个存储单元,该存储单元存储的数据与该存储单元对应的源内存中的存储单元中存储的数据不一致时,故障检测单元可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
在一种可能的实现方式中,数据读写单元在将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据时,可采用以下方式实现:启动定时器,并将第一数据写入目的内存的至少一个存储单元;当定时器的当前时长为零时,读取源内存中的至少一个存储单元的第二数据;其中,定时器设置的时长满足:将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
采用上述方案,通过设置定时器来实现第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。除了通过设置定时器来实现两个过程的时间重叠,还可通过计数器来实现两个过程的时间重叠,具体实现方式在此不再赘述。
在一种可能的实现方式中,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,可以有多种情况,例如:第一种情况,在将所述第一数据写入目的内存的至少一个存储单元的过程中,发生读取所述源内存中至少一个存储单元的第二数据的过程;第二种情况,在将所述第一数据写入目的内存的至少一个存储单元的过程中开始读取所述源内存中至少一个存储单元的第二数据的过程,但在将所述第一数据写入目的内存的至少一个存储单元的过程结束时,读取所述源内存中至少一个存储单元的第二数据的过程还未结束。
针对上述第一种情况,由于在发生将第一数据写入目的内存的至少一个存储单元的过程中发生读取源内存中的至少一个存储单元的第二数据的过程,因而两个过程的发生时间重叠的时间最长,从而发生写逻辑电路与读逻辑电路间的干扰故障的可能性最大,能更准确地检测高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障。
在一种可能的实现方式中,故障检测单元还用于:当目的内存中数据读写单元写入第二数据的至少一个存储单元中的每个存储单元存储的数据,与按照一一对应关系每个存储单元对应的源内存中的每个存储单元存储的数据均一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间不存在干扰故障。
在一种可能的实现方式中,数据读写单元在将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元时,可通过以下方式实现:分别将目的内存的至少一个存储单元中的任意一个存储单元作为目的内存的当前存储单元,并将目的内存的当前存储单元对应的源内存的至少一个存储单元中的一个存储单元作为源内存的当前存储单元,针对每个目的内存的当前存储单元和源内存的当前存储单元执行如下步骤:将第一子数据写入目的内存的当前存储单元,读取源内存的当前存储单元的第二子数据,并将第二子数据写入目的内存的当前存储单元。
其中,写入目的内存的至少一个存储单元中的每个存储单元的第一子数据组成第一数据,读取源内存的至少一个存储单元中的每个存储单元的第二子数据组成第二数据。
采用上述方案,由于循环执行在目的内存的当前存储单元中写入第一子数据、读取源内存中当前存储单元的第二子数据、在目的内存的当前存储单元中写入第二子数据的过程,因而写逻辑电路与读逻辑电路同时存在数据传输这一场景发生的次数等于目的内存中执行过写入第二子数据的存储单元的个数(也就是源内存中执行过读取第二子数据的存储单元的个数),从而可以更充分地检测高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障,检测效果更好。
在一种可能的实现方式中,目的内存中的初始化数据和源内存中的初始化数据互相取反。具体实现时,高速缓冲存储器的故障检测装置还可以包括初始化单元。初始化单元用于对目的内存的至少一个存储单元和源内存的至少一个存储单元进行初始化操作,具体操作过程如下:在数据读写单元将第一数据写入目的内存的至少一个存储单元之前,将目的内存的初始化数据写入目的内存的至少一个存储单元;以及,对目的内存的初始化数据取反操作得到源内存的初始化数据,按照一一对应关系将源内存的初始化数据写入源内存的至少一个存储单元。
采用上述方案,如果高速缓冲存储器的数据读写单元在数据读写过程中某个比特位发生了漏读或漏写,那么故障检测单元在比较源内存中存在比特位漏读或漏写现象的存储单元存储的数据与该存储单元对应的目的内存的存储单元存储的数据时,由于这两个存储单元的初始化数据本就互相取反,因而故障检测单元在进行数据比较时这两个存储单元的数据不可能完全一致,从而故障检测单元可以检测出写逻辑电路和读逻辑电路间存在干扰故障。
在一种可能的实现方式中,高速缓冲存储器的故障检测装置可用于检测二级高速缓冲存储器或者三级高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障。当然,若随着技术的发展出现更高级别的高速缓冲存储器,高速缓冲存储器的故障检测装置也可用于检测更高级别的高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障。
附图说明
图1为现有技术提供的CPU、L1Cache、L2Cache与主存储器之间的连接关系的示意图;
图2为现有技术提供的L2Cache的内部逻辑结构的结构示意图;
图3为本发明实施例提供的一种高速缓冲存储器的故障检测方法的流程图;
图4为本发明实施例提供的另一种高速缓冲存储器的故障检测方法的流程图;
图5为本发明实施例提供的一种高速缓冲存储器的故障检测装置的结构示意图。
具体实施方式
为了更好地理解本发明实施例的上述目的、方案和优势,下文提供了详细描述。该详细描述通过使用框图、流程图等附图和/或示例,阐明了装置和/或方法的各种实施方式。在这些框图、流程图和/或示例中,包含一个或多个功能和/或操作。本领域技术人员将理解到:这些框图、流程图或示例内的各个功能和/或操作,能够通过各种各样的硬件、软件、固件单独或共同实施,或者通过硬件、软件和固件的任意组合实施。
本发明实施例提供一种高速缓冲存储器的故障检测方法及装置,用以实现对高速缓冲存储器中的写逻辑电路与读逻辑电路之间干扰故障的检测。
下面,对本发明实施例涉及的基本概念进行解释。需要说明的是,这些解释是为了让本发明实施例更容易被理解,而不应该视为对本发明所要求的保护范围的限定。
一、主存储器、CPU和Cache
本发明实施例中,涉及CPU通过Cache向主存储器写入数据的过程以及CPU通过Cache从主存储器读取数据的过程。其中,主存储器是计算机中用于存放指令和数据的硬件设备。
其中,主存储器可以是一种易失性存储器,即系统断电或出现其它故障后,主存储器中保存的数据会丢失,或者主存储器是指CPU寻址空间地址对应的存储空间。本发明实施例中,作为主存储器的存储介质可以包括:同步动态随机存储器(Synchronous DynamicRandom Access Memory,SDRAM)、双倍数据率同步动态随机存储器(Double Data RateSynchronous Dynamic Random Access Memory,DDR SDRAM)、第二代双倍数据率同步动态随机存取存储器(Double-Data-Rate Two Synchronous Dynamic Random Access Memory,DDR2 SDRAM)、第三代双倍数据率同步动态随机存取存储器(Double-Data-Rate ThreeSynchronous Dynamic Random Access Memory,DDR2SDRAM)、或第四代双倍数据率同步动态随机存取存储器(Double-Data-Rate Fourth Synchronous Dynamic Random AccessMemory,DDR2SDRAM)。
CPU是向主存储器发送数据读写操作指令的设备。CPU向主存储器中写入数据或者从主存储器中读取数据的过程均需要通过Cache进行,Cache中保存了CPU经常使用或修改的数据,可供CPU直接从Cache中直接读取或写入。由于Cache传输数据的速度远大于主存储器传输数据的速度,因而CPU通过Cache向主存储器写入CPU经常修改的数据,可以提高CPU写入数据的速度,避免写入数据的过程占用过多系统资源。CPU通过Cache从主存储器中读取CPU经常使用的数据,可以提高CPU读取数据的速度,避免读取数据的过程占用过多系统资源。
其中,CPU通过Cache向主存储器中写入数据的过程为:当CPU要将数据a写入主存储器中地址为A的存储单元时,CPU首先在Cache中查询Cache中是否保存有主存储器中地址A的存储单元的数据。若是,则在Cache中将该数据改写为a,然后再通过Cache将a写入主存储器中地址A的存储单元中;若否,则主存储器将主存储器中地址A的存储单元的数据发送给Cache,CPU在Cache中将该数据改写为a,然后再通过Cache将a写入主存储器中地址A的存储单元。
其中,CPU通过Cache从主存储器中读取数据的过程为:当CPU要读取主存储器中地址为B的存储单元的数据时,CPU首先在Cache中查询Cache中是否保存有主存储器中地址B的存储单元的数据,若是,则直接从Cache中读取该数据,若否,Cache从主存储器中读取地址B的存储单元的数据,然后CPU再从Cahce中读取该数据。
需要说明的是,本发明实施例中向主存储器中写入数据或者从主存储器中读取数据的过程均通过Cache进行。
本发明实施例中,Cache可以为L2Cache,也可以是L3Cahce。当然,如果随着技术的发展出现更高级别的高速缓冲存储器,比如四级高速缓冲存储器或者五级高速缓冲存储器等,本发明实施例中的高速缓冲存储器也可以是该更高级别的高速缓冲存储器。
本发明实施例提供的高速缓冲存储器的故障检测方法可由CPU执行,也可以由软件程序执行,其中,该软件程序可安装在CPU中,或者安装在除CPU外的其他设备上;本发明实施例提供的高速缓冲存储器的故障检测装置可以是配置在CPU中的装置,也可以是单独配置的装置。
二、存储区域和存储单元
存储单元是主存储器或高速缓冲存储器中可以编址的最小单元,即主存储器中,每一个存储单元具有唯一一个存储地址。
在一个存储单元中,根据CPU位宽的不同,可以存放不同位数的数据。例如,当CPU的位宽为16位时,该CPU对应的主存储器中,每个存储单元用于存放16位数据;当CPU的位宽为32位时,该CPU对应的主存储器中,每个存储单元用于存放32位数据。
存储区域由若干个存储单元构成,是主存储器或高速缓冲存储器中用于存储数据的区域。
三、目的内存和源内存
目的内存和源内存是本发明实施例中定义的主存储器中的两个存储区域。目的内存和源内存是主存储器映射在高速缓冲存储器中的两个存储区域,目的内存和源内存均包括至少一个存储单元。目的内存包含的至少一个存储单元的数量与源内存包含的至少一个存储单元的数量相同。在本发明实施例中,源内存主要用于从中读取第二数据,因而为了便于理解,将其命名为“源内存”;目的内存主要用于将第二数据写入其中,因而为了便于理解,将其命名为“目的内存”。
本发明实施例中,可以对目的内存和源内存进行初始化。较优地,目的内存的至少一个存储单元的初始化数据和源内存的至少一个存储单元的初始化数据互相取反,即目的内存的至少一个存储单元中任一个存储单元的初始化数据,与该存储单元对应的源内存中的存储单元的初始化数据互相取反。以初始化数据为二进制数据为例,如果目的内存中某个存储单元的初始化数据为0100,那么该存储单元对应的源内存的存储单元的初始化数据为1011。
本发明实施例中,目的内存和源内存中用于执行本发明实施例所提供的故障检测方法的存储单元,在本发明实施例的执行过程中不用作其他用途。
下面,结合附图对本发明实施例进行详细介绍。
本发明实施例提供一种高速缓冲存储器的故障检测方法,如图3所示,该方法包括:
S301:将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元。
其中,源内存中的初始化数据包括第二数据;按照一一对应关系,目的内存的一个存储单元映射在高速缓冲存储器中的存储单元与对应的源内存的一个存储单元映射在高速缓冲存储器中的存储单元不同;将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
源内存的初始化数据包括第二数据的含义是:在初始化源内存时,可以对源内存的全部或部分存储单元进行初始化,而S301中读取的源内存中的至少一个存储单元的第二数据时,可以读取源内存的初始化数据的部分数据或全部数据作为第二数据。以读取源内存的初始化数据的部分数据作为第二数据为例,假设源内存包含10个存储单元,在初始化源内存时,可以仅对源内存中的8个存储单元进行初始化操作;若源内存的至少一个存储单元的数量为6个,那么,S301中在读取源内存中的至少一个存储单元的第二数据时,读取的第二数据为进行过初始化操作的8个存储单元中的某6个存储单元的数据。即初始化数据包含源内存中的8个存储单元的数据,而第二数据只包含这8个存储单元中6个存储单元的数据,因而源内存的初始化数据包括第二数据。
S302:当目的内存中写入第二数据的至少一个存储单元中存在一个存储单元,该一个存储单元存储的数据与按照一一对应关系该一个存储单元对应的源内存中的一个存储单元存储的数据不一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
其中,目的内存中写入第二数据的至少一个存储单元中存在一个存储单元,该一个存储单元存储的数据与按照一一对应关系该一个存储单元对应的源内存中的一个存储单元存储的数据不一致的具体含义是:执行过S301的目的内存的存储单元中,如果某个存储单元存储的数据,与该存储单元对应的源内存的存储单元存储的数据不同,那么可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
可选地,当目的内存中写入所述第二数据的至少一个存储单元中的每个存储单元存储的数据,与按照一一对应关系每个存储单元对应的源内存中的每个存储单元存储的数据均一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间不存在干扰故障。
S302中确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障的方式可以理解为:只要目的内存中执行过S301的任一个存储单元中存储的数据,与该存储单元对应的源内存中存储的数据不一致时,则确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。只有当目的内存中写入所述第二数据的至少一个存储单元中的每个存储单元存储的数据,与按照一一对应关系每个存储单元对应的源内存中的每个存储单元存储的数据均一致时,才能确定高速缓冲存储器中写逻辑电路与读逻辑电路之间不存在干扰故障。
假设目的内存中执行过S301的存储单元为M1、M2、M3和M4,源内存中执行过S301的存储单元为Y1、Y2、Y3和Y4,其中,M1、M2、M3、M4与Y1、Y2、Y3、Y4的一一对应关系为下面以三种情况举例说明,如何判断高速缓冲存储器中写逻辑电路与读逻辑电路之间是否存在干扰故障。
第一种情况:
在执行过S301后,如果M1、M2、M3和M4中存储的数据分别为0100、1000、1001和1100,Y1、Y2、Y3和Y4中存储的数据分别为1100、1000、1001和1100,那么,由于M1中存储的数据与其对应的存储单元Y1中存储的数据不一致,则可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
第二种情况:
在执行过S301后,如果M1、M2、M3和M4中存储的数据分别为1100、1001、1011和1100,Y1、Y2、Y3和Y4中存储的数据分别为1100、1000、1001和1100,那么,由于M2中存储的数据与其对应的存储单元Y2中存储的数据不一致,M3中存储的数据与其对应的存储单元Y3中存储的数据也不一致,因而可以确定高速缓冲存储器中的写逻辑电路与读逻辑电路之间存在干扰故障。
第三种情况:
在执行过S301后,如果M1、M2、M3和M4中存储的数据分别为1100、1000、1001和1100,Y1、Y2、Y3和Y4中存储的数据分别为1100、1000、1001和1100,那么,由于M1、M2、M3和M4中存储的数据与其分别对应的存储单元Y1、Y2、Y3和Y4中存储的数据完全一致,则可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间不存在干扰故障。
当S302中确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障后,可以针对该干扰故障发出告警或者针对该干扰故障发出停止通过高速缓冲器进行数据读写操作的指令,从而避免因写逻辑电路与读逻辑电路之间存在的干扰故障影响数据读写操作的准确性。
本发明实施例中,第一数据是指写入目的内存的至少一个存储单元的数据的整体,即写入目的内存的至少一个存储单元中每个存储单元的数据共同组成第一数据。比如目的内存中用于执行图3所示方法的存储单元为M1、M2、M3和M4,在执行S301时,写入M1、M2、M3和M4的数据分别为Data1、Data2、Data3和Data4,那么第一数据是指Data1、Data2、Data3和Data4这一数据的整体;同样,第二数据也是指读取的源内存中的至少一个存储单元的数据的整体,此处不再赘述。
本发明实施例中,目的内存和源内存是为了执行图3所示的高速缓冲存储器的故障检测方法而在主存储器中划分出来的两个存储区域。目的内存和源内存中的全部或部分存储单元用于执行图3所示的方法。
当目的内存和源内存中的全部存储单元用于执行图3所示的方法时,目的内存包括的存储单元的数量与源内存包括的存储单元的数量相同;当目的内存和源内存中的部分存储单元用于执行图3所示的方法时,对目的内存包括的存储单元的数量和源内存包括的存储单元的数量不做限制,但为了满足一一对应关系,需满足目的内存中用于执行图3所示方法的存储单元(即目的内存的至少一个存储单元)的数量,与源内存中用于执行图3所示方法的存储单元(即源内存的至少一个存储单元)的数量相同。
此外,在执行S301时,对目的内存的至少一个存储单元的执行顺序和源内存的至少一个存储单元的执行顺序均不做限制,只需保证目的内存中的至少一个存储单元和对应的源内存中的至少一个存储单元均执行过S301即可。比如,对于将第一数据写入目的内存的至少一个存储单元这一操作,假设目的内存中用于执行图3所示方法的存储单元为M1、M2、M3和M4,在执行S301时,写入M1、M2、M3和M4的第一数据为Data1、Data2、Data3和Data4这一数据的整体,那么在分别将Data1、Data2、Data3和Data4写入M1、M2、M3和M4时,可以先将Data1写入M1,也可以先将Data3写入M3,只需保证执行S301后M1、M2、M3和M4分别存储有Data1、Data2、Data3和Data4即可。同样地,对于读取源内存的至少一个存储单元的第二数据的操作,对存储单元的执行顺序也不做限制,此处不再赘述。
目的内存的至少一个存储单元与源内存的至少一个存储单元在按照一一对应关系对应时,目的内存中的至少一个存储单元和源内存中的至少一个存储单元可以按照存储单元地址递加的顺序一一对应,也可以不按照存储单元地址递加的顺序一一对应。比如,假设目的内存中的四个存储单元为M1、M2、M3和M4,源内存中的四个存储单元为Y1、Y2、Y3和Y4,其一一对应关系可以是也可以是 也可以是
本发明实施例中需满足:目的内存中任一个存储单元与该存储单元对应的源内存中的存储单元映射在高速缓冲存储器中的存储单元不同即可,比如当目的内存中的四个存储单元和源内存中的四个存储单元的一一对应关系为时,应保证M1和Y1映射到高速缓冲存储器中的不同的存储单元,M2和Y3映射到高速缓冲存储器中的不同的存储单元,M3和Y2映射到高速缓冲存储器中的不同的存储单元,M4和Y4映射到高速缓冲存储器中的不同的存储单元。
需要注意的是,目的内存中的至少一个存储单元和源内存中的至少一个存储单元在一一对应后需满足:目的内存中任一个存储单元与该存储单元对应的源内存中的存储单元映射在高速缓冲存储器中的存储单元不同。
本发明实施例中,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。即相当于图2所示的高速缓冲存储器的内部逻辑结构中L201的传输过程与L202的传输过程存在时间重叠。比如,当将第一数据写入目的内存的至少一个存储单元的过程发生在1s~10s,读取源内存中的至少一个存储单元的第二数据的过程发生在3s~8s时,两个过程存在时间重叠;当将第一数据写入目的内存的至少一个存储单元的过程发生在1s~10s,读取源内存中的至少一个存储单元的第二数据的过程发生在7s~12s时,两个过程也存在时间重叠。
采用图3所示的高速缓冲存储器的故障检测方法,由于S301中将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,相当于通过高速缓冲存储器中的写逻辑电路向目的内存的至少一个存储单元写入第一数据的过程,与通过高速缓冲存储器中的读逻辑电路读取源内存中至少一个存储单元的第二数据的过程存在时间重叠。因此,如果高速缓冲存储器中的写逻辑电路与读逻辑电路间存在干扰故障,则向目的内存的至少一个存储单元中写入的第一数据和从源内存的至少一个存储单元中读取的第二数据会产生比特位跳变。
由于图3所示的高速缓冲存储器的故障检测方法中,在读取源内存中的至少一个存储单元的第二数据后,又将读取到的第二数据写入了目的内存的至少一个存储单元,那么目的内存的至少一个存储单元中存储的数据即为读取到的第二数据。由于高速缓冲存储器中的写逻辑电路与读逻辑电路间存在干扰故障时,从源内存的至少一个存储单元中读取的第二数据会产生比特位跳变,因而会导致读取到的第二数据与源内存的至少一个存储单元中原本存储的数据不同,进一步导致目的内存的至少一个存储单元中存储的第二数据与源内存的至少一个存储单元中原本存储的数据不同。
因此,S302中,可以通过比较目的内存的至少一个存储单元中存储的数据与源内存中至少一个存储单元存储的数据是否相同来判断高速缓冲存储器中的写逻辑电路与读逻辑电路间是否存在干扰故障,即当目的内存中执行过上述写入第二数据操作的存储单元中存在一个存储单元,该存储单元存储的数据与该存储单元对应的源内存中的存储单元中存储的数据不一致时,可以确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
S301中,实现将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠的方式有多种,比如通过定时器实现或者通过计数器实现,其中通过定时器实现的实现方式可以是:在执行S301时,启动定时器并将第一数据写入目的内存的至少一个存储单元;当所述定时器的当前时长为零时,读取源内存中的至少一个存储单元的第二数据。
其中,所述定时器设置的时长满足:将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
在通过定时器实现上述两个过程的时间重叠时,定时器设置的时长由CPU、Cache和主存储器所在的计算机设备的硬件配置、软件参数和数据传输速度等因素共同决定。对于不同的计算机设备,定时器设置的时长的具体值可以不同。
通过计数器实现将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠的方式与通过上述通过定时器实现的方式类似,此处不再赘述。
S301中,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠可以有多种情况,例如:第一种情况,在将第一数据写入目的内存的至少一个存储单元的过程中,发生读取源内存中至少一个存储单元的第二数据的过程。比如,将第一数据写入目的内存的至少一个存储单元的过程发生在1s~10s,读取源内存中的至少一个存储单元的第二数据的过程发生在3s~8s。第二种情况,在将第一数据写入目的内存的至少一个存储单元的过程中开始读取源内存中至少一个存储单元的第二数据的过程,但在将第一数据写入目的内存的至少一个存储单元的过程结束时,读取源内存中至少一个存储单元的第二数据的过程还未结束。比如,将第一数据写入目的内存的至少一个存储单元的过程发生在1s~10s,读取源内存中的至少一个存储单元的第二数据的过程发生在7s~12s。
其中,由于上述第一种情况中,两个过程存在时间重叠的时间最长,因而在检测高速缓冲存储器中写逻辑电路与读逻辑电路之间是否存在的干扰故障时,采用第一种重叠方式比采用第二种重叠方式检测的效果更好。
可选地,S301中将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元这一步骤的实现方式有多种,该步骤的实现方式可以有多种,下面仅列举其中两种实现方式。
第一种实现方式:
分别将目的内存的至少一个存储单元中的任意一个存储单元作为目的内存的当前存储单元,并将目的内存的当前存储单元对应的源内存的至少一个存储单元中的一个存储单元作为源内存的当前存储单元,针对每个目的内存的当前存储单元和源内存的当前存储单元执行:
将第一子数据写入目的内存的当前存储单元,读取源内存的当前存储单元的第二子数据,并将第二子数据写入目的内存的当前存储单元。
其中,写入目的内存的至少一个存储单元中的每个存储单元的第一子数据组成第一数据,读取源内存的至少一个存储单元中的每个存储单元的第二子数据组成第二数据。
为了便于理解,下面举例说明S301的第一种实现方式:假设目的内存中用于执行S301的存储单元为M1和M2,源内存中用于执行S301的存储单元为Y1和Y2,目的内存的存储单元与源内存的存储单元的一一对应关系为
在采用第一种实现方式执行S301时,先将目的内存中的存储单元M1作为当前存储单元,将第一子数据Data1写入M1,读取Y1中的第二子数据Data2,将第二子数据Data2写入M1,其中将第一子数据Data1写入M1的过程与读取Y1中的第二子数据Data2的过程存在时间重叠。然后将目的内存中的存储单元M2作为当前存储单元,将第一子数据Data3写入M2,读取Y2中的第二子数据Data4,将第二子数据Data4写入M2,其中,将第一子数据Data3写入M2的过程与读取Y2中的第二子数据Data4的过程存在时间重叠。通过执行如上步骤,完成S301。
在上述举例中,第一子数据Data1和第一子数据Data3共同组成第一数据,第二子数据Data2和第二子数据Data4共同组成第二数据。
在S301的第一种实现方式中,通过循环执行在目的内存的当前存储单元中写入第一子数据、读取源内存中当前存储单元的第二子数据、在目的内存的当前存储单元中写入第二子数据的过程完成S301。在这种实现方式中,高速缓冲存储器中发生写逻辑电路与读逻辑电路同时存在数据传输这一场景的次数等于目的内存中执行过写入第二子数据的存储单元的个数(也就是源内存中执行过读取第二子数据的存储单元的个数)。
第二种实现方式:
先将第一数据包括的至少一个第一子数据分别写入目的内存的至少一个存储单元,然后再读取源内存中的至少一个存储单元存储的至少一个第二子数据,最后再将至少一个第二子数据分别写入目的内存的至少一个存储单元。在这种实现方式中,高速缓冲存储器中发生写逻辑电路与读逻辑电路同时存在数据传输这一场景的次数等于一,即在将最后一个第一子数据写入目的内存的最后一个存储单元的过程和读取源内存中的第一个存储单元中的第二子数据的过程中,写逻辑电路与读逻辑电路同时存在数据传输。
为了便于理解,下面举例说明S301的第二种实现方式:假设目的内存中用于执行S301的存储单元为M1和M2,源内存中用于执行S301的存储单元为Y1和Y2,目的内存的存储单元与源内存的存储单元的一一对应关系为在采用第二种实现方式执行S301时,先将第一子数据Data1写入M1,再将第一子数据Data3写入M2;然后读取Y1中的第二子数据Data2,再读取Y2中的第二子数据Data4;其中,将第一子数据Data3写入M2的过程与读取Y1中的第二子数据Data2的过程存在时间重叠;然后将第二子数据Data2写入M1,再将第二子数据Data4写入M2。
在上述举例中,第一子数据Data1和第一子数据Data3共同组成第一数据,第二子数据Data2和第二子数据Data4共同组成第二数据。
通过第一种实现方式和第二种实现方式的对比不难看出,采用S301的第一种实现方式,写逻辑电路与读逻辑电路间同时存在数据传输的这一场景的次数更多,因而可以更充分地检测高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障,检测结果更准确,检测效果更好。
优选地,目的内存中的初始化数据和源内存中的初始化数据互相取反,具体实现时,可以在将第一数据写入目的内存的至少一个存储单元之前,将目的内存的初始化数据写入目的内存的至少一个存储单元;对目的内存的初始化数据取反操作得到源内存的初始化数据,按照一一对应关系将源内存的初始化数据写入源内存的至少一个存储单元。
其中,该初始化步骤应视为本发明实施例所提供的故障检测方法的前期准备步骤,和计算机领域中传统的初始化操作的含义不同。
在对目的内存的至少一个存储单元和源内存的至少一个存储单元进行初始化时,需要先对目的内存的至少一个存储单元进行初始化,然后再对源内存的至少一个存储单元进行初始化,其原因是:
初始化步骤即写入数据的步骤,通过前面介绍的CPU通过Cache向主存储器中写入数据的过程可以知道,CPU通过高速缓冲存储器向主存储器中的存储单元写入数据后,高速缓冲存储器中会存储有该存储单元的数据。若先对源内存的至少一个存储单元进行初始化,再对目的内存的至少一个存储单元进行初始化,则高速缓冲存储器中会保存有源内存的至少一个存储单元的数据。那么在将第一数据写入目的内存的至少一个存储单元时,就可以直接在高速缓冲存储器中写入,而不会发生主存储器向高速缓冲存储器发送目的内存的至少一个存储单元存储的数据的过程,即图2所示的高速缓冲存储器的内部逻辑结构中L201的传输过程,也就不会发生写逻辑电路与读逻辑电路同时进行数据传输的过程,因而也就无法检测高速缓冲存储器中的写逻辑电路与读逻辑电路间是否存在干扰故障。
在对目的内存的至少一个存储单元和源内存的至少一个存储单元进行初始化时,二者的初始化数据可以互相取反,这是因为:如果在执行图3所示方法的过程中某个比特位发生了漏读或漏写,那么在比较源内存中存在比特位漏读或漏写情况现象的存储单元存储的数据与该存储单元对应的目的内存的存储单元存储的数据时,由于这两个存储单元的初始化数据本就互相取反,因而在进行数据比较时这两个存储单元的数据不可能完全一致,从而可以检测出写逻辑电路和读逻辑电路间存在干扰故障。
需要说明的是,目的内存中的初始化数据和源内存中的初始化数据也可以不互相取反,比如,若第一数据与源内存中的初始化数据互相取反,也可达到目的内存中的初始化数据和源内存中的初始化数据互相取反所达到的效果。因为在S301中已经将第一数据写入了目的内存的至少一个存储单元,因此,如果在执行图3所示方法的过程中某个比特位发生了漏读或漏写,那么在比较源内存中存在比特位漏读或漏写情况现象的存储单元存储的数据与该存储单元对应的目的内存的存储单元存储的数据时,由于第一数据与源内存的初始化数据本就互相取反,因而在进行数据比较时这两个存储单元的数据不可能完全一致,从而可以检测出写逻辑电路和读逻辑电路间存在干扰故障。
在图3所示方法中,通过对目的内存的至少一个存储单元和源内存的至少一个存储单元执行S301操作,使得高速缓冲存储器中的写逻辑电路和读逻辑电路间同时存在数据传输,从而通过判断目的内存的至少一个存储单元与源内存的至少一个存储单元存储的数据是否一致来判断高速缓冲存储器中的写逻辑电路和读逻辑电路间是否存在干扰故障。
前面已经提到,在执行S301时,对目的内存的至少一个存储单元的执行顺序和源内存的至少一个存储单元的执行顺序均不做限制,只需保证目的内存中的至少一个存储单元和对应的源内存中的至少一个存储单元均执行过S301即可。但是在具体应用中,在执行S301时,目的内存的至少一个存储单元的执行顺序和源内存的至少一个存储单元的执行顺序遵循存储单元的地址递增的执行顺序是比较常见的实现方式。
下面,结合图4,给出一种遵循存储单元的地址递增的执行顺序的高速缓冲存储器的故障检测方法。图4所示的高速缓冲存储器的故障检测方法可视为图3所示的高速缓冲存储器的故障检测方法的一种优选的实现方式。
如图4所示,该方法包括:
S401:将第一子数据写入目的内存中第一地址指向的存储单元;
S402:经过设定时长后,读取源内存中第二地址指向的存储单元中的第二子数据;
其中,目的内存和源内存是高速缓冲存储器映射在主存储器中的两个存储区域,目的内存的初始化数据和源内存的初始化数据互相取反,第一地址的存储单元和第二地址的存储单元映射到高速缓冲存储器中不同的存储单元;设定时长的设置满足:将第一子数据写入目的内存中第一地址的存储单元的过程与读取源内存中第二地址的存储单元中的第二子数据的过程存在时间重叠。
S403:将第二子数据写入第一地址指向的存储单元;
S404:将第一地址加一,并将第二地址加一;
其中,加一后的第一地址指向目的内存中的下一个存储单元,加一后的第二地址指向源内存中的下一个存储单元。
S405:判断是否满足以下条件:第一地址加一的次数和第二地址加一的次数均等于设定次数;如果不满足,则返回执行S401,如果满足,则执行S406;
其中,S401~S405相当于前述的S301的第一种实现方式,S401~S405也可以采用前述的S301的第二种实现方式,此处不再赘述。
其中,假设目的内存包括的存储单元个数与源内存包括的存储单元的个数均为N,那么设定次数可以大于N,可以小于N,也可以等于N,图4所示的高速缓冲存储器的故障检测方法中对设定次数不做限制。
在介绍图3所示的高速缓冲存储器的故障检测方法时提到,目的内存和源内存中的全部或部分存储单元用于执行图3所示的方法。同样地,用于执行图4所示方法的也可以是目的内存和源内存的全部或部分存储单元,目的内存和源内存中有多少个存储单元用于执行图4所示的方法可以由设定次数决定。假设目的内存包括的存储单元个数与源内存包括的存储单元的个数均为N,那么针对不同的设定次数,目的内存和源内存中有多少个存储单元用于执行图4所示的方法可分为以下几种情况:
第一种情况:
当设定次数大于N时,相当于目的内存和源内存的全部存储单元均执行了该方法,并且目的内存和源内存中各有至少一个存储单元执行了两次或两次以上。
第二种情况:
当设定次数等于N时,相当于目的内存和源内存的全部存储单元均将该方法执行了一次。
第三种情况:
当设定次数小于N时,代表目的内存和源内存中的部分存储单元用于执行该方法。特别地,当设定次数等于1时,代表目的内存的一个存储单元和源内存的一个存储单元执行该方法后即对检测结果进行判断。
S406:当目的内存中执行过写入第二子数据操作的存储单元存储的数据与源内存中执行过读取第二子数据操作的存储单元存储的数据不完全一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
图4所示的高速缓冲存储器的故障检测方法可视为图3所示的高速缓冲存储器的故障检测方法的一种优选的实现方式,图4所示高速缓冲存储器的故障检测方法中未详细解释的内容详见图3所示高速缓冲存储器的故障检测方法中的相关描述。
在图4所示方法中,通过设定次数的设置,使得循环执行S401~S403的次数等于设定次数,即高速缓冲存储器中写逻辑电路与读逻辑电路同时存在数据传输过程的次数等于设定次数,从而通过判断目的内存中执行过写入第二子数据操作的存储单元存储的数据与源内存中执行过读取第二子数据操作的存储单元存储的数据是否完全一致,来对高速缓冲存储器中写逻辑电路与读逻辑电路间的干扰故障进行检测。
本发明实施例提供一种高速缓冲存储器的故障检测装置,该装置可用于执行上述图3所示的高速缓冲存储器的故障检测方法,或者用于执行图4所示的高速缓冲存储器的故障检测方法。如图5所示,该高速缓冲存储器的故障检测装置500包括:
数据读写单元501,用于将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元。
其中,源内存的初始化数据包括第二数据;按照一一对应关系,目的内存的一个存储单元映射在高速缓冲存储器中的存储单元与对应的源内存的一个存储单元映射在高速缓冲存储器中的存储单元不同;将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
故障检测单元502,用于当目的内存中数据读写单元501写入第二数据的至少一个存储单元中存在一个存储单元,一个存储单元存储的数据与按照一一对应关系一个存储单元对应的源内存中的一个存储单元存储的数据不一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
可选地,数据读写单元501在将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据时,具体用于:启动定时器,并将第一数据写入目的内存的至少一个存储单元;当定时器的当前时长为零时,读取源内存中的至少一个存储单元的第二数据。
其中,定时器设置的时长满足:将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
可选地,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,具体为:在将第一数据写入目的内存的至少一个存储单元的过程中,发生读取源内存中至少一个存储单元的第二数据的过程。
可选地,故障检测单元502还用于:当目的内存中数据读写单元501写入第二数据的至少一个存储单元中的每个存储单元存储的数据,与按照一一对应关系每个存储单元对应的源内存中的每个存储单元存储的数据均一致时,确定高速缓冲存储器中写逻辑电路与读逻辑电路之间不存在干扰故障。
可选地,数据读写单元501在将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照目的内存的至少一个存储单元与源内存的至少一个存储单元之间的一一对应关系,将第二数据写入到目的内存的至少一个存储单元时,具体用于:
分别将目的内存的至少一个存储单元中的任意一个存储单元作为目的内存的当前存储单元,并将目的内存的当前存储单元对应的源内存的至少一个存储单元中的一个存储单元作为源内存的当前存储单元,针对每个目的内存的当前存储单元和源内存的当前存储单元执行:将第一子数据写入目的内存的当前存储单元,读取源内存的当前存储单元的第二子数据,并将第二子数据写入目的内存的当前存储单元。
其中,写入目的内存的至少一个存储单元中的每个存储单元的第一子数据组成第一数据,读取源内存的至少一个存储单元中的每个存储单元的第二子数据组成第二数据。
可选地,目的内存的初始化数据和源内存的初始化数据互相取反。
可选地,高速缓冲存储器的故障检测装置500还包括:初始化单元,用于在数据读写单元501将第一数据写入目的内存的至少一个存储单元之前,将初始化数据写入目的内存的至少一个存储单元;以及,对初始化数据取反操作,按照一一对应关系将取反操作后的初始化数据写入源内存的至少一个存储单元。
可选地,高速缓冲存储器为二级高速缓冲存储器或者三级高速缓冲存储器。
通过图5所示的高速缓冲存储器的故障检测装置500中的数据读写单元501对目的内存的至少一个存储单元和源内存的至少一个存储单元进行数据读写操作,使得高速缓冲存储器中的写逻辑电路与读逻辑电路同时存在数据传输,因而故障检测单元502能够通过判断目的内存的至少一个存储单元与源内存的至少一个存储单元存储的数据是否一致来判断写逻辑电路和读逻辑电路间是否存在干扰故障,从而对写逻辑电路和读逻辑电路间的干扰故障进行检测。
图5所示的高速缓冲存储器的故障检测装置500中,数据读写单元501可用于执行图3所示的高速缓冲存储器的故障检测方法或图4所示的高速缓冲存储器的故障检测方法中的数据读写操作,故障检测单元502可用于执行图3所示的高速缓冲存储器的故障检测方法或图4所示的高速缓冲存储器的故障检测方法中的故障检测操作,初始化单元可用于执行图3所示的高速缓冲存储器的故障检测方法或图4所示的高速缓冲存储器的故障检测方法中的初始化操作。图5所示的高速缓冲存储器的故障检测装置500中未详尽描述的实现方式可参照图3所示的高速缓冲存储器的故障检测方法或图4所示的高速缓冲存储器的故障检测方法中的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (14)

1.一种高速缓冲存储器的故障检测方法,其特征在于,包括:
将第一数据写入目的内存的至少一个存储单元;以及,
读取源内存中的至少一个存储单元的第二数据,并按照所述目的内存的至少一个存储单元与所述源内存的至少一个存储单元之间的一一对应关系,将所述第二数据写入到所述目的内存的至少一个存储单元;
其中,所述源内存中的初始化数据包括所述第二数据;按照所述一一对应关系,所述目的内存的一个存储单元映射在所述高速缓冲存储器中的存储单元与对应的所述源内存的一个存储单元映射在所述高速缓冲存储器中的存储单元不同;将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠;
当所述目的内存中写入所述第二数据的至少一个存储单元中存在一个存储单元,所述一个存储单元存储的数据与按照所述一一对应关系所述一个存储单元对应的所述源内存中的一个存储单元存储的数据不一致时,确定所述高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
2.如权利要求1所述的方法,其特征在于,将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,具体包括:
启动定时器,并将第一数据写入目的内存的至少一个存储单元;
当所述定时器的当前时长为零时,读取源内存中的至少一个存储单元的第二数据;
其中,所述定时器设置的时长满足:将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
3.如权利要求1或2所述的方法,其特征在于,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,具体为:
在将所述第一数据写入目的内存的至少一个存储单元的过程中,发生读取所述源内存中至少一个存储单元的第二数据的过程。
4.如权利要求1~3任一项所述的方法,其特征在于,将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照所述目的内存的至少一个存储单元与所述源内存的至少一个存储单元之间的一一对应关系,将所述第二数据写入到所述目的内存的至少一个存储单元,包括:
分别将所述目的内存的至少一个存储单元中的任意一个存储单元作为所述目的内存的当前存储单元,并将所述目的内存的当前存储单元对应的所述源内存的至少一个存储单元中的一个存储单元作为所述源内存的当前存储单元,针对每个所述目的内存的当前存储单元和所述源内存的当前存储单元执行:
将第一子数据写入所述目的内存的当前存储单元,读取所述源内存的当前存储单元的第二子数据,并将所述第二子数据写入所述目的内存的当前存储单元;
其中,写入所述目的内存的至少一个存储单元中的每个存储单元的第一子数据组成所述第一数据,读取所述源内存的至少一个存储单元中的每个存储单元的第二子数据组成所述第二数据。
5.如权利要求1~4任一项所述的方法,其特征在于,所述目的内存中的初始化数据和所述源内存中的初始化数据互相取反。
6.如权利要求5所述的方法,其特征在于,在将第一数据写入目的内存的至少一个存储单元之前,还包括:
将所述目的内存的初始化数据写入所述目的内存的至少一个存储单元;
对所述目的内存的初始化数据取反操作得到所述源内存的初始化数据,按照所述一一对应关系将所述源内存的初始化数据写入所述源内存的至少一个存储单元。
7.如权利要求1~6任一项所述的方法,其特征在于,所述高速缓冲存储器为二级高速缓冲存储器或者三级高速缓冲存储器。
8.一种高速缓冲存储器的故障检测装置,其特征在于,包括:
数据读写单元,用于将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照所述目的内存的至少一个存储单元与所述源内存的至少一个存储单元之间的一一对应关系,将所述第二数据写入到所述目的内存的至少一个存储单元;
其中,所述源内存中的初始化数据包括所述第二数据;按照所述一一对应关系,所述目的内存的一个存储单元映射在所述高速缓冲存储器中的存储单元与对应的所述源内存的一个存储单元映射在所述高速缓冲存储器中的存储单元不同;将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠;
故障检测单元,用于当所述目的内存中所述数据读写单元写入所述第二数据的至少一个存储单元中存在一个存储单元,所述一个存储单元存储的数据与按照所述一一对应关系所述一个存储单元对应的所述源内存中的一个存储单元存储的数据不一致时,确定所述高速缓冲存储器中写逻辑电路与读逻辑电路之间存在干扰故障。
9.如权利要求8所述的装置,其特征在于,所述数据读写单元在将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据时,具体用于:
启动定时器,并将第一数据写入目的内存的至少一个存储单元;
当所述定时器的当前时长为零时,读取源内存中的至少一个存储单元的第二数据;
其中,所述定时器设置的时长满足:将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠。
10.如权利要求8或9所述的装置,其特征在于,将第一数据写入目的内存的至少一个存储单元的过程与读取源内存中的至少一个存储单元的第二数据的过程存在时间重叠,具体为:
在将所述第一数据写入目的内存的至少一个存储单元的过程中,发生读取所述源内存中至少一个存储单元的第二数据的过程。
11.如权利要求8~10任一项所述的装置,其特征在于,所述数据读写单元在将第一数据写入目的内存的至少一个存储单元;以及,读取源内存中的至少一个存储单元的第二数据,并按照所述目的内存的至少一个存储单元与所述源内存的至少一个存储单元之间的一一对应关系,将所述第二数据写入到所述目的内存的至少一个存储单元时,具体用于:
分别将所述目的内存的至少一个存储单元中的任意一个存储单元作为所述目的内存的当前存储单元,并将所述目的内存的当前存储单元对应的所述源内存的至少一个存储单元中的一个存储单元作为所述源内存的当前存储单元,针对每个所述目的内存的当前存储单元和所述源内存的当前存储单元执行:
将第一子数据写入所述目的内存的当前存储单元,读取所述源内存的当前存储单元的第二子数据,并将所述第二子数据写入所述目的内存的当前存储单元;
其中,写入所述目的内存的至少一个存储单元中的每个存储单元的第一子数据组成所述第一数据,读取所述源内存的至少一个存储单元中的每个存储单元的第二子数据组成所述第二数据。
12.如权利要求8~11任一项所述的装置,其特征在于,所述目的内存中的初始化数据和所述源内存中的初始化数据互相取反。
13.如权利要求12所述的装置,其特征在于,还包括:
初始化单元,用于在所述数据读写单元将第一数据写入目的内存的至少一个存储单元之前,将所述目的内存的初始化数据写入所述目的内存的至少一个存储单元;以及,
对所述目的内存的初始化数据取反操作得到所述源内存的初始化数据,按照所述一一对应关系将所述源内存的初始化数据写入所述源内存的至少一个存储单元。
14.如权利要求8~13任一项所述的装置,其特征在于,所述高速缓冲存储器为二级高速缓冲存储器或者三级高速缓冲存储器。
CN201610816291.0A 2016-09-09 2016-09-09 一种高速缓冲存储器的故障检测方法及装置 Active CN106502810B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610816291.0A CN106502810B (zh) 2016-09-09 2016-09-09 一种高速缓冲存储器的故障检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610816291.0A CN106502810B (zh) 2016-09-09 2016-09-09 一种高速缓冲存储器的故障检测方法及装置

Publications (2)

Publication Number Publication Date
CN106502810A true CN106502810A (zh) 2017-03-15
CN106502810B CN106502810B (zh) 2019-05-24

Family

ID=58291431

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610816291.0A Active CN106502810B (zh) 2016-09-09 2016-09-09 一种高速缓冲存储器的故障检测方法及装置

Country Status (1)

Country Link
CN (1) CN106502810B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111279411A (zh) * 2017-11-06 2020-06-12 高通股份有限公司 用于确定gpu子系统中的数据内容完整性的存储器地址翻转

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593158A (zh) * 2008-05-28 2009-12-02 富士通株式会社 控制高速缓冲存储器的方法和装置
CN102681937A (zh) * 2012-05-15 2012-09-19 浪潮电子信息产业股份有限公司 一种缓存一致性协议正确性验证方法
CN102968395A (zh) * 2012-11-28 2013-03-13 中国人民解放军国防科学技术大学 用于微处理器的内存拷贝加速方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593158A (zh) * 2008-05-28 2009-12-02 富士通株式会社 控制高速缓冲存储器的方法和装置
CN102681937A (zh) * 2012-05-15 2012-09-19 浪潮电子信息产业股份有限公司 一种缓存一致性协议正确性验证方法
CN102968395A (zh) * 2012-11-28 2013-03-13 中国人民解放军国防科学技术大学 用于微处理器的内存拷贝加速方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111279411A (zh) * 2017-11-06 2020-06-12 高通股份有限公司 用于确定gpu子系统中的数据内容完整性的存储器地址翻转
CN111279411B (zh) * 2017-11-06 2022-04-29 高通股份有限公司 用于确定gpu子系统中的数据内容完整性的存储器地址翻转

Also Published As

Publication number Publication date
CN106502810B (zh) 2019-05-24

Similar Documents

Publication Publication Date Title
US11237728B2 (en) Method for accessing extended memory, device, and system
CN106326145A (zh) 一种存储器的控制方法和装置
CN105446841A (zh) 缓存一致性测试方法
CN104346284A (zh) 一种内存管理方法及内存管理设备
US9063667B2 (en) Dynamic memory relocation
US20180157605A1 (en) Configuration of a memory controller for copy-on-write
US9300716B2 (en) Modelling dependencies in data traffic
CN103605833B (zh) 一种对存储阵列系统的性能进行仿真的方法及装置
US20120137107A1 (en) Method of decaying hot data
CN108959105B (zh) 一种实现地址映射的方法及装置
CN106502810A (zh) 一种高速缓冲存储器的故障检测方法及装置
CN102880467A (zh) Cache一致性协议验证方法以及多核处理器系统
CN106055280B (zh) 一种元数据回写方法和电子设备
CN109710547B (zh) 一种工业物联网中的缓冲内存管理设计与实现方法
JP6332756B2 (ja) データ処理方法、装置、およびシステム
CN110727399A (zh) 存储阵列管理方法及装置
CN106662998A (zh) 事务冲突检测方法、装置及计算机系统
CN105739919B (zh) 资料存取系统及方法
CN108664414B (zh) Ddr内存配置空间访问方法及装置
CN103971750A (zh) 一种ram的9相邻单元敏感故障检测方法
CN106469020B (zh) 高速缓存元件与控制方法及其应用系统
CN109901880B (zh) 一种spinlock硬件电路及电子设备
Li et al. Research on automatic exploitation of house of spirit heap overflow vulnerability
RU113038U1 (ru) Система для обнаружения скрытых областей оперативной памяти
US20130290535A1 (en) Apparatus and method for managing an access control list in an internet device

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant