Cache的数据锁定方法、装置和计算机设备与流程

文档序号:18009602发布日期:2019-06-25 23:50阅读:385来源:国知局
Cache的数据锁定方法、装置和计算机设备与流程
本申请涉及高速缓存存储器
技术领域
,特别是涉及一种cache的数据锁定方法、装置、计算机设备和存储介质。
背景技术
:cache是一种高速缓存存储器,位于中央处理器(centralprocessingunit,cpu)和主存储器之间,具有容量小速度快的特点。由于cpu设计的速度远高于内存,当cpu直接从内存中存取数据时要等待一定的时间,而cache保存着cpu刚用过的或频繁使用的数据(例如可以包括代码或其它类型的数据),如果cpu需要再次使用该部分数据时,cpu可以从cache中直接调用,这样避免了直接从内存中重新读取数据所带来的cpu等待时间,从而提高了cpu的运行效率。由于cache存储器的容量是有限的,在使用的过程中,cache会很快被填满,一旦被填满,cache控制器就会频繁地从cache存储器中移出原来的数据,并存储进新的数据。这种替换操作一般是随机发生的,在任何时刻,某个数据可能存在cache中,也可能不在cache中。当该数据存在cache中时,数据的加载时间短;当该数据不在cache中时,cpu需要去内存重新取值,数据加载时间长。因此一个程序每次执行所需时间就会有差别。在实际应用中,以cache中存储的数据为代码为例,有时候需要执行一些对时间要求很苛刻的代码,而cache中对存储代码的替换操作会带来代码执行时间不确定的问题,对这些代码运行带来很大的影响。为了尽量避免这些特定代码替换和加载带来的时间不确定性,避免cache失效所造成的负面效果,cache的锁定技术能很好的解决上述问题。cache锁定指的是将这部分特殊代码在特定时间内锁定在cache中,被锁定的代码一直存在cache中,避免被主存储器的其他内容所替换。这样被锁定的代码和数据有更快的系统反映能力,由于一直存在cache中,所以相应的执行时间是确定的。然而,现有的cache的数据锁定方法,一般是通过路(way)锁定的方法锁定某一个或多个cache路(cacheway)中的数据,被锁定的cache路中的所有cache行(cacheline)直到被解锁之后才能被替换。这种cache的锁定方式,使系统代码可以单独选择锁定和解锁cache每一路,锁定和解锁步骤简单,但是使用时,常常出现一个cache路被锁定,但是实际上被锁定的数据只占用了该cache路中一少部分空间,其余大量空间被浪费的情况,导致cache存储器的存储空间利用率低下。技术实现要素:基于此,有必要针对上述技术问题,提供一种能够提升cache存储器的存储空间利用率的cache的数据锁定方法、装置、计算机设备和存储介质。一种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的数据锁定方法,还包括:接收cpu的数据解锁指令;数据解锁指令携带待解锁数据的请求地址;根据待解锁数据的请求地址,在cache存储器中查询请求地址命中的cache行;将请求地址命中的cache行中的状态信息段中的行锁定位设置为解锁状态。在一个实施例中,cache的数据锁定方法,还包括:接收cpu的数据读取请求;数据读取请求携带待读取数据的请求地址;根据待读取数据的请求地址,在cache存储器中查询请求地址命中的cache行;若查询出所有cache行均未被请求地址命中,则发送数据读取请求至主存储器,并接收主存储器返回的与数据读取请求对应的数据,将数据写入cache存储器中,并返回数据至cpu。在一个实施例中,cache的数据锁定方法,还包括:根据待读取数据的请求地址,在cache存储器中查询请求地址命中的cache行之后,还包括:若查询出任意一个cache行被请求地址命中,则将cache行中存储的数据读出,并返回读出的数据至cpu。在一个实施例中,在cache存储器中查询请求地址命中的cache行,包括:获取cache存储器中的各个cache路中与请求地址的组索引匹配的cache行;分别将请求地址的标签与各个对应的cache行中的cache标签进行比对;若比较出任意一个cache行中的cache标签与请求地址中的标签匹配,且该cache行中的有效位处于有效状态,则确定该cache行为请求地址命中的cache行。在一个实施例中,当cache行中的状态信息段中的行锁定位设置为锁定状态时,cache行中存储的数据不可被替换且不可被清除。在一个实施例中,当cache行中的状态信息段中的行锁定位设置为解锁状态时,cache行中存储的数据可以被替换或者被清除。一种cache的数据锁定装置,所述装置包括:锁定指令接收模块,用于接收cpu的数据锁定指令;数据锁定指令携带待锁定数据的请求地址;cache行查询模块,用于根据待锁定数据的请求地址,在cache存储器中查询请求地址命中的cache行;第一数据锁定模块,用于将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态。一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:接收cpu的数据锁定指令;数据锁定指令携带待锁定数据的请求地址;根据待锁定数据的请求地址,在cache存储器中查询请求地址命中的cache行;将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收cpu的数据锁定指令;数据锁定指令携带待锁定数据的请求地址;根据待锁定数据的请求地址,在cache存储器中查询请求地址命中的cache行;将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态。上述cache的数据锁定方法、装置、计算机设备和存储介质,通过在每一个cache行中的状态信息段中增加行锁定位,通过设置行锁定位为锁定状态以锁定一个cache行中存储的数据,从而实现对每个cache行数据的单独锁定。在需要锁定某一路中某一cache行的数据时,同个路的其他cache行不必同时被锁定,可以充分利用每个way每一条cache行的存储空间,有效提升了cache存储器的内存使用效率。附图说明图1为一个实施例中cache的数据锁定方法的应用环境图;图2为一个实施例中cache的结构示意图;图3为一个实施例中cache的数据锁定方法的流程示意图;图4为一个实施例中cache的结构示意图;图5为另一个实施例中cache的数据锁定方法的流程示意图;图6为一个实施例中cache的数据写入步骤的流程示意图;图7为一个实施例中四路plru替换选择策略的示意图;图8为一个实施例中本申请优化的四路plru替换选择策略的示意图;图9为一个实施例中锁定一路后得到的三路plru替换选择策略的示意图;图10为一个实施例中锁定两路后得到的二路plru替换选择策略的示意图;图11为一个实施例中cache的数据锁定装置的结构框图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。本申请提供的cache的数据锁定方法,可以应用于如图1所示的应用环境中。其中,cache控制器121分别与中央处理器(cpu)110、cache存储器120和主存储器130连接。cache控制器121、中央处理器110、cache存储器120和主存储器130可以包含于终端内,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑等等。本申请实施例中,cache存储器120和主存储器130之间的数据存取结构关系为一种n路多路组相联结构(nwayset-associative)的方式,即主存储器130中包括多块数据块,其中的任意一块数据块可能在cache存储器120中的n路对应的n个cache行中出现,n可能是2,4,8,12,或其他值。以4路多路组相联结构为例,则如图2所示,cache分成s组,每组包含4个cache行,也称为四路(4ways),主存中的每个数据块只能位于s个set中的某一个,但可以在指定set中的任意一个cache行中,例如主存储器中index=0的数据块可以存储于cache存储器中set0,way0-4四路中的任意一路对应的cache行。而如果将四路组相联中的其中任意一路取出来看,则对应的该一路组相联中可以包括主存中所有数据块在该路的一个cache行。在一个实施例中,如图3所示,提供了一种cache的数据锁定方法,本申请实施例的cache的数据锁定方法可以包括数据锁定、数据读取、数据写入和数据解锁等阶段的步骤,以该方法应用于图1中的终端为例进行说明,其中数据锁定阶段可以包括以下步骤:s310,接收cpu的数据锁定指令;数据锁定指令携带待锁定数据的请求地址;本步骤中,cache控制器接收cpu的数据锁定指令,其中,该数据锁定指令中携带有待锁定数据的请求地址。s320,根据待锁定数据的请求地址,在cache存储器中查询是否存在请求地址命中的cache行?若查询出cache存储器中存在请求地址命中的cache行,则执行s330;本步骤中,cache控制器根据待锁定数据的请求地址,在cache存储器中查询是否存在请求地址命中的cache行,其中,命中(hit)是指的在cache控制器中成功查找到该请求地址对应请求的数据,也即需要请求的数据存储在cache控制器中的情况。s330,将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态。本步骤中,在当s320查询出cache存储器中存在请求地址命中的cache行时,则将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态,当cache行中的状态信息段中的行锁定位设置为锁定状态时,cache行中存储的数据不可被替换且不可被清除,以保证被锁定的数据可以固定存储在cache存储器中,并在需要的时候被读取到。本申请实施例中,通过在cache行中的状态信息段中增加行锁定位,实现对cache行中数据的锁定或解锁。如图4所示,为一种常见的dcache结构图,在图中所示的目录存储段和状态信息段可以统称为标签(tag),tag用于比较识别当前的cache行是否有效,是否被修改,以及用于比较cpu请求的地址是否命中该cache行。其中,行锁定位设置为锁定状态可以通过对行锁定位赋值实现。作为示例地,可以通过在tag中增加1位的行锁定位,用于指示当前cache行是否处于被锁定状态,如下表1所示,lbit为1代表当前行被锁定,lbit为0代表当前行未锁定,允许被替换出去。表1tag信息目录存储段行锁定位有效位修改位cache标签lvd上述cache的数据锁定方法,通过在每一个cache行中的状态信息段中增加行锁定位,通过设置行锁定位为锁定状态以锁定一个cache行中存储的数据,从而实现对每个cache行数据的单独锁定。在需要锁定某一路中某一cache行的数据时,同个路的其他cache行不必同时被锁定,可以充分利用每个way每一条cache行的存储空间,有效提升了cache存储器的内存使用效率。上述cache的数据锁定方法,在cache中加载锁定数据之前不用先清除已存入cache中的数据,在cache存储器中查询到数据时即可写入行锁定位完成对cache中的数据的锁定,锁定方式简单高效。解锁时也可采用上述近似的步骤,将tag中的行锁定位设置为解锁状态即可。这样在任何运行时刻都可以对需要的数据进行锁定和解锁,解决了传统cache的数据锁定方法对锁定数据的加载效率差和使用灵活性差的问题。如果在cache存储器中查询不到命中的数据,则需要从主存储器中请求所需的数据。在一个实施例中,如图5所示,在s320根据待锁定数据的请求地址,在cache存储器中查询是否存在请求地址命中的cache行之后,还包括:若查询出cache存储器中不存在请求地址命中的cache行,则执行s340-s350;其中,查询出cache存储器中不存在请求地址命中的cache行,也即请求地址未命中(miss)cache存储器中的cache行,即需要查找的数据没有存储在cache存储器中。s340,发送与数据锁定指令对应的数据读取请求至主存储器,并接收主存储器返回的与数据读取请求对应的数据;s350,将主存储器返回的数据写入cache存储器中,并将写入了数据的cache行中的状态信息段中的行锁定位设置为锁定状态。其中,s350至少可以通过两种方式实现,在其中一个实施例中,s350包括:将主存储器返回的数据写入cache存储器中;接收cpu的数据锁定指令;数据锁定指令携带主存储器返回的数据的请求地址;根据所述请求地址,从cache存储器中查询请求地址命中的cache行,将命中的cache行中的状态信息段中的行锁定位设置为锁定状态。本实施例中,无需为主存储器返回的数据锁定单独设置锁定方式,在将数据写入cache存储器中的cache行中时不设置行锁定位,而是在将数据返回给cpu之后,通过cpu发起的数据锁定指令,采用与常规数据锁定相同的方式锁定主存储器返回的数据,实施较为简单。而在另一个实施例中,s350包括:将主存储器返回的数据写入cache存储器中,并在将数据写入的cache行中的有效位设置为有效并且标记相应的cache标签时,将该cache行中的状态信息段中的行锁定位设置为锁定状态。本实施例中,在存储器返回数据的同时标记行锁定位,可以更高效率地完成对返回数据的锁定。在一个实施例中,本申请cache的数据锁定方法中的数据读取阶段可以包括如下步骤:接收cpu的数据读取请求;数据读取请求携带待读取数据的请求地址;根据待读取数据的请求地址,在cache存储器中查询请求地址命中的cache行;判断请求地址是否命中cache存储器中的cache行?若所有cache行均未被请求地址命中,则发送数据读取请求至主存储器,并接收主存储器返回的与数据读取请求对应的数据,将数据写入cache存储器中,并返回数据至cpu。在一个实施例中,判断请求地址是否命中cache存储器中的cache行之后,还包括:若查询出任意一个cache行被请求地址命中,则将cache行中存储的数据读出,并返回读出的数据至cpu。上述两个实施例中,提供了本申请cache的数据锁定方法下对应地对cache存储器中存储的数据的读取方法。而在读取数据的请求地址未命中时,可以将s440中接收的数据存储入cache存储器中,以便于下一次的数据读取,如果此时cache存储器中四个路对应位置的四条cache行均已经存储有数据,则需要选择cache行进行数据替换的操作。在一个实施例中,本申请各个实施例中的在cache存储器中查询请求地址命中的cache行,包括:获取cache存储器中的各个cache路中与请求地址的组索引匹配的cache行;分别将请求地址的标签与各个对应的cache行中的cache标签进行比对;若比较出任意一个cache行中的cache标签与请求地址中的标签匹配,且该cache行中的有效位处于有效状态,则确定该cache行为请求地址命中的cache行。例如,在一个四路组相联的cache系统中,cpu每次发起请求地址时,都会将4个way中与该请求地址对应的4个cache行的tag信息读出,当4个tag的任意一个的cache标签和请求地址的标签一致并且该tag的有效位v为1时,代表当前请求的地址命中cache(hit),请求的数据直接从cache返回。具体地,如图4所示,cache控制器将请求地址与cache行中的tag信息比对可以通过如下步骤实现:通过请求地址中组索引的内容(内容表达1个路中的第几行),如组索引为4,查找每个路的第4行cache行。得到4条cache行中目录存储段,状态信息段和数据项段的信息。针对每条cache行,假如v=0,说明这个cache行的信息是无效的;假如v=1,则对比cache标签和请求地址的标签,如果不匹配,说明当前cache行没有缓存现在请求地址中的内容。假如v=1且cache标签==请求地址的标签,则匹配成功(命中),下一步通过请求地址中的数据索引,从cache存储器中的数据项段,获取需要的内容,数据索引内容为n,则取第n个word。而当请求地址对4条cache行都不命中cache(miss)时,则cache控制器需要向主存储器请求所需的数据。在从主存储器请求得到所需的数据后,假如此时4个way已经缓存了有效的数据,那么此时需要选择4个way中的其中一个替换出去,腾出缓存的空间给这次请求。在一个实施例中,如图6所示,本申请cache的数据锁定方法中的数据写入阶段可以包括如下步骤:s610,获取待写入cache存储器中的数据,以及数据对应的请求地址;s620,读取与请求地址对应的各个cache行中的状态信息段中的行锁定位;s630,排除行锁定位设置为锁定状态的cache行,在剩余的行锁定位设置为未锁定状态的cache行中,选择一个cache行;s640,将主存储器返回的数据替换写入选择的cache行中。在一个实施例中,排除行锁定位设置为锁定状态的cache行,在剩余的行锁定位设置为未锁定状态的cache行中,选择一个cache行,包括:排除行锁定位设置为锁定状态的cache行,得到剩余的行锁定位设置为未锁定状态的cache行形成的多路组相联结构;根据多路组相联结构,获取剩余的cache行的替换策略;根据替换策略,从剩余的cache行中选择一个cache行。在一个实施例中,在锁定cache行时,只需要将需锁定的cache行的替换优先级强制设置为最低,则可保证被锁定的cache行永远不会被替换出去,该方法适合任意替换策略。在一个实施例中,替换策略可以包括:随机替换策略(randomreplacement)、先进先出策略(firstinfirstout,fifo)、最不经常使用策略(leastfrequentlyused,lfu)、最近最少使用策略(leastrecentlyused,lru)或者伪最近最少使用策略(pseudoleastrecentlyused,plru)等等。本申请上述各个实施例的数据写入方法,将被锁定的行排除掉,取剩余未锁定的行生成对应的替换策略,以选择得到适宜的cache行,利用该选择的cache行替换存储新的数据,可以针对单个cache行进行选择替换,具有较高的数据替换写入效率。提升了存储空间的使用效率。作为示例地,当使用随机替换策略时,由于本申请技术方案使用行锁定的方法,所以以四路组相联的随机替换为例,当cachemiss时可以通过tag信息得到寻址到的4条cacheline的锁定信息,当相应cacheline的锁定位l为1时,该cacheline被锁定,不允许被替换出去。当所有4个cacheline都被锁定时,cache只读回寻址内容,不分配缓存行,则随机替换策略下本申请实施例的数据写入阶段读取到4way中与请求地址对应的4条cacheline中的行锁定位l0、l1、l2和l3在不同取值下对应的替换选择策略如下表2所示。表2随机替换策略下的替换选择作为示例地,当使用伪最近最少使用策略时,参考图7所示,为一种四路组相联的plru替换策略。表中b0-b2代表替换选择位,way0-way3代表被替换选中的way中的cacheline。两者关系如表3所示,其中b0-b2可组合出4种替换选择。当b0==0并且b1==0时选择替换way0相应的cacheline,当b0==0并且b1==1时选择替换way2相应的cacheline,当b0==1并且b2==0时选择替换way1相应的cacheline,当b0==1并且b2==1时选择替换way3相应的cacheline。表3plru替换选择在本申请对上述方案优化后,当cachemiss时我们可以通过tag信息得到寻址到的4条cacheline的锁定信息,并与上述cacheline的plru替换策略相结合得到图8所示的plru替换策略。在way选择的通路上增加一个锁定位的开关,用于控制该路是否能被替换选中,若被锁定,则相应路的cacheline不允许被替换出去。例如,在通过tag信息得到寻址到的4条cacheline的锁定信息后,发现way3的cacheline被锁定,那么plru替换策略在替换时关闭way3的选择通路,当前cacheline的plru替换策略可变为一种3way的plru替换策略,如图8所示,但不局限于图9所示的plru替换策略。例如,通过tag信息得到寻址到的4条cacheline的锁定信息后,发现way2和way3的cacheline被锁定,那么plru替换策略在替换时关闭way2和way3的选择通路,当前cacheline的plru替换策略可变为一种2way的plru替换策略,如图9所示,但不局限于图10所示的plru替换策略。综上所述,在四路组相联的cache中,在4个way的同一个位置上的4条cacheline中,当同一位置的2条cacheline被锁定时,这个位置上剩余的另外2条cacheline变成了一个2way组相联的结构;同理在4个way的同一个位置上的4条cacheline中,当同一位置的1条cacheline被锁定时,这个位置上剩余的另外3条cacheline变成了一个3way组相联的结构;而其他位置上的cacheline仍然是4way组相联的结构。这样可以实现对cacheline的快速选择替换,且无论锁定多少处代码,锁定代码无论多离散,都可以将每个way的存储空间充分地使用起来,有效提升了cache存储空间利用率。在一个实施例中,本申请cache的数据锁定方法中的数据解锁阶段可以包括如下步骤:接收cpu的数据解锁指令;数据解锁指令携带待解锁数据的请求地址;根据待解锁数据的请求地址,在cache存储器中查询请求地址命中的cache行;将请求地址命中的cache行中的状态信息段中的行锁定位设置为解锁状态。其中,当cache行中的状态信息段中的行锁定位设置为解锁状态时,cache行中存储的数据可以被替换或者被清除。本实施例中,在对cache中锁定的数据进行解锁时,在查询到待解锁数据的请求地址命中的cache行时,即将该cache行中的状态信息段中的行锁定位设置为解锁状态,可以实现对cache中锁定的数据的快速解锁。应该理解的是,虽然图3、图5和图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3、图5和图6中的流程图中至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,如图11所示,提供了一种cache的数据锁定装置1100,包括:锁定指令接收模块1110,用于接收cpu的数据锁定指令;数据锁定指令携带待锁定数据的请求地址;cache行查询模块1120,用于根据待锁定数据的请求地址,在cache存储器中查询请求地址命中的cache行;第一数据锁定模块1130,用于将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态。在一个实施例中,cache的数据锁定装置还包括:数据请求模块,用于若查询出cache存储器中不存在所述请求地址命中的cache行,则发送与所述数据锁定指令对应的数据读取请求至主存储器,并接收主存储器返回的与所述数据读取请求对应的数据;第二数据锁定模块,用于将所述数据写入cache存储器中,并将写入了所述数据的cache行中的状态信息段中的行锁定位设置为锁定状态。在一个实施例中,cache的数据锁定装置还包括数据替换模块,用于获取待写入cache存储器中的数据,以及数据对应的请求地址;读取与请求地址对应的各个cache行中的状态信息段中的行锁定位;排除行锁定位设置为锁定状态的cache行,在剩余的行锁定位设置为未锁定状态的cache行中,选择一个cache行;将主存储器返回的数据替换写入选择的cache行中。在一个实施例中,数据替换模块进一步用于排除行锁定位设置为锁定状态的cache行,得到剩余的行锁定位设置为未锁定状态的cache行形成的多路组相联结构;根据多路组相联结构,获取剩余的cache行的替换策略;根据替换策略,从剩余的cache行中选择一个cache行。在一个实施例中,cache的数据锁定装置还包括:数据解锁模块,用于接收cpu的数据解锁指令;数据解锁指令携带待解锁数据的请求地址;根据待解锁数据的请求地址,在cache存储器中查询请求地址命中的cache行;将请求地址命中的cache行中的状态信息段中的行锁定位设置为解锁状态。在一个实施例中,cache的数据锁定装置还包括:数据读取模块,用于接收cpu的数据读取请求;数据读取请求携带待读取数据的请求地址;根据待读取数据的请求地址,在cache存储器中查询请求地址命中的cache行;若查询出所有cache行均未被请求地址命中,则发送数据读取请求至主存储器,并接收主存储器返回的与数据读取请求对应的数据,将数据写入cache存储器中,并返回数据至cpu。在一个实施例中,数据读取模块还用于若查询出任意一个cache行被请求地址命中,则将cache行中存储的数据读出,并返回读出的数据至cpu。在一个实施例中,cache行查询模块用于获取cache存储器中的各个cache路中与请求地址的组索引匹配的cache行;分别将请求地址的标签与各个对应的cache行中的cache标签进行比对;若比较出任意一个cache行中的cache标签与请求地址中的标签匹配,且该cache行中的有效位处于有效状态,则确定该cache行为请求地址命中的cache行。在一个实施例中,当cache行中的状态信息段中的行锁定位设置为锁定状态时,cache行中存储的数据不可被替换且不可被清除。在一个实施例中,当cache行中的状态信息段中的行锁定位设置为解锁状态时,cache行中存储的数据可以被替换或者被清除。关于cache的数据锁定装置的具体限定可以参见上文中对于cache的数据锁定方法的限定,在此不再赘述。上述cache的数据锁定装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收cpu的数据锁定指令;数据锁定指令携带待锁定数据的请求地址;根据待锁定数据的请求地址,在cache存储器中查询请求地址命中的cache行;将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态。在一个实施例中,处理器执行计算机程序时还实现如上任意一个实施例的cache的数据锁定方法的步骤。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收cpu的数据锁定指令;数据锁定指令携带待锁定数据的请求地址;根据待锁定数据的请求地址,在cache存储器中查询请求地址命中的cache行;将查询到的请求地址命中的cache行中的状态信息段中的行锁定位设置为锁定状态。在一个实施例中,计算机程序被处理器执行时还实现如上任意一个实施例的cache的数据锁定方法的步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1