CN104991868B - 一种多核处理器系统和缓存一致性处理方法 - Google Patents
一种多核处理器系统和缓存一致性处理方法 Download PDFInfo
- Publication number
- CN104991868B CN104991868B CN201510314083.6A CN201510314083A CN104991868B CN 104991868 B CN104991868 B CN 104991868B CN 201510314083 A CN201510314083 A CN 201510314083A CN 104991868 B CN104991868 B CN 104991868B
- Authority
- CN
- China
- Prior art keywords
- states
- cache
- processor
- cache rows
- rows
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 230000004044 response Effects 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 24
- 230000006399 behavior Effects 0.000 claims description 48
- 238000000034 method Methods 0.000 claims description 24
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000007704 transition Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000033228 biological regulation Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种多核处理器系统和缓存一致性处理方法。本发明提供的多核处理器系统用于执行缓存一致性处理,多核处理器系统中的cache行具有M、E、K、I和F态;第一处理器内核用于向第二处理器内核发送请求进行读操作的第一请求消息;第二处理器内核,用于将第一cache行中的数据携带在第一响应消息中发送给第一处理器内核,并将第一cache行的状态更改为K态,其中,第二处理器内核在将第一cache行的状态由M态更改为K态后,忽略将第一cache行中的数据写入内存的操作。本发明解决了现有技术中的多核处理器系统在执行缓存一致性处理时,由于内存参与处理的可能性较大,从而导致多核处理器系统的性能较差的问题。
Description
技术领域
本发明涉及计算机技术,尤指一种多核处理器系统和缓存一致性处理方法。
背景技术
多核处理器系统的各处理器内核通常依据缓存一致性协议进行缓存一致性的维护,缓存一致性协议直接影响多核处理器系统的数据访问性能,进而影响多核处理器的整体性能。
目前通常使用的缓存一致性协议包括MESIF协议和MOESI协议。一方面,MESIF协议通过在MESI协议中引入转发(Forwarding,简称为:F)态,在多核处理器系统中存在多个共享(Shared,简称为:S)态cache行,并且此时有一处理器内核请求读取该些S态高速缓冲存储器(cache)行中的数据时,可以将其中一个S态cache行的状态更改为F态,并转发该F态cache行中的数据,解决了MESI协议中S态的cache行中的数据不能转发的问题,从而减少了对内存的访问次数;然而,当修改(Modified,简称为:M)态的cache行变更为S态时,仍然需要即刻将cache行中的数据写入到内存中。另一方面,MOESI协议通过引入拥有(Owned,简称为:O)态,在读取M态cache行的数据时,将该M态cache行的状态变更为O态,用于记录并延迟该cache行将数据写入内存的操作,从而避免了M态cache行变更为S态时非必要的写回操作,然而,当某一处理器内核请求读取多个S态cache行中相同的共享数据时,通常的处理方式为:所有的S态cache行都向该处理器内核发送数据,或者通过访问内存来获取数据。
然而,现有技术中的多核处理器系统在执行缓存一致性处理的过程中,由于内存参与处理的可能性较大,从而导致多核处理器系统的性能较差的问题。
发明内容
为了解决上述技术问题,本发明提供了一种多核处理器系统和缓存一致性处理方法,以解决现有技术中的多核处理器系统在执行缓存一致性处理时,由于内存参与处理的可能性较大,从而导致多核处理器系统的性能较差的问题。
第一方面,本发明提供一种多核处理器系统,所述多核处理器系统用于执行缓存一致性处理,所述多核处理器系统包括第一处理器内核和第二处理器内核,所述多核处理器系统中的cache行具有修改M态、独占E态、保持K态、无效I态和转发F态;
所述第一处理器内核,用于向所述第二处理器内核发送第一请求消息,所述第一请求消息用于请求对所述第二处理器内核中的第一cache行进行读操作,所述第一cache行处于M态或E态;
所述第二处理器内核,用于当接收到所述第一请求消息后,将所述第一cache行中的数据携带在第一响应消息中发送给所述第一处理器内核,并将所述第一cache行的状态更改为K态,其中,所述第二处理器内核,还用于在将所述第一cache行的状态由M态更改为K态后,忽略将所述第一cache行中的数据写入所述内存的操作;
所述第一处理器内核,还用于当接收到所述第一响应消息后,将所述第一cache行中的数据读入所述第一处理器内核中与所述第一cache行地址相同的第二cache行中,并将所述第二cache行的状态由I态更改为F态。
在第一方面的第一种可能的实现方式中,所述第一处理器内核,还用于在向所述第二处理器内核发送第一请求消息之前,向第二cache发送第二请求消息,所述第二请求消息用于请求对所述第二cache行进行读操作;
所述第一处理器内核,还用于当所述第二cache行为K态、F态、E态或M态时,接收所述第二cache发送的第二响应消息,并保持所述第二cache行的当前状态,其中,所述第二响应消息中包括所述第二cache行中的数据,当所述第二cache行为I态时,向所述第二处理器内核发送第一请求消息。
在第一方面的第二种可能的实现方式中,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;
所述第三处理器内核,用于在所述第三cache行为I态时,向所述第一处理器内核和所述第二处理器内核发送第三请求消息,所述第三请求消息用于请求对与所述第三cache行地址相同的cache行进行读操作;
所述第一处理器内核,还用于当接收到所述第三请求消息后,且所述第二cache行处于F态时,将所述第二cache行中的数据携带在第三响应消息中发送给所述第三处理器内核,并将所述第二cache行的状态由F态更改为K态;
所述第二处理器内核,还用于当接收到所述第三请求消息后,且所述第一cache行处于K态时,根据所述第一cache行的状态忽略应答所述第三请求消息,并保持所述第一cache行处于K态;
所述第三处理器内核,还用于接收所述第三响应消息,将所述第二cache行中的数据读入所述第三cache行中,并将所述第三cache行的状态由I态更改为F态。
在第一方面的第三种可能的实现方式中,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;
所述第三处理器内核,用于向所述第一处理器内核和所述第二处理器内核发送第四请求消息,所述第四请求消息用于指示对所述第三cache行进行写操作;
所述第一处理器内核,还用于当接收到所述第四请求消息后,且所述第二cache行处于F态时,根据所述第四请求消息将所述第二cache行的状态由F态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第二处理器内核,还用于当接收到所述第四请求消息后,且所述第一cache行处于K态时,根据所述第四请求消息将所述第一cache行的状态由K态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第三处理器内核,还用于分别接收所述第一处理器内核和所述第二处理器内核发送的第四响应消息,根据所述接收到的第四响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态。
根据第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第三处理器内核,还用于在向所述第一处理器内核和所述第二处理器内核发送第四请求消息之前,向所述第三cache发送第五请求消息,所述第五请求消息用于请求对所述第三cache行进行写操作;
所述第三处理器内核,还用于当所述第三cache行为E态或M态时,接收所述第三cache发送的第五响应消息,根据所述第五响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态,当所述第三cache行为I态、K态或F态时,向所述第一处理器内核和所述第二处理器内核发送第四请求消息。
根据第一方面、第一方面的第一种到第三种可能的实现方式中任意一种,在第五种可能的实现方式中,任一所述处理器内核,还用于在对任一K态cache行进行读操作或写操作,且所述K态cache行已填满时,将所述K态cache行中的数据替换为待读取或待写入的数据;和/或,
任一所述处理器内核,还用于在对任一F态cache行进行读操作或写操作,且所述F态cache行已填满时,检测所述多核处理器系统中是否存在与所述F态cache行的地址相同的K态cache行;
若存在,则将其中一个与所述F态cache行的地址相同的K态cache行的状态更改为F态,并将所述F态cache行中的数据替换为待读取或待写入的数据;
若不存在,则将所述F态cache行中的数据存入所述多核处理器系统的内存中,并将所述F态cache行中的数据替换为待读取或待写入的数据。
第二方面,本发明提供一种缓存一致性处理方法,执行所述缓存处理方法的多核处理器系统包括第一处理器内核、第二处理器内核和内存,所述多核处理器系统中的cache行具有修改M态、独占E态、保持K态、无效I态和转发F态,所述方法包括:
所述第一处理器内核向所述第二处理器内核发送第一请求消息,所述第一请求消息用于请求对所述第二处理器内核中的第一cache行进行读操作,所述第一cache行处于M态或E态;
所述第二处理器内核将所述第一cache行中的数据携带在第一响应消息中发送给所述第一处理器内核,并将所述第一cache行的状态更改为K态,其中,所述第二处理器内核在将所述第一cache行的状态由M态更改为K态后,忽略将所述第一cache行中的数据写入所述内存的操作;
所述第一处理器内核将所述第一cache行中的数据读入所述第一处理器内核中与所述第一cache行地址相同的第二cache行中;
所述第一处理器内核将所述第二cache行的状态由I态更改为F态。
在第二方面的第一种可能的实现方式中,所述第一处理器内核向所述第二处理器内核发送第一请求消息之前,还包括:
所述第一处理器内核向所述第二cache发送第二请求消息,所述第二请求消息用于请求对所述第二cache行进行读操作;
所述第一处理器内核判断所述第二cache行的状态是否为I态;
若否,则所述第一处理器内核接收所述第二cache发送的第二响应消息,并保持所述第二cache行的当前状态,其中,所述第二响应消息中包括所述第二cache行中的数据;
若是,则所述第一处理器内核向所述第二处理器内核发送第一请求消息。
在第二方面的第二种可能的实现方式中,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;所述方法还包括:
所述第三处理器内核在所述第三cache行为I态时,向所述第一处理器内核和所述第二处理器内核发送第三请求消息,所述第三请求消息用于请求对与所述第三cache行地址相同的cache行进行读操作;
所述第一处理器内核在所述第二cache行处于F态时,将所述第二cache行中的数据携带在第三响应消息中发送给所述第三处理器内核,并将所述第二cache行的状态由F态更改为K态;
所述第二处理器内核在所述第一cache行处于K态时,根据所述第一cache行的状态忽略应答所述第三请求消息,并保持所述第一cache行处于K态;
所述第三处理器内核将所述第二cache行中的数据读入所述第三cache行中,并将所述第三cache行的状态由I态更改为F态。
在第二方面的第三种可能的实现方式中,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;所述方法还包括:
所述第三处理器内核向所述第一处理器内核和所述第二处理器内核发送第四请求消息,所述第四请求消息用于指示对所述第三cache行进行写操作;
所述第一处理器内核在所述第二cache行处于F态时,根据所述第四请求消息将所述第二cache行的状态由F态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第二处理器内核在所述第一cache行处于K态时,根据所述第四请求消息将所述第一cache行的状态由K态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第三处理器内核根据所述接收到的第四响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态。
根据第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第三处理器内核向所述第一处理器内核和所述第二处理器内核发送第四请求消息之前,还包括:
所述第三处理器内核向所述第三cache发送第五请求消息,所述第五请求消息用于请求对所述第三cache行进行写操作;
所述第三处理器内核判断所述第三cache行的状态;
当所述第三cache行为E态或M态时,所述第三处理器内核接收所述第三cache发送的第五响应消息,根据所述第五响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态;
当所述第三cache行为I态、K态或F态时,所述第三处理器内核向所述第一处理器内核和所述第二处理器内核发送第四请求消息。
本发明提供的多核处理器系统和缓存一致性处理方法,其中多核处理器系统包括第一处理器内核和第二处理器内核,通过规定该系统中cache行的五种状态,包括M态、E态、K态、I态和F态,在第一处理器内核向第二处理器内核发送第一请求消息,以请求对第二处理器内核中的第一cache行进行读操作时,第二处理器内核将第一cache行数据携带在第一响应消息中返回给第一处理器内核,并将该第一cache行的状态更改为K态,特别地,当第一cache行的状态由M态更改为K态后,第二处理器内核不执行将第一cache行中的数据写入内存的操作,即避免了非必要的写回操作,另外,第一处理器内核将该第一cache行中的数据读入地址相同的第二cache行中,并将该第二cache行的状态由I态更改为F态,该F态第二cache行用于后续进行共享数据的转发操作,从而避免了需要通过访问内存来实现数据的转发;即本实施例提供的多核处理器系统从多个方面降低了内存参与一致性处理的概率,解决了现有技术中的多核处理器系统在执行缓存一致性处理时,由于内存参与处理的可能性较高,从而导致多核处理器系统的性能较差的问题。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例提供的一种多核处理器系统的结构示意图;
图2为本发明实施例提供的一种多核处理器系统的结构示意图;
图3为MESIF协议中cache行的状态转换示意图;
图4为MOESI协议中cache行的状态转换示意图;
图5为本发明实施例提供的多核处理器系统中cache行的状态转换示意图;
图6为本发明实施例提供的一种缓存一致性处理方法的流程图;
图7为本发明实施例提供的又一种缓存一致性处理方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明以下各实施例所提供多核处理器系统中的cache行均具有M态、独占(Exclusive,简称为:E)态,保持(Keeping,简称为:K)态、无效(Invalid,简称为:I)态和F态,以下具体对本发明各实施例中cache行的状态作以说明:
(1)、M态:cache行数据被修改过,与内存中数据相比,cache行中保持最新的数据副本,内存中对应的内容过期;
(2)、E态:cache行中保存该多核处理器系统中的唯一有效数据副本,且该数据副本的内容与内存一致;
(3)、K态:cache行中保持有最新的数据副本,内存中对应的可能过期,即cache行中的数据可能被修改过,也可能没有被修改过;
(4)、I态:cache行中没有的有效的数据副本;
(5)、F态:cache行中具有可转发的数据副本,用于应答其它处理器内核的读写请求,内存中对应的内容可能过期。
下面以具体的实施例对本发明的技术方案进行详细说明,本发明各实施例中的第一、第二和第三处理器内核为多核处理器系统中内核,在对cache行进行读写操作时,需要保持每个处理器内核中cache行的一致性,具体指对地址相同的cache行进行一致性处理,即本发明各实施例中的第一cache行、第二cache行和第三cache行的地址相同。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明实施例提供的一种多核处理器系统的结构示意图。本实施例提供的多核处理器系统100适用执行缓存一致性处理,该多核处理器系统100通常以硬件和软件的方法来实现,该系统包括相连接的第一处理器内核11和第二处理器内核12,例如该第一处理器内核11和第二处理器内核12可以分别与总线相连接,以实现互连。
其中,第一处理器内核11,用于向第二处理器内核12发送第一请求消息,该第一请求消息用于请求对第二处理器内核12中的第一cache行进行读操作,该第一cache行处于M态或E态。
第二处理器内核12,用于当接收到第一请求消息后,将第一cache行中的数据携带在第一响应消息中发送给第一处理器内核11,并将第一cache行的状态更改为K态。需要说明的是,第二处理器内核12还用于在第一cache行的状态由M态更改为K态后,忽略将第一cache行中的数据写入内存10的操作。
在本实施例中,当第二处理器内核12接收到收到请求者,即第一处理器内核11发起的对同一地址的数据发起的读请求时,可以识别出第一cache行的地址与第一处理器内核11发起读请求的cache行地址的相同,因此,将该第一cache行的数据返回给第一处理器内核11,并将第一cache行的状态更改为K态。与MESIF协议的缓存一致性处理方式相比,将第一cache行的状态由M态更改为K态时,可以避免现有的MESI协议中将第一cache行的状态由M态更改为S态时,需要将该第一cache行中的数据写入内存的操作,由于系统访问内存的周期通常大于访问缓存的周期,即若需要将第一cache行中的数据写入内存,则会造成参与处理的第二处理器内核12暂停执行其他任务,并且,由于内存的带宽有限,对于集成了多个处理器内核的多核处理器系统来说,各处理器内核频繁的访问内存会导致内存访问拥塞,访存性能下降,从而降低了多核处理器系统的整体性能。
第一处理器内核11,还用于当接收到第一响应消息后,将第一cache行中的数据读入第一处理器内核11中与第一cache行地址相同的第二cache行中,并将第二cache行的状态由I态更改为F态。
在本实施例中,第一处理器内核11在获取到第二处理器内核12返回的第二响应消息和第一cache行中的数据后,将该数据填充到与第一cache行地址相同的第二cache行中,即完成了第一处理器内核11对第一cache行的读操作,在填入数据后第二cache行的状态也发送响应的改变,即由I态更改为F态,本实施例中的第一处理器内核11通过将第二处理器内核12中的第一cache行中的数据读入到其自身的第二cache行中,根据缓存一致性处理规则可知,该第二cache行在读取数据前为I态。与MOESI协议的缓存一致性处理方式相比,本实施例在解决MESI协议中由于M态cache行更改为S态而导致非必要的写回操作的同时,对共享数据的转发进行了优化。
需要说明的是,本实施例中的F态与上述MESIF协议中的F态不同,具体地,MESIF协议中对多个S态cache行进行读操作时,将其中一个S态cache行变更为F态,从而由该F态的cache行进行数据的转发,即该F态是S态的特例,所有的F态cache行一定是通过对S态cache行进行标识而产生的,并且根据S态在协议中的规定,该F态cache行中的数据与内存中的值是一致的。相比之下,本实施例中的F态cache行是从K态cache行中选择出的,当相同地址的cache行中,有一个被读取的cache行变为K态,相应地获取数据的cache行就变为F态,并且系统中相同地址的多个cache行中,仅有一个F态cache行,与其它K态cache行中的数据相同,具体由该一个F态cache行执行后续数据的转发工作,即解决了共享数据转发的问题;另外,在本实施例中,K态是由M态或E态cache行中的数据被读取而变更的,也就是说,当系统中的数据副本从一个变为多个时,原来处于E态或M态的cache行变为K态,不执行将数据回写到内存10的操作,并且该K态cache行中的数据与内存10中的值可以是一致的,也可以是不一致的,类似地,对于F态cache行来说也是相同的。
本实施例提供的多核处理器系统,包括第一处理器内核和第二处理器内核,通过规定该系统中cache行的五种状态,包括M态、E态、K态、I态和F态,在第一处理器内核向第二处理器内核发送第一请求消息,以请求对第二处理器内核中的第一cache行进行读操作时,第二处理器内核将第一cache行数据携带在第一响应消息中返回给第一处理器内核,并将该第一cache行的状态更改为K态,特别地,当第一cache行的状态由M态更改为K态后,第二处理器内核不执行将第一cache行中的数据写入内存的操作,即避免了非必要的写回操作,另外,第一处理器内核将该第一cache行中的数据读入地址相同的第二cache行中,并将该第二cache行的状态由I态更改为F态,该F态第二cache行用于后续进行共享数据的转发操作,从而避免了需要通过访问内存来实现数据的转发;即本实施例提供的多核处理器系统从多个方面降低了内存参与一致性处理的概率,解决了现有技术中的多核处理器系统在执行缓存一致性处理时,由于内存参与处理的可能性较高,从而导致多核处理器系统的性能较差的问题。
进一步地,虽然MOESI协议通过引入O态避免了M态cache行变更为S态时非必要的写回操作,然而,当某一处理器内核请求读取多个S态cache行中相同的共享数据时,通常的处理方式为:一方面,所有的S态cache行都向该处理器内核发送数据,该方式中由于所有S态cache行均可以发送数据而导致会一致性互连网络负载显著增加,并且导致网络拥塞,特别是对于具有广播特性的网络,如总线结构、环结构等;另一方面,通过访问内存来获取数据,该方式会导致额外的内存访问,增加数据访问延迟,占用内存带宽。本实例提供的多核处理器系统,在避免M态cache行变更为S态时非必要的写回操作的同时,很好的处理了共享数据转发问题,从多个方面降低了内存参与一致性处理的概率。
在上述图1所示实施例中,第一处理器内核11在进行读操作时,通常需要对其自身中的cache行,例如是第二cache行进行读操作,在该第二cache行为I态而无法进行读取操作,才通过总线向系统中的其它处理器内核发送第一请求消息。也就是说,本实施例中的第一处理器内核11,还用于在向第二处理器内核12发送第一请求消息之前,向第二cache发送第二请求消息,第二请求消息用于请求对第二cache行进行读操作;相应地,第一处理器内核11,还用于当第二cache行为K态、F态、E态或M态时,接收第二cache发送的第二响应消息,并保持第二cache行的当前状态,其中,第二响应消息中包括第二cache行中的数据,当第二cache行为I态时,向第二处理器内核12发送第一请求消息。
在本实施例中,第一处理器内核11读取自身的cache行,具体对第二cache行进行读操作,在该第二cache行为K态、F态、E态或M态时,可以直接进行数据发送操作,即直接将该第二cache行中的数发送给第一处理器内核11,并且该第二cache行的状态不发生变化;在另一种情况中,第二cache行为I态时,即该第二cache行中无有效数据副本,因此,第一处理器内核11可以通过向该系统中的其它处理器内核发送读请求的方式,获取相同地址的cache行中的数据,以实现读操作。
图2为本发明实施例提供的一种多核处理器系统的结构示意图。本实施例提供的多核处理器系统100在上述图1所示实施例的基础上,还包括与总线相连的第三处理器内核13,该第三处理器内核13中的第三cache行与上述第二cache行和第一cache行的地址相同。
本实施例中的第三处理器内核13同样可以执行读操作,例如可以是对第三cache行请求读操作,由于此时系统中其它处理器内核中与第三cache行地址相同的cache行的状态与图1所示实施例中第一处理器内核11在执行读操作时不同,此时,第一cache行为K态,第二cache行为F态,上述已经说明本发明各实施例中K态和F态的规则,当第三处理器内核13对第三cache行请求读操作,且该第三cache行为I态时,同样需要向系统中的其它处理器内核发送读请求以获取相同地址的cache行中的数据,具体方式为:第三处理器内核13,用于在第三cache行为I态时,向第一处理器内核11和第二处理器内核12发送第三请求消息,该第三请求消息用于请求对与第三cache行地址相同的cache行进行读操作;相应地,第一处理器内核11,还用于当接收到第三请求消息后,且第二cache行处于F态时,将第二cache行中的数据携带在第三响应消息中发送给第三处理器内核13,并将第二cache行的状态由F态更改为K态;同时,第二处理器内核12,还用于当接收到第三请求消息后,且第一cache行处于K态时,根据第一cache行的状态忽略应答第三请求消息,并保持第一cache行处于K态;因此,第三处理器内核13,还用于接收第三响应消息,将第二cache行中的数据读入第三cache行中,并将第三cache行的状态由I态更改为F态。
在本实施例中,由于规定了F态时K态的子集,对于共享数据的转发操作,由F态cache行执行,即虽然第三处理器内核13向第一处理器内核11和第二处理器内核12均发送了第三请求消息,由于第一处理器内核11中的第二cache行为F态,因此,该第一处理器内核11可以将该第二cache行中的数据返回给第三处理器内核13,第二处理器内核12在获取第三请求消息时,通过判断第一cache行的状态为K态,可以得知系统中存在地址相同的F态cache行,即得知系统中存在相同的、可用于转发的数据副本,因此,该第二处理器内核12忽略应答第三请求消息,并保持第一cache行处于K态。
需要说明的是,与上述图1所示实施例类似地,第三处理器内核13发送的第三请求消息与第三cache行的状态相关,若该第三cache行为I态,无有效数据无法读取,则通过总线向系统中的其它处理器内核发送该第三请求消息,若该第三cache行不是I态,则第三处理器内核13可以向其自身的第三cache发送读请求以获取第三cache行中的数据。
进一步地,在图2所示实施例的另一种应用场景中,第三处理器内核13还可以请求写操作,具体方式为:第三处理器内核13,用于向第一处理器内核11和第二处理器内核12发送第四请求消息,该第四请求消息用于请求对第三cache行进行写操作;相应地,第一处理器内核11,还用于当接收到第四请求消息后,且第二cache行处于F态时,根据该第四请求消息对第二cache行中的数据进行无效处理,即将该第二cache行的状态由F态更改为I态,并向第三处理器内核13发送第四响应消息;同时,第二处理器内核12,还用于当接收到所述第四请求消息后,且所述第一cache行处于K态时,根据该第四请求消息对第一cache行中的数据进行无效处理,即将该第一cache行的状态由K态更改为I态,并向第三处理器内核13发送第四响应消息;因此,第三处理器内核13,在分别接收第一处理器内核11和第二处理器内核12发送的第四响应消息时,可以根据第四响应消息对第三cache行进行写操作,从而将第三cache行的状态更改为M态。在本实施例中,由于要对与第一cache行和第二cache行地址相同的第三cache行进行写操作,根据缓存的一致性协议,写操作后的数据为第三cache行的最新数据,则第一和第二cache行中的数据均不是最新的数据副本,因此F态第二cache行和K态第一cache行的状态不符合协议的规定,因此需要将将第一和第二cache行的状态均更改为I态,上述方式可以称为写无效;在另一种实现方式中,在该第三cache行中写入最新数据后,还可以通知系统中地址相同的第一和第二cache行,将其中的数据更改为第三cache行中的最新数据,该方式可以称为写更新。
与上述图1所示实施例类似地,第三处理器内核13在发送写请求之前,同样可以先判断待执行写操作的第三cache行的状态,具体地,第三处理器内核13,还用于在向第一处理器内核11和第二处理器内核12发送第四请求消息之前,向第三cache发送第五请求消息,该第五请求消息用于请求对第三cache行进行写操作;相应地,当第三cache行为E态或M态时,第三处理器内核13,还用于接收第三cache发送的第五响应消息,根据该第五响应消息对第三cache行进行写操作,并将第三cache行的状态更改为M态,在该情况下,第三cache行处于独占数据状态,对该第三cache行中数据的更改不会影响到其它地址相同的cache行的状态,因此可以直接执行写操作;当第三cache行为I态、K态或F态时,第三处理器内核13,具体用于向第一处理器内核11和第二处理器内核12发送第四请求消息,在该情况下,后续执行的操作与上述实施例的实现方式相同,故在此不再赘述。
上述各实施例在具体实现中,还具有以下处理方式:一方面,对于上述各实施例中的任一处理器内核,在对任一K态cache行进行读操作或者写操作时,且该K态cache行已填满时,将该K态cache行中的数据替换为待读取或待写入的数据。另一方面,对于上述各实施例中的任一处理器内核,在对任一F态cache行进行读操作或写操作,且该F态cache行已填满时,首先可以检测多核处理器系统100中是否存在与F态cache行的地址相同的K态cache行;若存在,则将其中一个与F态cache行的地址相同的K态cache行的状态更改为F态,并将F态cache行中的数据替换为待读取或待写入的数据;若不存在,则将F态cache行中的数据存入多核处理器系统100的内存10中,并将F态cache行中的数据替换为待读取或待写入的数据。
需要说明的是,本实施例的状态变化发生在映射冲突的情况下,例如,需要将内存10中的数据读入或写入某一cache行,内存10中的数据为4千兆(G),目标cache行的容量为1G,此时,在执行读入或写入操作时,需要对该cache行执行替换操作,上述已经说明替换的具体操作方式。
图3为MESIF协议中cache行的状态转换示意图。其中,P_Load、P_LoadX及P_Store分别表示任一处理器内核对自身cache的读共享数据请求、读独占数据请求以及写数据请求,P_xxx表示上述三种请求的集合;Bus_Load、Bus_LoadX分别表示来自其它处理器内核的读共享数据请求以及读独占数据请求,Bus_xxx表示二者的集合;Replace表示cache行的替换操作。
图4为MOESI协议中cache行的状态转换示意图。其中,P_Load、P_LoadX及P_Store分别表示任一处理器内核对自身cache的读共享数据请求、读独占数据请求以及写数据请求,P_xxx表示上述三种请求的集合;Bus_Load、Bus_LoadX分别表示来自其它处理器内核的读共享数据请求以及读独占数据请求,Bus_xxx表示二者的集合;Replace表示cache行的替换操作。
图5为本发明实施例提供的多核处理器系统中cache行的状态转换示意图。其中,P_Load、P_LoadX及P_Store分别表示任一处理器内核对自身cache的读共享数据请求、读独占数据请求以及写数据请求,P_xxx表示上述三种请求的集合;Bus_Load、Bus_LoadX分别表示来自其它处理器内核的读共享数据请求以及读独占数据请求,Bus_xxx表示二者的集合;Replace表示cache行的替换操作。
图5所示状态转换示意图为例介绍本发明各实施例提供的多核处理器系统执行缓存一致性的具体处理方式,例如该多核处理器系统包含N个处理器内核,编号可以为0、1、…、N-1,上述图1所示实施例中以N为2予以示出,上述图2所示实施例中N为3予以示出,本发明不限制多核处理器系统中处理器内核N的数量,可以采用基于写回策略的写无效协议维护缓存一致性;另外,所有处理器内核采用总线互连方式予以示出。通过对比MESIF协议、MOESI协议和本发明上述各实施例提供的多核处理器系统中cache行的状态转换示意图,可以看出,虽然MESIF协议本发明实施例中的状态转换示意图一致,这是由于图3和图5所示的cache行的状态转换图中没有描述出状态转换过程中涉及的内存参与操作的过程,例如访问内存、或者向内存写回数据等。以下通过表1到表5说明本发明上述各实施例中涉及到的cache行的状态转换行为,表1到表5分别对应场景1到场景5中cache行的状态转换行为。
场景1,第一处理器内核对第二cache行执行读操作时,向第二cache发送读数据请求,表1用于描述第二cache行的状态转换行为;场景2,在该第二cache行为I态时,第一处理器内核通过总线向第二处理器内核发送读数据请求,表2均用于描述第一cache行的状态转换行为。
表1
表2
场景3,第三处理器内核对第三cache行执行写操作时,向第三cache发送写数据请求,表3用于描述第三cache行的状态转换行为;场景4,在该第三cache行为I态、K态或F态时,第三处理器内核通过总线向第一和第二处理器内核发送写数据请求,表4均用于描述第二cache行和第一cache行的状态转换行为。
表3
表4
场景5,第一、第二和第三处理器内核中的任意一个,由于映射冲突而发生缓存行替换时,可以淘汰缓存行中的数据,表5用于描述cache行替换时的状态转换行为。
表5
需要说明的是,本发明上述各实施例中,第一处理器内核、第二处理器内核和第三处理器内核所执行的与cache相关的操作,通常由处理器内核中的缓存控制器执行,即每个处理器内核中均配置有对应的缓存控制器。
图6为本发明实施例提供的一种缓存一致性处理方法的流程图。本实施例提供的方法适用缓存一致性处理的情况中,该方法通常由多核处理器系统来执行,该系统通常以硬件和软件的方法来实现,该系统例如可以包括分别与总线相连的第一处理器内核和第二处理器内核,本实施例提供的方法包括以下步骤:
S110,第一处理器内核向第二处理器内核发送第一请求消息,该第一请求消息用于请求对第二处理器内核中的第一cache行进行读操作,该第一cache行处于M态或E态。
S120,第二处理器内核将第一cache行中的数据携带在第一响应消息中发送给第一处理器内核。
S130,第二处理器内核将第一cache行的状态更改为K态,其中,第二处理器内核在将第一cache行的状态由M态更改为K态后,忽略将第一cache行中的数据写入内存的操作。
S140,第一处理器内核将第一cache行中的数据读入第一处理器内核中与第一cache行地址相同的第二cache行中。
S150,第一处理器内核将第二cache行的状态由I态更改为F态。
本实施例在具体实现中,第一处理器内核在进行读操作时,需要对其自身中的cache行,也就是对第二cache行进行读操作,在该第二cache行为I态而无法进行读取操作,才通过总线向系统中的其它处理器内核发送第一请求消息。也就是说,本实施例中提供的方法,在S110之前还包括:S101,第一处理器内核向第二cache发送第二请求消息,第二请求消息用于请求对第二cache行进行读操作;S102,第一处理器内核判断第二cache行的状态是否为I态;若否,则执行S103,若是,则执行S110。
S103,第一处理器内核接收第二cache发送的第二响应消息,并保持第二cache行的当前状态,其中,第二响应消息中包括第二cache行中的数据。
本实施例中在S102的判断为“是”的情况下,执行上述实施例中的S110~S150。
本发明图6所示实施例提供的缓存一致性处理方法可以由本发明图1所示实施例提供的多核处理器系统执行,方法的各步骤与本发明实施例提供的多核处理器系统的各实体装置对应,其实现原理和技术效果类似,此处不再赘述。
图7为本发明实施例提供的又一种缓存一致性处理方法的流程图。图7在上述图6所示实施例的基础上进行进一步地描述,此时,第一cache行为K态,第二cache行为F态,并且本实施例中执行该方法的多核处理器系统还包括与总线相连的第三处理器内核,并且该第三处理器内核中的第三cache行与上述第二cache行和第一cache行的地址相同,本实施例提供的方法包括以下步骤:
S201,第三处理器内核在第三cache行为I态时,向第一处理器内核和第二处理器内核发送第三请求消息,第三请求消息用于请求对与第三cache行地址相同的cache行进行读操作。
需要说明的是,与上述图6所示实施例类似地,第三处理器内核发送的第三请求消息与第三cache行的状态相关,若该第三cache行为I态,无有效数据无法读取,则通过总线向系统中的其它处理器内核发送该第三请求消息,若该第三cache行不是I态,则第三处理器内核同样可以向其自身的第三cache发送读请求以获取第三cache行中的数据,图7所示实施例中不再具体说明该方法的执行过程。
S202,第一处理器内核在第二cache行处于F态时,将第二cache行中的数据携带在第三响应消息中发送给第三处理器内核。
S203,第一处理器内核将第二cache行的状态由F态更改为K态。
S204,第二处理器内核在第一cache行处于K态时,根据第一cache行的状态忽略应答第三请求消息,并保持第一cache行处于K态。
需要说明的是,本发明不限制S202~S203与S204的执行顺序,图7所示实施例以S202~S203在S204之前执行为例予以示出。
S205,第三处理器内核将第二cache行中的数据读入第三cache行中。
S206,第三处理器内核将第三cache行的状态由I态更改为F态。
进一步地,在该图7所示实施例的另一种应用场景中,第三处理器内核还可以请求写操作,该方式具体包括以下步骤:
S310,第三处理器内核向第一处理器内核和第二处理器内核发送第四请求消息,第四请求消息用于指示对第三cache行进行写操作。
S320,第一处理器内核在第二cache行处于F态时,根据第四请求消息将第二cache行的状态由F态更改为I态。
S330,第一处理器内核向第三处理器内核发送第四响应消息。
S340,第二处理器内核在第一cache行处于K态时,根据第四请求消息将第一cache行的状态由K态更改为I态。
S350,第二处理器内核向第三处理器内核发送第四响应消息。
需要说明的是,本发明不限制S320~S330与S340~S350的执行顺序,图7所示实施例以S320~S330在S340~S350之前执行为例予以示出。
S360,第三处理器内核根据接收到的第四响应消息对第三cache行进行写操作,并将第三cache行的状态更改为M态。
本实施例在具体实现中,第三处理器内核在进行写操作时,需要先判断其自身的cache行,也就是第三cache行的状态,在该第三cache行为I态、K态或F态是无法直接进行写入操作,可以通过总线向系统中的其它处理器内核发送第四请求消息。也就是说,本实施例中提供的方法,在S310之前还包括:S301,第三处理器内核向第三cache发送第五请求消息,该第五请求消息用于请求对第三cache行进行写操作;S302,第三处理器内核判断第三cache行的状态;当该第三cache行为E态或M态时,执行S303,当该第三cache行为I态、K态或F态时,执行S310。
S303,第三处理器内核接收第三cache发送的第五响应消息,根据该第五响应消息对第三cache行进行写操作,并将第三cache行的状态更改为M态。
本实施例中在S302的判断为“I态、K态或F态”的情况下,执行上述实施例中的S310~S360。
需要说明的是,图7所示实施例中的S201~S206与S301~S360是选择性执行的,S201~S206为第三处理器内核执行读请求的具体方式,S301~S360为第三处理器内核执行写请求的具体方式。
本发明图7所示实施例提供的缓存一致性处理方法可以由本发明图2所示实施例提供的多核处理器系统执行,方法的各步骤与本发明实施例提供的多核处理器系统的各实体装置对应,其实现原理和技术效果类似,此处不再赘述。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (11)
1.一种多核处理器系统,其特征在于,所述多核处理器系统用于执行缓存一致性处理,所述多核处理器系统包括第一处理器内核和第二处理器内核,所述多核处理器系统中的cache行具有修改M态、独占E态、保持K态、无效I态和转发F态;
所述第一处理器内核,用于向所述第二处理器内核发送第一请求消息,所述第一请求消息用于请求对所述第二处理器内核中的第一cache行进行读操作,所述第一cache行处于M态或E态;
所述第二处理器内核,用于当接收到所述第一请求消息后,将所述第一cache行中的数据携带在第一响应消息中发送给所述第一处理器内核,并将所述第一cache行的状态更改为K态,其中,所述第二处理器内核,还用于在将所述第一cache行的状态由M态更改为K态后,忽略将所述第一cache行中的数据写入内存的操作;
所述第一处理器内核,还用于当接收到所述第一响应消息后,将所述第一cache行中的数据读入所述第一处理器内核中与所述第一cache行地址相同的第二cache行中,并将所述第二cache行的状态由I态更改为F态;
其中,所述M态是指cache行数据被修改过,与内存中数据相比,cache行中保持最新的数据副本,内存中对应的内容过期;
所述E态是指cache行中保存该多核处理器系统中的唯一有效数据副本,且该数据副本的内容与内存一致;
所述K态是指cache行中保持有最新的数据副本,内存中对应的可能过期,即cache行中的数据可能被修改过,也可能没有被修改过;
所述I态是指cache行中没有的有效的数据副本;
所述F态是指cache行中具有可转发的数据副本,用于应答其它处理器内核的读写请求,内存中对应的内容可能过期。
2.根据权利要求1所述的多核处理器系统,其特征在于,所述第一处理器内核,还用于在向所述第二处理器内核发送第一请求消息之前,向第二cache发送第二请求消息,所述第二请求消息用于请求对所述第二cache行进行读操作;
所述第一处理器内核,还用于当所述第二cache行为K态、F态、E态或M态时,接收所述第二cache发送的第二响应消息,并保持所述第二cache行的当前状态,其中,所述第二响应消息中包括所述第二cache行中的数据,当所述第二cache行为I态时,向所述第二处理器内核发送第一请求消息。
3.根据权利要求1所述的多核处理器系统,其特征在于,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;
所述第三处理器内核,用于在所述第三cache行为I态时,向所述第一处理器内核和所述第二处理器内核发送第三请求消息,所述第三请求消息用于请求对与所述第三cache行地址相同的cache行进行读操作;
所述第一处理器内核,还用于当接收到所述第三请求消息后,且所述第二cache行处于F态时,将所述第二cache行中的数据携带在第三响应消息中发送给所述第三处理器内核,并将所述第二cache行的状态由F态更改为K态;
所述第二处理器内核,还用于当接收到所述第三请求消息后,且所述第一cache行处于K态时,根据所述第一cache行的状态忽略应答所述第三请求消息,并保持所述第一cache行处于K态;
所述第三处理器内核,还用于接收所述第三响应消息,将所述第二cache行中的数据读入所述第三cache行中,并将所述第三cache行的状态由I态更改为F态。
4.根据权利要求1所述的多核处理器系统,其特征在于,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;
所述第三处理器内核,用于向所述第一处理器内核和所述第二处理器内核发送第四请求消息,所述第四请求消息用于指示对所述第三cache行进行写操作;
所述第一处理器内核,还用于当接收到所述第四请求消息后,且所述第二cache行处于F态时,根据所述第四请求消息将所述第二cache行的状态由F态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第二处理器内核,还用于当接收到所述第四请求消息后,且所述第一cache行处于K态时,根据所述第四请求消息将所述第一cache行的状态由K态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第三处理器内核,还用于分别接收所述第一处理器内核和所述第二处理器内核发送的第四响应消息,根据接收到的所述第四响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态。
5.根据权利要求4所述的多核处理器系统,其特征在于,所述第三处理器内核,还用于在向所述第一处理器内核和所述第二处理器内核发送第四请求消息之前,向所述第三cache发送第五请求消息,所述第五请求消息用于请求对所述第三cache行进行写操作;
所述第三处理器内核,还用于当所述第三cache行为E态或M态时,接收所述第三cache发送的第五响应消息,根据所述第五响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态,当所述第三cache行为I态、K态或F态时,向所述第一处理器内核和所述第二处理器内核发送第四请求消息。
6.根据权利要求1~5中任一项所述的多核处理器系统,其特征在于,任一所述处理器内核,还用于在对任一K态cache行进行读操作或写操作,且所述K态cache行已填满时,将所述K态cache行中的数据替换为待读取或待写入的数据;和/或,
任一所述处理器内核,还用于在对任一F态cache行进行读操作或写操作,且所述F态cache行已填满时,检测所述多核处理器系统中是否存在与所述F态cache行的地址相同的K态cache行;
若存在,则将其中一个与所述F态cache行的地址相同的K态cache行的状态更改为F态,并将所述F态cache行中的数据替换为待读取或待写入的数据;
若不存在,则将所述F态cache行中的数据存入所述多核处理器系统的内存中,并将所述F态cache行中的数据替换为待读取或待写入的数据。
7.一种缓存一致性处理方法,其特征在于,执行所述缓存处理方法的多核处理器系统包括第一处理器内核、第二处理器内核和内存,所述多核处理器系统中的cache行具有修改M态、独占E态、保持K态、无效I态和转发F态,所述方法包括:
所述第一处理器内核向所述第二处理器内核发送第一请求消息,所述第一请求消息用于请求对所述第二处理器内核中的第一cache行进行读操作,所述第一cache行处于M态或E态;
所述第二处理器内核将所述第一cache行中的数据携带在第一响应消息中发送给所述第一处理器内核,并将所述第一cache行的状态更改为K态,其中,所述第二处理器内核在将所述第一cache行的状态由M态更改为K态后,忽略将所述第一cache行中的数据写入所述内存的操作;
所述第一处理器内核将所述第一cache行中的数据读入所述第一处理器内核中与所述第一cache行地址相同的第二cache行中;
所述第一处理器内核将所述第二cache行的状态由I态更改为F态;
其中,所述M态是指cache行数据被修改过,与内存中数据相比,cache行中保持最新的数据副本,内存中对应的内容过期;
所述E态是指cache行中保存该多核处理器系统中的唯一有效数据副本,且该数据副本的内容与内存一致;
所述K态是指cache行中保持有最新的数据副本,内存中对应的可能过期,即cache行中的数据可能被修改过,也可能没有被修改过;
所述I态是指cache行中没有的有效的数据副本;
所述F态是指cache行中具有可转发的数据副本,用于应答其它处理器内核的读写请求,内存中对应的内容可能过期。
8.根据权利要求7所述的缓存一致性处理方法,其特征在于,所述第一处理器内核向所述第二处理器内核发送第一请求消息之前,还包括:
所述第一处理器内核向所述第二cache发送第二请求消息,所述第二请求消息用于请求对所述第二cache行进行读操作;
所述第一处理器内核判断所述第二cache行的状态是否为I态;
若否,则所述第一处理器内核接收所述第二cache发送的第二响应消息,并保持所述第二cache行的当前状态,其中,所述第二响应消息中包括所述第二cache行中的数据;
若是,则所述第一处理器内核向所述第二处理器内核发送第一请求消息。
9.根据权利要求7所述的缓存一致性处理方法,其特征在于,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;所述方法还包括:
所述第三处理器内核在所述第三cache行为I态时,向所述第一处理器内核和所述第二处理器内核发送第三请求消息,所述第三请求消息用于请求对与所述第三cache行地址相同的cache行进行读操作;
所述第一处理器内核在所述第二cache行处于F态时,将所述第二cache行中的数据携带在第三响应消息中发送给所述第三处理器内核,并将所述第二cache行的状态由F态更改为K态;
所述第二处理器内核在所述第一cache行处于K态时,根据所述第一cache行的状态忽略应答所述第三请求消息,并保持所述第一cache行处于K态;
所述第三处理器内核将所述第二cache行中的数据读入所述第三cache行中,并将所述第三cache行的状态由I态更改为F态。
10.根据权利要求7所述的缓存一致性处理方法,其特征在于,所述多核处理器系统还包括第三处理器内核,所述第三处理器内核中的第三cache行与所述第二cache行和所述第一cache行的地址相同;所述方法还包括:
所述第三处理器内核向所述第一处理器内核和所述第二处理器内核发送第四请求消息,所述第四请求消息用于指示对所述第三cache行进行写操作;
所述第一处理器内核在所述第二cache行处于F态时,根据所述第四请求消息将所述第二cache行的状态由F态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第二处理器内核在所述第一cache行处于K态时,根据所述第四请求消息将所述第一cache行的状态由K态更改为I态,并向所述第三处理器内核发送第四响应消息;
所述第三处理器内核根据接收到的所述第四响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态。
11.根据权利要求10所述的缓存一致性处理方法,其特征在于,所述第三处理器内核向所述第一处理器内核和所述第二处理器内核发送第四请求消息之前,还包括:
所述第三处理器内核向所述第三cache发送第五请求消息,所述第五请求消息用于请求对所述第三cache行进行写操作;
所述第三处理器内核判断所述第三cache行的状态;
当所述第三cache行为E态或M态时,所述第三处理器内核接收所述第三cache发送的第五响应消息,根据所述第五响应消息对所述第三cache行进行写操作,并将所述第三cache行的状态更改为M态;
当所述第三cache行为I态、K态或F态时,所述第三处理器内核向所述第一处理器内核和所述第二处理器内核发送第四请求消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510314083.6A CN104991868B (zh) | 2015-06-09 | 2015-06-09 | 一种多核处理器系统和缓存一致性处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510314083.6A CN104991868B (zh) | 2015-06-09 | 2015-06-09 | 一种多核处理器系统和缓存一致性处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104991868A CN104991868A (zh) | 2015-10-21 |
CN104991868B true CN104991868B (zh) | 2018-02-02 |
Family
ID=54303684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510314083.6A Active CN104991868B (zh) | 2015-06-09 | 2015-06-09 | 一种多核处理器系统和缓存一致性处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104991868B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107894914A (zh) * | 2016-09-30 | 2018-04-10 | 华为技术有限公司 | 缓存一致性处理方法和装置 |
CN106649145B (zh) * | 2016-12-15 | 2021-02-19 | Tcl科技集团股份有限公司 | 一种自适应更新缓存策略的方法及系统 |
CN108228481A (zh) * | 2016-12-21 | 2018-06-29 | 伊姆西Ip控股有限责任公司 | 用于保证数据一致性的方法和设备 |
CN107688545B (zh) * | 2016-12-23 | 2021-01-19 | 北京国睿中数科技股份有限公司 | 高速缓存的一致性状态预置方法及系统 |
CN109597776B (zh) * | 2017-09-30 | 2020-12-08 | 华为技术有限公司 | 一种数据操作方法、内存控制器以及多处理器系统 |
US11061924B2 (en) * | 2017-11-22 | 2021-07-13 | Amazon Technologies, Inc. | Multi-region, multi-master replication of database tables |
CN108829631A (zh) * | 2018-04-27 | 2018-11-16 | 江苏华存电子科技有限公司 | 一种提升多核处理器的信息管理方法 |
CN111930527B (zh) * | 2020-06-28 | 2023-12-08 | 绵阳慧视光电技术有限责任公司 | 一种多核异构平台维护cache一致性的方法 |
CN114116531B (zh) * | 2022-01-28 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种缓存一致性写回的方法、装置、设备及介质 |
CN114153767B (zh) * | 2022-02-10 | 2022-04-29 | 广东省新一代通信与网络创新研究院 | 一种实现处理器dma设备数据一致性的方法及装置 |
CN115373877A (zh) * | 2022-10-24 | 2022-11-22 | 北京智芯微电子科技有限公司 | 异构多核处理器保证共享缓存一致性的控制方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658536B1 (en) * | 1997-04-14 | 2003-12-02 | International Business Machines Corporation | Cache-coherency protocol with recently read state for extending cache horizontally |
CN1729458A (zh) * | 2002-12-19 | 2006-02-01 | 英特尔公司 | 供多处理器系统中的高速缓存同步中使用的转发状态 |
CN103403673A (zh) * | 2011-12-29 | 2013-11-20 | 英特尔公司 | 支持无数据情况下推测性所有权 |
-
2015
- 2015-06-09 CN CN201510314083.6A patent/CN104991868B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658536B1 (en) * | 1997-04-14 | 2003-12-02 | International Business Machines Corporation | Cache-coherency protocol with recently read state for extending cache horizontally |
CN1729458A (zh) * | 2002-12-19 | 2006-02-01 | 英特尔公司 | 供多处理器系统中的高速缓存同步中使用的转发状态 |
CN103403673A (zh) * | 2011-12-29 | 2013-11-20 | 英特尔公司 | 支持无数据情况下推测性所有权 |
Non-Patent Citations (1)
Title |
---|
面向非写分配高速缓存的一致性协议及实现;修思文 等;《浙江大学学报》;20150228;第49卷(第2期);第351-359页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104991868A (zh) | 2015-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104991868B (zh) | 一种多核处理器系统和缓存一致性处理方法 | |
TWI416322B (zh) | 最佳化以目錄為基礎的一致性協定中之同時存取 | |
US7814279B2 (en) | Low-cost cache coherency for accelerators | |
TWI408550B (zh) | 對資料處理設備中共用記憶體之寫入存取請求之處理 | |
TWI431475B (zh) | 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法 | |
TWI463318B (zh) | 快取一致性處理系統、快取記憶體,及其方法 | |
TWI391821B (zh) | 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法 | |
US8392665B2 (en) | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines | |
CN101097545B (zh) | 独占所有权探听过滤器 | |
US8055851B2 (en) | Line swapping scheme to reduce back invalidations in a snoop filter | |
WO2014022397A1 (en) | Handling cache write-back and cache eviction for cache coherence | |
JP2009037615A (ja) | 複数のコアキャッシュ・クラスタ間の包括的共有キャッシュの提供 | |
US7350036B2 (en) | Technique to perform concurrent updates to a shared data structure | |
JP5004571B2 (ja) | 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法 | |
US6647469B1 (en) | Using read current transactions for improved performance in directory-based coherent I/O systems | |
US20140297966A1 (en) | Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus | |
JP2009252165A (ja) | マルチプロセッサシステム | |
US8756378B2 (en) | Broadcast protocol for a network of caches | |
CN105354153B (zh) | 一种紧耦合异构多处理器数据交换缓存的实现方法 | |
EP2879058A1 (en) | Parallel computer system, control method of parallel computer system, information processing device, arithmetic processing device, and communication control device | |
US8489822B2 (en) | Providing a directory cache for peripheral devices | |
CN109597776A (zh) | 一种数据操作方法、内存控制器以及多处理器系统 | |
JP2014182488A (ja) | 演算処理装置、及び演算処理装置の制御方法 | |
US11954037B2 (en) | Memory address allocation and cache mapping to retain data in cache | |
CN115543201A (zh) | 一种共享存储器系统中加速核心请求完成的方法 |
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 |