一种基于MESI的缓存方法、装置和处理器技术领域
本发明涉及计算机应用领域,特别涉及一种基于MESI的缓存方法、装置和处理器。
技术背景
随着现代社会科技的发展,计算机已经广泛应用于各种领域,随之而来的是处理
器技术的飞速发展。处理器作为计算机中的主要设备之一,是电脑中的核心配件。其功能主
要是解释计算机指令以及处理计算机软件中的数据。随着人们对于计算速度和计算规模的
需求不断提高,由于单处理器计算机系统的处理器运算性能受芯片速度极限和加工工艺极
限的限制,不可能无限提高,这就使得多处理器的技术应运而生。
多处理器中存在共享和私有数据的高速缓存。私有数据是被单个处理器使用的,
而共享数据则是被多个处理器使用的,本质上是通过读写共享数据完成处理器之间的通
信,这就使得多处理器的缓存一致性成为必须的技术。
MESI是广泛应用的一种缓存一致性协议。MESI是四种缓存段状态Invalid、
Shared、Exclusive、Modified的首字母缩写,分别代表无效状态、共享状态、独占状态和修
改状态,四种缓存段状态的转换可以如图1所示。多处理器系统中任何缓存段都处于这四种
状态之一。MESI协议是一个合适的状态机,既能处理来自本地处理器的请求,也能把信息广
播到总线上。
现有技术中,在一些对实时性较高的多处理器系统,处理器需要实时地迅速读取
数值并进行分析,在这种场景下,保证最新的数据是非常重要的。但现有的MESI协议中却存
在着数据过期的风险。例如,A处理器读取数据后B处理器可能迅速对相应的缓存进行写,这
时A处理器读取的数据就成了过期值。操作已过期的数据可能会造成偏差,这在一些实时性
高、对时效要求苛刻的系统中尤为严重。
发明内容
本发明实施例所要解决的技术问题是,提供一种基于MESI的缓存方法、装置和处
理器,以解决本地读数据过期的问题,提高系统稳定性和用户体验。
为解决上述技术问题,本发明提供了一种基于MESI的缓存方法,该方法包括:
本地读操作后在缓存段添加过期风险标识;
在所述缓存段进行下一操作后,对存在所述过期风险标识的改变的缓存段进行本
地重读,删除所述过期风险标识。
可选的,在所述缓存段进行下一操作后,对存在所述过期风险标识的改变的缓存
段进行本地重读,删除所述过期风险标识,包括:
判断下一操作是否为本地写或远端写操作;
若是,在所述缓存段进行本地写或远端写操作后,对存在所述过期风险标识的改
变的缓存段进行本地重读,删除所述过期风险标识;
若否,在远端读操作前直接删除所述缓存段的所述过期风险标识。
可选的,所述过期风险标识具体为:R标识。
此外,本发明提供了一种基于MESI的缓存装置,该装置包括:
添加模块,用于本地读操作后在缓存段添加过期风险标识;
重读模块,用于在所述缓存段进行下一操作后,对改变的缓存段进行重读,删除所
述过期风险标识。
可选的,所述重读模块,包括:
判断单元,用于判断下一操作是否为本地写或远端写操作;若是,向重读单元发送
重读信号;若否,向删除单元发送删除信号;
重读单元,用于接收所述重读信号,在本地写或远端写操作后进行重读,删除所述
过期风险标识;
删除单元,用于接收所述删除信号,在远端读操作前直接删除所述标识。
本发明还提供了一种处理器,包括:根据上述任一项所述的基于MESI的缓存装置。
本发明所提供的一种基于MESI的缓存方法,包括本地读操作后在缓存段添加过期
风险标识;在所述缓存段进行下一操作后,对存在所述过期风险标识的改变的缓存段进行
本地重读,删除所述过期风险标识;
可见,本发明通过本地读操作后在缓存段添加过期风险标识,标记了存在过期风
险的数据,再通过所述缓存段进行下一操作后,对存在所述过期风险标识的改变的缓存段
进行本地重读,删除所述过期风险标识,可以根据本地重读的数据更新原来本地读的数据,
消除数据过期的风险,从而提高系统的稳定性和用户体验。此外,本发明还提供了一种基于
MESI的缓存装置和处理器,同样具有上述有益效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其
他的附图。
图1为现有技术中MESI状态转变的示意图;
图2为本发明实施例提供的一种基于MESI的缓存方法的流程图;
图3为本发明实施例提供的另一种基于MESI的缓存方法的关系图;
图4为本发明实施例提供的另一种基于MESI的缓存方法在本地读操作之后添加R
标识的示意图;
图5为本发明实施例提供的另一种基于MESI的缓存方法在本地读操作之后下一操
作的示意图;
图6为本发明实施例提供的一种基于MESI的缓存装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
请参考图2,图2为本发明实施例提供的一种基于MESI的缓存方法的流程图。该方
法可以包括:
步骤101:本地读操作后在缓存段添加过期风险标识。
其中,过期风险标识可以为缓存段在经过本地读操作后,在相应的缓存段额外添
加的用于标记过期风险的标识,并不会对接下来的操作造成影响。
需要说明的是,过期风险标识可以为R标识,也可以为L标识等其他标识,本实施例
对此不受任何限制。
步骤102:在所述缓存段进行下一操作后,对存在所述过期风险标识的改变的缓存
段进行本地重读,删除所述过期风险标识。
其中,本地重读可以是本地读,只是在缓存段进行本地写或远端写操作后,对存在
过期风险标识的改变的缓存段再次进行本地读操作,更新原来本地读操作缓存的数据。
需要说明的是,下一操作可以是本地写、远端写或远端读,而主要可以针对下一操
作为本地写、远端写时,可能会改变本地读时的数据,导致本地读的数据过期。而对于下一
操作为远端读操作时,由于不会改变本地读的数据,可以不用进行本地重读操作,而是在本
地读操作后直接删除缓存段的过期风险标识。本实施例对此不受任何限制。
可以理解的是,对于下一操作为远端读,不进行本地重读操作的技术方案,可以加
入判断环节,用于判断下一操作的类型。
本实施例中,提供的基于MESI的缓存方法通过本地读操作后在缓存段添加过期风
险标识,标记了存在过期风险的数据,再通过所述缓存段进行下一操作后,对存在所述过期
风险标识的改变的缓存段进行本地重读,删除所述过期风险标识,可以根据本地重读的数
据更新原来本地读的数据,消除数据过期的风险,从而提高系统的稳定性和用户体验。
请参考图3、图4、图5,图3为本发明实施例提供的另一种基于MESI的缓存方法的关
系图,图4为本发明实施例提供的另一种基于MESI的缓存方法在本地读操作之后添加R标识
的示意图,图5为本发明实施例提供的另一种基于MESI的缓存方法在本地读操作之后下一
操作的示意图。该方法可以包括:
步骤201:本地读操作后在缓存段添加R标识。
其中,R标识可以为缓存段在进行本地读操作时直接添加的,也可以是在本地读操
作后再添加的,本实施对此不受任何限制。
需要说明的是,添加R标识的步骤可以为如图4所示,在M、S、E状态进行本地读操作
后在对应的缓存段添加R标识,如E状态经本地读后成为E+R状态,也就是E状态对应的缓存
段中存在R标识。
具体实施中,可以为如表1展示的基于MESI的缓存方法的操作实例中的指令周期2
和6所示:
表1
指令周期
状态
操作前值
操作类型
操作后值
状态
1
E
11011
本地写
10101
M
2
M
10101
本地读
10101
M+R
3
M+R
10101
远端写
00111
I+R->S+R
4
S+R
00111
重读
00111
S
5
S
00111
本地写
11100
M
6
M
11100
本地读
11100
M+R
7
M+R
11100
远端读
11100
S
在本地读操作后,直接添加R标识。而图中的状态M+R表示的可以是在M状态的缓存
段存在R标识。
步骤202:判断下一操作是否为本地写或远端写操作;若是,进入步骤203;若否,进
入步骤204。
可以理解的是,判断下一操作是否为本地写或远端写操作是因为本实施例的方法
主要是针对本地写或远端写后数据可能改变,使得本地读的数据过期,所以对本地写或远
端写操作进行判断。判断下一操作是否为远端读,或不进行判断而是识别下一操作的类型
也可以达到本实施例的目的,本实施例对此不受任何限制。
步骤203:在所述缓存段进行本地写或远端写操作后,对存在所述过期风险标识的
改变的缓存段进行本地重读,删除所述R标识。
可以理解的是,在进行本地写或远端写操作后,缓存段中存在R标识的状态可以为
如图5所示,如S状态在本地读后为S+R状态,其后的动作是本地写,则发生S->M的状态转变,
由于携带着R,实际上是S+R->M+R。风险出现的情景是M、S、E状态因为本地写而成为M状态,
或远端写而成为I状态。其中I状态的缓存在本地写后成为M状态,但因为在此之前I状态缓
存不能进行读操作,因此不会有风险,不需要产生R状态。
具体实施中,本步骤可以为如表1中指令周期3和4所示,对缓存段存在R标识的
10101进行远端写操作,新值为00111,这时本地缓存段成为I状态。由于R标识的存在,本地
缓存请求读入新值,并成为S状态。此时仍携带R标识。为解决本地读数据过期问题,此时将
进行重读,也就是本地重读。读取到新值00111后,删除缓存段的R标识,继续新的操作。
步骤204:在远端读操作前直接删除所述缓存段的所述R标识。
其中,本步骤可以是远端读操作前直接删除缓存段的R标识,也可以是在远端读操
作后删除缓存段的R标识,本实施例对此步骤任何限制。
具体实施中,本步骤可以为如表1中指令周期7所示,在指令周期6进行本地读操作
后,此时缓存段存在R标识。指令周期7进行的操作为远端读,不会产生数据过期风险,因此
可以直接删除缓存段的R状态标志。
本实施中,本发明实施例通过加入判断环节,对于没有过期风险的远端读操作,在
远端读操作前直接删除所述缓存段的所述R标识,减少了本地重读的次数,可以进一步提高
系统的效率,提高用户体验。
请参考图6,为本发明实施例提供的一种基于MESI的缓存装置的结构图。该装置可
以包括:
添加模块100,用于本地读操作后在缓存段添加过期风险标识。
重读模块200,用于在所述缓存段进行下一操作后,对改变的缓存段进行重读,删
除所述过期风险标识。
可选的,所述重读模块200,可以包括:
判断单元,用于判断下一操作是否为本地写或远端写操作;若是,向重读单元发送
重读信号;若否,向删除单元发送删除信号。
重读单元,用于接收所述重读信号,在本地写或远端写操作后进行重读,删除所述
过期风险标识。
删除单元,用于接收所述删除信号,在远端读操作前直接删除所述标识。
本实施例中,本发明实施例通过添加模块100在本地读操作后的缓存段添加过期
风险标识,标记了存在过期风险的数据,再通过重读模块200在所述缓存段进行下一操作
后,对存在所述过期风险标识的改变的缓存段进行本地重读,删除所述过期风险标识,可以
根据本地重读的数据更新原来本地读的数据,消除数据过期的风险,从而提高系统的稳定
性和用户体验。
本发明还提供了一种处理器,包括:如上一实施例所述的基于MESI的缓存装置。
需要说明的是,本说明书中的实施例均采用递进的方式描述,每个实施例重点说
明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于
装置类和处理器实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之
处参见方法实施例的部分说明即可。
以上对本申请所提供的基于MESI的缓存方法、装置和处理器进行了详细介绍,本
文中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用
于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的
思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为
对本申请的限制。