多片多核处理器的缓存一致性操作方法及多片多核处理器与流程

文档序号:11177098阅读:620来源:国知局
多片多核处理器的缓存一致性操作方法及多片多核处理器与流程

本发明涉及信息技术领域,并且更具体地,涉及一种多片多核处理器的一致性操作方法及多片多核处理器。



背景技术:

在多核处理器(chipmultiprocessor,cmp)的应用中,存在一些数据块被该处理器中的一个或者多个处理器核(以下简称:核,core)访问的场景。在该场景下,通常会将该数据块存储在处理器芯片中的共享缓存(sharingcache)中,以便一个或多个核能够访问。为了加速数据块的访问,在访问过该数据块的一个或多个核的私有缓存(privatecache)中创建该数据块的拷贝,这样当访问过该数据块的某一核需要再次访问该数据块时,只需要到该核的私有缓存中进行该数据块的访问。对数据块的访问包括读访问(readaccess)以及写访问(writeaccess)。其中,在对某一数据块进行写访问时,由于可能有多个核的私有缓存中都存有该数据块的拷贝,在某一核对该数据块进行写操作之后,就需要维护在多个核的私有缓存中该数据块拷贝之间一致性,也被称为缓存一致性(cachecoherence)操作。

缓存一致性操作的基本原理是当某一个核的缓存中该数据块的拷贝被写操作处理时,需要进行缓存一致性操作,可通过无效(invalid)其他核的私有缓存中该数据块的拷贝(也即删除其他核的缓存中该数据块)或者更新(update)其他核的私有缓存中该数据块的拷贝。而为了解决一致性问题就需要确定该数据块在多核处理器中的哪些核存在拷贝(即确定该数据块的访 问者)。

常用的缓存一致性解决方式可采用基于总线侦听(snoop)的一致性协议和基于目录(directory)的一致性协议。对于前者,当发生某一个核内的缓存数据块被修改时,需要向存储该数据块拷贝的其他核发送该数据块被修改的广播消息,以便通知这些核进行一致性操作;对于后者,利用数据块的访问目录记录数据块的访问者(即多核处理器中存储该数据块的核)列表,在发生某一个处理器核缓存中数据块的拷贝被修改时,只向其他记录该数据块的访问者发送该数据块被修改的通知消息,以便该数据块的其他访问者针对该数据块进行缓存一致性操作。处理器核数的持续增长使得基于总线侦听的一致性解决方案面临性能和带宽的瓶颈(广播消息需要占用大量处理资源以及带宽),而基于目录的一致性协议凭借较好的可扩展性被广泛采用。

随着技术的不断发展,现有应用对处理器的能力提出了更高的要求,已经出现多片多核处理器(multiplechipmultiprocessor,multi-cmp)。这种处理器存在多个处理器芯片,每个芯片包含至少两个处理器核。对于这样的处理器,如果要对某一个数据块进行了写操作,不仅需要对发出写操作的核所在的处理器芯片进行缓存一致性操作,还需要对其他处理器芯片针对该数据块进行缓存一致性操作。现有技术中,对于某一数据块,在多片多核处理器中进行一致性操作时,发出写操作的核所在的处理器芯片需要和其他处理器芯片进行通信,以便确定其他处理器芯片中的哪些芯片以及芯片中的哪些核缓存有该数据块的拷贝,从而进行一致性操作。

由上看出,在多片多核处理器中,每次对数据块进行的写操作,都会触发处理器芯片之间的通信以便对待写入数据块进行一致性操作,由此带来较多的通信开销,增加了时延以及功耗。



技术实现要素:

本发明实施例提供了一种多片多核处理器的缓存一致性操作方法及多片多核处理器,能够减少缓存一致性操作过程中的时延以及功耗。

第一方面,提供了一种多片多核处理器的缓存一致性操作方法,其中,该多片多核处理器包括有至少两个处理器芯片以及片间目录,该片间目录的每个表项和多片多核处理器中每个被写入到处理器核私有缓存内的数据块一一对应,在每个片间目录的表项中,记录有数据块的标识以及存储该数据块的处理器芯片的芯片标识列表,处理器芯片包括至少两个处理器核以及和该处理器芯片对应的片上目录,每个处理器核包括用来存储数据块的私有缓存,上述片上目录的每个表项和该处理器芯片中每个被写入到处理器核内私有缓存的数据块一一对应,在每个片上目录的表项中记录有数据块的标识、存储该数据块的处理器核的核标识列表以及片上独有标识,该片上独有标识用于标识数据块在多片多核处理器中是否为上述处理器芯片独有;方法包括:

接收针对第一数据块的写请求,该写请求由第一处理器芯片中第一处理器核发送,且该写请求包括第一数据块的标识以及待写入数据;

根据第一数据块的标识,在第一处理器芯片中的片上目录查询到和第一数据块对应的片上目录的表项,从查询的片上目录的表项中确定存储第一数据块的处理器核的核标识,向核标识对应的处理器核发送删除第一数据块的指令消息;

根据片上目录表项中的片上独有标识确定第一数据块是第一处理器芯片独有时,不发送针对第一数据块的片间目录查询请求;

指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存中。

在多片多核处理器中设置片间目录,在每个处理器芯片内部设置片上目录,片上目录中每个表项除包括数据块标识、缓存该数据块的处理器核的核标识列表之外,还包括片上独有标识,通过片上独有标识记录该表项对应的数据块是否在多片多核处理器中为该处理器芯片独有,采用上述方式使得在进行 缓存一致性操作时,当判断某一数据块对应的片上目录表项中记录的片上独有标识为true时,就仅在该处理器芯片中进行一致性操作,这样就减少了现有技术存在的对于任何一个数据块的写操作都需要片间通信的开销,从而有效地降低了时延及功耗。

结合第一方面,在第一种可能的实现方式中,当根据片上目录表项中的片上独有标识确定第一数据块不是第一处理器芯片独有时,

向片间目录发送针对第一数据块的片间目录查询请求,该查询请求中包括第一数据块的标识;

根据第一数据块的标识,查询片间目录,确定和第一数据块对应的片间目录的表项;

从片间目录的表项中确定保存有第一数据块的处理器芯片的芯片标识,向芯片标识除所述第一处理器芯片之外其他处理器芯片发送删除第一数据块的指令消息,该指令消息包括所述第一数据块的标识;

指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存。

结合第一方面以及第一方面第一种可能的实现方式,在第二种可能的实现方式中,在指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存之后,该方法还包括:指示第一处理器芯片将待写入数据写入到第一处理器芯片内的共享缓存。

结合第一方面,第一方面的第一以及第二种可能的实现方式,在第三种可能的实现方式中,当根据第一数据块的标识在第一处理器芯片的片上目录未能查询到和第一数据块对应的表项,且根据第一数据块的标识在片间目录中查询到与第一数据块的标识对应的表项时,

根据第一数据块的标识,在片间目录查询到和第一数据块对应的片间目录的表项,从片间目录的表项中确定保存有第一数据块的处理器芯片的芯片 标识,向芯片标识对应的处理器芯片发送删除第一数据块的指令消息,该指令消息包括第一数据块的标识;

指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存;

在第一处理器芯片中的片上目录中,创建对应第一数据块的表项,将第一处理器核的核标识写入表项中存储所述第一数据块的处理器核的核标识列表中,并设置片上独有标识为true。

结合第一方面,第一方面的第一以及第二种可能的实现方式,在第四种可能的实现方式中,当根据第一数据块的标识在第一处理芯片的片上目录未能查询到和第一数据块对应的表项,且根据第一数据块的标识在片间目录中未能查询到与第一数据块的标识对应的表项时,

指示根据第一数据块的标识,从内存中读取第一数据块,将第一数据块存入第一处理器核的私有缓存;

在第一处理器芯片的片上目录中,创建针对第一数据块的片上目录表项,在存储第一数据块的核标识列表中记录第一处理器核的标识,并设置片上独有标识为true;

在片间目录中,创建对应第一数据块的片间目录表项,在存储第一数据块的芯片标识列表中记录第一处理器芯片的标识。

结合第一方面的第一种以及第三种可能的实现方式,在第五种可能的实现方式中,在芯片标识除第一处理器芯片之外其他处理器芯片接收到删除所述第一数据块的指令消息之后,该方法还包括:

除第一处理器芯片之外的各处理器芯片根据第一数据块的标识,在各处理器芯片中的片上目录查询和第一数据块对应的片上目录表项,从第一数据块对应的各片上目录的表项中确定存储有第一数据块的处理器核的核标识,向核标识对应的处理器核发送删除第一数据块的指令消息。

第二方面,还提供一种多片多核处理器,该多片多核处理器包括至少两个处理器芯片和片间目录缓存,片间目录缓存包括片间目录存储单元以及片间目录控制单元,片间目录存储单元所存储的每个片间目录的表项和多片多核处理器中每个被写入到处理器核私有缓存内的数据块一一对应,每个片间目录的表项记录有数据块的标识以及存储数据块的处理器芯片的芯片标识列表,处理器芯片包括至少两个核以及和处理器芯片对应的片上目录缓存,片上目录缓存包括片上目录存储单元以及片上目录控制单元,至少两个核中的每个核包括用来存储数据块的私有缓存,片上目录存储单元所存储的每个片上目录表项和处理器芯片中每个被写入到处理器核内私有缓存的数据块一一对应,每个片上目录的表项记录数据块的标识、存储有数据块的处理器核的核标识列表以及片上独有标识,片上独有标识用于标识数据块在多片多核处理器中是否为处理器芯片独有;

第一处理器芯片的片上目录控制单元接收针对第一数据块的写请求,写请求由第一处理器芯片中第一处理器核发送,且该写请求包括第一数据块的标识以及待写入数据;

第一处理器芯片的片上目录控制单元所述第一数据块的标识,在第一处理器芯片中的片上目录存储单元查询到和第一数据块对应的片上目录的表项,从查询的片上目录的表项中确定存储第一数据块的处理器核的核标识,向核标识对应的处理器核发送删除第一数据块的指令消息;

第一处理器芯片的片上目录控制单元根据片上目录表项中的片上独有标识确定第一数据块是第一处理器芯片独有时,不向片间目录控制单元发送针对第一数据块的片间目录查询请求;

第一处理器芯片的片上目录控制单元指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存。

结合第二方面,在第一种可能的实现方式中,当根据片上目录表项中的片 上独有标识确定第一数据块不是第一处理器芯片独有时,

第一处理器芯片的片上目录控制单元向片间目录控制单元发送针对第一数据块的片间目录查询请求,查询请求中包括第一数据块的标识;

片间目录控制单元根据第一数据块的标识,查询片间目录,确定和第一数据块对应的片间目录的表项;

片间目录控制单元从片间目录的表项中确定保存有第一数据块的处理器芯片的芯片标识,向芯片标识除所述第一处理器芯片之外其他处理器芯片发送删除第一数据块的指令消息,该指令消息包括第一数据块的标识;

第一处理器芯片的片上目录控制单元指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存。

结合第二方面,以及第二方面的第一种可能的实现方式中,在第二种可能的实现方式中,在指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存之后,第一处理器芯片的片上目录控制单元,还用于指示第一处理器芯片将待写入数据写入到第一处理器芯片内的共享缓存。

结合第二方面,以及第二方面的第一种以及第二种可能的实现方式,在第三种可能的实现方式中,当根据第一数据块的标识在第一处理器芯片的片上目录未能查询到和第一数据块对应的表项,且根据第一数据块的标识在片间目录中查询到与第一数据块的标识对应的表项时,

第一处理器芯片的片上目录控制单元,还用于指示片间目录控制单元根据第一数据块的标识,在片间目录查询到和第一数据块对应的片间目录的表项,从片间目录的表项中确定保存有第一数据块的处理器芯片的芯片标识,向芯片标识对应的处理器芯片发送删除第一数据块的指令消息,该指令消息包括第一数据块的标识;

第一处理器芯片的片上目录控制单元,还用于指示第一处理器核将待写 入数据写入到第一处理器核内的私有缓存;

第一处理器芯片的片上目录控制单元,还用于在第一处理器芯片中的片上目录中,创建对应第一数据块的表项,将第一处理器核的核标识写入表项中存储第一数据块的处理器核的核标识列表中,并设置片上独有标识为true。

结合第二方面,以及第二方面的第一种以及第二种可能的实现方式,在第四种可能的实现方式中,当根据第一数据块的标识在第一处理器芯片的片上目录未能查询到和第一数据块对应的表项,且根据第一数据块的标识在片间目录中未能查询到与第一数据块的标识对应的表项时,

第一处理器芯片的片上目录控制单元,还用于指示根据第一数据块的标识,从内存中读取第一数据块,将第一数据块存入第一处理器核的私有缓存;

第一处理器芯片的片上目录控制单元,还用于在第一处理器芯片的片上目录中,创建针对第一数据块的片上目录表项,在存储第一数据块的核标识列表中记录第一处理器核的标识,并设置片上独有标识为true;

第一处理器芯片的片上目录控制单元,还用于指示片间目录控制单元在片间目录中,创建对应第一数据块的片间目录表项,在存储第一数据块的芯片标识列表中记录第一处理器芯片的标识。

结合第二方面的第一种以及第三种可能的实现方式,在第五种可能的实现方式中,在芯片标识对应的处理器芯片接收到删除第一数据块的指令消息之后,各处理器芯片的片上目录控制单元,用于根据第一数据块的标识,在各处理器芯片中的片上目录查询和第一数据块对应的片上目录表项,从第一数据块对应的各片上目录的表项中确定存储有第一数据块的处理器核的核标识,指示核标识对应的处理器核删除私有缓存的第一数据块。

基于上述技术方案,本发明实施例通过设置层次化的一致性目录,即在多片多核处理器中设置片间目录,在每个处理器芯片内部设置片上目录,片上 目录中每个表项除包括数据块标识、缓存该数据块的处理器核的核标识列表之外,还包括片上独有标识,通过片上独有标识记录该表项对应的数据块是否在多片多核处理器中为该处理器芯片独有,采用上述方式使得在进行缓存一致性操作时,当判断某一数据块对应的片上目录表项中记录的片上独有标识为true时,就仅在该处理器芯片中进行一致性操作,这样就减少了现有技术存在的对于任何一个数据块的写操作都需要片间通信的开销,从而有效地降低了时延及功耗。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。

图1是可应用本发明实施例的多片多核处理器的示意图。

图2是本发明实施例中片间目录的结构示意图。

图3是本发明实施例中片间目录表项的数据结构示意图。

图4是本发明实施例中片上目录的结构示意图。

图5是本发明实施例中片上目录表项的数据结构示意图。

图6a是本发明实施例中片间目录以及片上目录所实现的层次化目录记录方式示意图。

图6b是本发明实施例中层次化目录的访问方式的示意图。

图7a是本发明第一实施例中多片多核系统中缓存一致性操作方法的示意性流程图。

图7b是本发明第二实施例的多片多核系统中缓存一致性操作方法的示意性流程图。

图7c是本发明第三实施例的多片多核系统中缓存一致性操作方法的示意性流程图。

图7d是本发明第四实施例的多片多核系统中缓存一致性操作方法的示意性流程图。

图8是本发明第五实施例的多片多核系统中缓存一致性操作方法的示意性流程图。

图9是本发明第六实施例的多片多核系统中缓存一致性操作方法的示意性流程图。

图10是本发明一个实施例的目录访问方法的示意性流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

贯穿本说明书,术语“多核处理器”指的是包含了多个处理器核(core)的处理器,具体可以表现为片上多核处理器,或者板上多核处理系统。其中,片上多核处理器是多个处理器核(core)通过片上网络(networkonchip,noc)将各个处理器核互连并集成在一个芯片(chip)上的处理器(processor),板上多核处理系统指的是多个处理器核中每个核分别封装(package)为处理器,并集成在电路板上所构成的处理系统。

贯穿本说明书,术语“多片多核处理器”指的是包含了至少两个处理器芯片且每个处理器芯片包含至少两个处理器核的处理器。

贯穿本说明书,术语“处理器核”是“处理器核心”的简称,又称为内核,是cpu(centralprocessingunit)最重要的组成部分,它是由单晶硅以一定的生产工艺制造出来的,cpu所有的计算、接收命令或存储命令、处理 数据都由处理器核执行。术语中“多处理器核”指的是包含至少两个处理器核,“多处理器核”涵盖了现有技术中的多核(multi-core),以及众核(manycore)所应用的范围。

贯穿本说明书,术语“私有缓存”指的是在某一处理器核内部,用来存储该处理器核私有数据的缓存空间。在具体实现中,私有缓存一般指的是处理器芯片中的一级(level1)缓存。在多片多核处理器的实现中,处理器核会将部分数据块读取到私有缓存中,以提高处理器核对这部分数据块的访问效率。

贯穿本说明书,术语“多片多核处理器的一致性操作”,指的是在多片多核处理器中,当某一处理器芯片的处理器核发出对某一数据块的写请求后,为了维护多片多核处理器对于该数据块的缓存一致性,不仅需要进行片上缓存一致性操作,即将上述处理器芯片内处理器核的私有缓存中所缓存的该数据块删除,还需要进行片间缓存一致性操作,即在多片多核处理器中,将上述处理器芯片之外的其他处理器芯片内处理器核的私有缓存中所缓存的该数据块删除。

贯穿本说明书,术语“访问者”指的是对某一数据块发起访问请求的处理器核或者处理器芯片。其中,对该数据块发出访问请求的处理器核称为访问核,访问核所在的处理器芯片称为访问芯片。作为举例,处理器芯片b的三个处理器核b1、b2和b3对数据块a发出过访问请求访问过,则在这三个处理器核b1、b2和b3的私有缓存中会存在该数据块a的拷贝,称处理器核b1、b2和b3是数据块a的访问核,处理器芯片b是数据块a的访问芯片。

贯穿本说明书,术语“数据块”指的是多核处理器系统中,各个处理器核对数据访问的粒度。在一般实现中,该数据块因为存储在多核处理器系统的缓存中,该数据块的粒度是缓存行(即cacheline)。本领域普通技术人员可以理解,该数据块的粒度还可能有其他表现形式,譬如:缓存行的一部分, 或者多个缓存行,对此,本说明书的实施例均不加以限制。当某一数据块被多个处理器核访问,则会存在该数据块的多个拷贝,存储在这多个处理器核的私有缓存中。

贯穿本说明书,术语“片间目录”,也称为“片间访问者目录”,用来记录多片多核处理器所缓存的数据块被哪些处理器芯片访问的数据结构。该片间目录包括至少一个表项,每个片间目录表项和多片多核处理器中每个被写入到处理器核私有缓存内的数据块一一对应,表项中至少记录缓存数据块的标识以及该缓存数据块的访问芯片的芯片标识的列表。在具体实现中,片间目录至少存在三种实现方式,一种是集中式缓存实现方式,即在多片多核处理器独立于各处理器芯片的缓存中分配一块存储空间用来存储片间目录;另一种是采用分布式缓存实现方式,即将片间目录分成若干块,将这些目录块分别存储在多片多核处理器的多个处理器芯片内部的缓存中,通过目录表项所对应的缓存数据块的地址的部分作为索引来访问;第三种采用的内存实现方式,即将片间目录存储在内存(memory)中,通过内存控制器(memorycontroller)实现片间目录的访问。

贯穿本说明书,术语“片上目录”,也称为“片上访问者目录”,多片多核处理器中的每个处理器芯片均包含一个片上目录,用来记录处理器芯片所缓存的数据块被该处理器芯片中的哪些处理器核访问的数据结构。该片上目录包括至少一个表项,每个片上目录表项和该处理器芯片中每个被写入到处理器核私有缓存内的数据块一一对应,该表项至少记录缓存数据块的标识、该缓存数据块的访问核的核标识的列表以及片上独有标识,其中,片上独有标识用于标识该缓存数据块在多片多核处理器中是否为该处理器芯片独有。在具体实现中,片上目录常采用缓存的形式实现,至少存在两种实现方式,一种是采用集中式的实现方式,即在处理器芯片中独立于各处理器核的缓存中分配一块存储空间用来存储片上目录;另一种是采用分布式的实现方式, 即将片上目录分成若干块,将这些目录块分别存储在处理器芯片的多个处理器核内部的缓存中,通过目录表项所对应的缓存数据块的地址的部分作为索引来访问。

贯穿本说明书,术语“数据块的标识”,指的是缓存数据块的标识,一般采用缓存数据块的地址的高位作为该缓存数据块的标识,即利用缓存数据块地址中“标签+索引”(即构成了缓存数据块的地址高位)作为缓存数据块的唯一标识。具体可通过预先设定的方式指定。

贯穿本说明书,术语“芯片标识”,即“处理器芯片的标识”,指的是多片多核处理器中各个处理器芯片的唯一编号,可以由管理员预先分配和设定,本说明书对编号的方式不加限制。作为举例,譬如:可以按照自然数顺序进行编号。

贯穿本说明书,术语“核标识”,即“处理器核的标识”,指的是处理器芯片内处理器核的唯一编号,可以由管理员预先分配和设定,本说明书对编号的方式不加限制。作为举例,譬如:可以按照自然数顺序进行编号。

贯穿本说明书,术语“共享缓存”指的是处理器芯片内部用来存储多个核共享数据的缓存空间。共享缓存的实现方式分为集中式实现方式以及分布式实现方式,前者指的是在处理器芯片内部且独立于各处理器核之外设置一块缓存空间作为共享缓存,各个处理器核都可以访问这块独立的共享缓存;后者指的是在处理器芯片内部的各个处理器核内分配一块缓存空间,由各个处理器核内的缓存空间构成的一块“物理上分散部署、逻辑上统一访问”的缓存空间作为共享缓存。在具体实现中,该共享缓存一般指的是处理器系统中的二级(level2)缓存或三级(level3)缓存。

多片多核处理器结构

图1是本发明实施例所应用的多片多核处理器结构示意图。

如图1所示,多片多核处理器10中包括多个处理器芯片、以及互联结构200。其中,多个处理器芯片通过互联结构(interconnect)200相连,互联结构200可以通过多种方式实现,譬如:总线(bus)等。

处理器芯片的内部结构以处理器芯片100为例来介绍。其中,处理器芯片100包括多个处理器核(图1中的核11,…,核mn),互联结构接口(interconnectinterface)120,片间目录130,内存控制器140。其中,多个处理器核通过片上网络相连,片上网络主要基于电子或光学技术,分别称为片上电网络(electricalnetwork-on-chip,enoc)及片上光网络(opticalnetwork-on-chip,onoc),这部分技术属于本领域的公知技术,本发明的实施例不再赘述。

互联结构接口120作为处理器芯片100的接口,通过该接口连接在互联结构200上。

片间目录130用来记录多片多核处理器10中被写入到处理器核内私有缓存的数据块被哪些处理器芯片访问的信息(譬如,该信息至少包括:缓存数据块的标识,以及该缓存数据块的访问芯片的标识等相关信息)。

内存控制器140集成在处理器芯片内部,用来连接内存300,并对内存300的访问进行控制。需要说明的是,在多片多核处理器中的处理器芯片中,内存控制器140是非必要的部件,将内存控制器140集成在处理器芯片内部顺应了提高片上系统(systemonchip,soc)集成度的设计潮流,对于本领域技术人员可以理解,内存控制器140也可以设置在处理器芯片之外,独立于处理器芯片而存在。

片间目录的结构

片间目录的结构如图2所示,片间目录130包括:片间目录存储单元131以及片间目录控制单元132。

其中,片间目录存储单元131中存储多个片间目录表项,每个片间目录的表项和多片多核处理器中每个被写入到处理器核私有缓存内的数据块一一对应。

片间目录控制单元132用来实现对片间目录存储单元131所存储的片间目录表项操作的控制,这些表项操作包括但不限于:查找、创建、删除、修改等。

片间目录表项的数据结构可参看图3,片间目录表项包含被写入到处理器核私有缓存内的数据块的标识1311,以及该数据块的访问芯片的标识列表1312。

处理器芯片100存储的片间目录有至少如下三种实现方式,对于这些实现方式,具体实现过程根据需要选择,本发明的所有实施例均不加以限定。

(1)采用集中式的缓存实现:即在多片多核处理器独立于各处理器芯片的缓存中分配一块存储空间用来作为片间目录存储单元131,或者在一个处理器芯片的缓存中分配一块存储空间作为片间目录存储单元131,在该片间目录存储单元131设置逻辑控制电路作为片间目录控制单元132。

(2)采用分布式的缓存实现:即将片间目录分成若干块,将这些目录块以缓存目录(cachedirectory)的方式分别存储在多片多核处理器的多个处理器芯片内部的缓存中,缓存数据块地址的高位一般由标签以及索引构成,利用缓存数据块地址中“标签+索引”(即构成了缓存数据块的地址高位)作为缓存数据块的唯一标识。在每个缓存数据块的片间目录表项中,将该缓存数据块地址的索引以及标签设置于该片间目录表项中,在访问该片间目录表项 时,通过索引以及标签确定该与该缓存数据块对应的片间目录表项的位置。对于利用索引和标签来定位片间目录表项的过程,将在后续的实施例中加以具体描述。例如:假设多片多核系统包括16个处理器芯片,则片间目录可以分成16个部分,分别存储在这16个处理器芯片中。

(3)采用内存实现:即在内存中分配一部分存储空间作为片间目录存储单元131,将片间目录存储在内存中,通过内存控制器(作为片间目录控制单元132)实现对片间目录的访问以及控制。

处理器核的内部结构

结合图1,处理器核的内部结构以处理器核110为例进行介绍。其中包括:

处理单元111,用来实现对数据的处理。

缓存112,用来存储处理器核11频繁访问的数据块,一般作为处理器核的私有缓存。

片上目录113,用于记录处理器芯片100内被存储在处理器核的私有缓存的数据块被哪些处理器核访问的信息(即处理器芯片100中缓存的数据块的访问核的信息,访问核的信息至少可包括访问核的核标识)。

网络接口114,用来作为处理器核110连接处理器芯片100中片上网络的接口。

片上目录的结构

具体实现中,如图4所示,片上目录113包括:片上目录存储单元1131以及片上目录控制单元1132。

其中,片上目录存储单元1131中存储多个片上目录表项,每个片上目录的表项和处理器芯片中每个被写入到处理器核私有缓存内的数据块一一对应。

片上目录控制单元1132用来实现对片上目录存储单元1131所存储的片上目录表项进行查找、创建、删除、修改等操作的控制。

片上目录表项的数据结构可参看图5,片上目录表项包含被写入到处理器核私有缓存内的数据块的标识11311,片上独有标识11312以及该数据块的访问核的标识列表11313。

在图1中,处理器核110存储的片上目录有至少两种实现方式,对于这些实现方式,具体实现根据需要选择,本发明的所有实施例均不加以限定。

(1)采用集中式的缓存实现:即在处理器芯片100中独立于各处理器核的缓存中分配一块存储空间用来作为片上目录存储单元1131,或者在处理器芯片100中的某一个处理器核的缓存中分配一块存储空间作为片上目录存储单元1131,在该片上目录存储单元1131设置控制电路作为片上目录控制单元1132。

(2)采用分布式的缓存实现:即将片上目录分成若干块,将这些目录块以缓存目录(cachedirectory)的方式分别存储在多片多核处理器的多个处理器芯片内部的缓存中,缓存数据块地址的高位一般由标签以及索引构成,利用缓存数据块地址中“标签+索引”(即构成了缓存数据块的地址高位)作为缓存数据块的唯一标识。在每个缓存数据块的片上目录表项中,将该缓存数据块地址的索引以及标签设置于该片上目录表项中,在访问该片上目录表项时,通过索引以及标签确定该与该缓存数据块对应的片上目录表项的位置。对于利用索引和标签来定位片上目录表项的过程,将在后续的实施例中加以具体描述。例如:假设多核系统包括128个处理器核,则片上目录可以分成128个部分,分别存储在这128个处理器核中。

层次化目录的记录方式以及层次化目录的访问方式

采用片间目录以及片上目录所实现的层次化目录记录方式如图6a所示。在图6a中,多片多核处理器包含8个处理器芯片,每个处理器芯片包括8个处理器核,采用向量的方式分别记录某一数据块的访问芯片的信息以及对应访问芯片中的访问核的信息。片间目录中的向量标识该数据块的访问芯片的情况,该向量中每一比特位分别记录每一处理器芯片是否为该数据块的访问芯片(按照“从左到右”的顺序,分别标识芯片0到芯片7)。片上目录的向量标识该数据块的访问核的情况,该向量中每一比特分别记录每一处理器核是否为该数据块的访问核(按照“从左到右”的顺序,分别标识核0到核7)。为了更清楚地标识该数据块的访问芯片以及访问核,采用颜色来区分,图6中灰色比特位记录的是1,白色比特位记录的是0。

以数据块1为例,参看图6a,根据和数据块1对应的片间目录的表项中,可看出【芯片0、芯片3、芯片4】为数据块1的访问芯片,根据和数据块1对应的片上目录的表项中,可看出,在芯片0的片上目录表项中,【核0、核1、核2、核5】为数据块1的访问核,在芯片3的片上目录表项中,【核5】为数据块1的访问核,在芯片4的片上目录表项中,【核1、核3、核4】为数据块1的访问核。由此可以看出,通过这种层次化的目录记录方式,能够清楚地描述数据块的访问芯片以及访问核。

层次化目录的访问方式可参看图6b,在图6b中,是采用缓存的方式实现片上目录以及片间目录。其中,每一个片上目录表项以及每一个片间目录表项采用缓存目录中的表项来记录,每个缓存数据块的地址包括:标签、索引以及块内偏移。相应的,片上目录使用了缓存目录的方式存储,每个片上目录表项分别记录缓存数据块地址中的标签、该缓存数据块是否为本处理器芯片独有的片上独有标识、以及该缓存数据块的访问核的列表;片间目录也使用了缓存目录得方式存储,每个片间目录表项分别记录缓存数据块地址中 的标签以及该缓存数据块的访问芯片的列表。

作为举例,图6b所示出的多片多核处理器,包括了四个处理器芯片,每个处理器芯片包括16个处理器核。片间目录采用分布式的方式缓存在各个处理器芯片中,每个处理器芯片的片上目录也采用分布式的方式缓存在各个处理器核中。由于具体实现中,片上目录以及片间目录所包含的表项非常多,作为示意,图6b中仅示出片上目录以及片间目录的一部分。

在芯片0中的核0存储的片上目录中,第一个目录表项内容是【48:1:(4,5,6)】,该表项的索引是0(标示在该表项之前),该表项所对应的缓存数据块的标签为48,即标签48和索引0的拼接就构成了该目录表项所对应的缓存数据块的地址的高位,而由于缓存数据块地址的高位是唯一的,因此,可以用来唯一的标识该缓存数据块。另外,可看出该片上目录表项的片上独有标识是1,所以这个数据是芯片0独有的,后面的(4,5,6)则表示该缓存数据块存储在芯片0中的编号分别为4,5,以及6的处理器核的私有缓存中。

在芯片0所存储的片间目录中,可看出芯片0中处理器核0内标签为48那个缓存数据块的片间目录表项,表项内容是【48:0】,该表项内容中的索引为0,其访问芯片列表只有0,说明标签为48的缓存数据块仅存储在芯片0上。

下面通过示意性的举例来说明采用缓存数据块的标签和索引来确定片间目录表项以及片上目录表项的存储位置。一个处理器芯片上有16个核,所以这里约定标签为16*n(n为整数,且n≥0)的缓存数据块的片上目录表项存储在核0上,标签为16*n+1(n为整数,且n≥0)的缓存数据块的片上目录表项存储在核1上,以此类推,可以归纳为:标签为16*n+m(n为整数,且n≥0,m为整数,且0≤m≤15)的缓存数据块的片上目录表项存储在核m(m为整数,且0≤m≤15)上。

该多片多核处理器系统有4个芯片,所以这里约定标签为4*s(s为整数, 且s≥0)的缓存数据块的片上目录表项存储在芯片0上,标签为4*s+1(s为整数,且s≥0)的缓存数据块的片上目录表项存储在芯片1,以此类推。可以归纳为:标签为4*s+t(s为整数,且s≥0,t为整数,且0≤t≤3)的缓存数据块的片上目录表项存储在核t(t为整数,且0≤t≤3)上。

进一步类推,按照上述这种方式,对于一个包含了n个处理器芯片,且每个处理器芯片包含m个核的多片多核处理器,某一缓存数据块的标签为t,则该缓存数据块的片间目录表项所存储的处理器芯片的编号可通过取模运算(modulooperation)得到,即:tmodn(即表示对t除以n计算得到结果进行取余);该缓存数据块的片上目录表项所存储的处理器核的编号也可通过取模运算得到,即:tmodm(即表示对t除以m计算得到结果进行取余)。

多片多核处理器中缓存一致性操作方法实施例

图7a示出了根据本发明实施例的多片多核系统中缓存一致性操作方法700的示意性流程图,该方法适用于如图1所示的多片多核处理器的硬件架构。

s710,接收针对第一数据块的写请求,该写请求由第一处理器芯片中第一处理器核发送,且该写请求包括第一数据块的标识以及待写入数据。

其中,该步骤由第一处理器芯片的片上目录控制单元来执行。在片上目录控制单元接收到针对第一数据块的写请求之后,从该写请求中获取第一数据块的标识。对第一数据块的写请求中包含该第一数据块的地址,第一数据块的标识可通过选择该数据块的地址的高位来表示。以图6b为例:该数据块的地址包括标签,索引以及块内偏移,则可通过该数据块地址的“标签+索引”作为该数据块的标识。

s720,根据第一数据块的标识,在第一处理器芯片中的片上目录查询到和第一数据块对应的片上目录的表项,从查询的片上目录的表项中确定存储第一数据块的处理器核的核标识,向上述核标识对应的处理器核发送删除第一数据块的指令消息。

其中,第一处理器芯片的片上目录控制单元在获取第一数据块的标识之后,根据第一数据块的标识查询片上目录存储单元,确定和第一数据块对应的片上目录表项,从中确定缓存有第一数据块的处理器核的核标识,并向这些处理器核发送删除第一数据块的指令消息,这些处理器核在接收到该指令消息后,将私有缓存内的第一数据块删除。

s730,根据片上目录表项中的片上独有标识确定第一数据块是第一处理器芯片独有时,不发送针对第一数据块的片间目录查询请求。

其中,作为具体实现中的举例,片上目录控制单元根据对应第一数据块的片上目录表项中的片上独有标识确定该标识为true时,则确定第一数据块由第一处理器芯片独有,则第一处理器芯片的片上目录控制单元不向片间目录控制单元发送查询片间目录表项的请求。

s740,指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存中。

其中,第一处理器核接收到待写入数据之后,将该待写入数据写入到第一处理器核内的私有缓存中。

通过上面的实施例可看出,在片上目录表项中设置片上独有标识,通过片上独有标识记录该表项对应的数据块是否在多片多核处理器中为该处理器芯片独有。采用上述方式使得在进行一致性操作过程中,当判断某一数据块对应的片上目录表项中记录的片上独有标识为true时,就仅在该处理器芯片中进行缓存一致性操作,这样就减少了现有技术存在的对于任何一个数据块的写操作都需要片间通信的开销,从而有效地降低了时延及功耗。

进一步的,当根据片上目录表项中的片上独有标识确定第一数据块不是第一处理器芯片独有时,参看图7b,该缓存一致性操作方法还包括:

s750,向片间目录发送针对第一数据块的片间目录查询请求,该查询请求中包括所述第一数据块的标识。

其中,在确定片上独有标识为false时(说明第一数据块不是第一处理器芯片独有时),第一处理器芯片的片上目录控制单元向片间目录控制单元发送片间目录查询请求,该请求中携带有第一数据块的标识,该第一数据块的标识可由该数据块的地址得到。

s760,根据第一数据块的标识,查询片间目录,确定和第一数据块对应的片间目录的表项。

其中,片间目录控制单元在接收到上述查询请求之后,根据第一数据块的标识查询片间目录存储单元中的表项,确定和第一数据块对应的片间目录表项。

s770,从片间目录的表项中确定保存有第一数据块的处理器芯片的芯片标识,向芯片标识除第一处理器芯片之外其他处理器芯片发送删除第一数据块的指令消息,上述指令消息包括所述第一数据块的标识。

其中,作为具体实现中的举例,片间目录控制单元从和第一数据块对应的片间目录表项中确定保存有第一数据块的处理器芯片的芯片标识后,向这些芯片标识对应的处理器芯片(除第一处理器芯片之外)发送删除第一数据块的指令消息。

s780,指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存。

其中,作为具体实现中的举例,在发送删除第一数据块的指令消息后, 第一处理器芯片中的片上目录控制单元向第一处理器核发送指示消息,使得第一处理器核将待写入数据写入到第一处理器核的私有缓存。

进一步的,在s740及s780之后,参看图7c,该方法实施例还包括:

s790,指示第一处理器芯片将待写入数据写入到第一处理器芯片的共享缓存。

其中,该步骤中,采用的是缓存写回机制中的写通模式(writethrough),由第一处理器芯片的片上目录控制单元向第一处理器芯片发送指示消息,以便将待写入数据写入到第一处理器芯片的共享缓存。

进一步的,当在芯片标识除第一处理器芯片之外其他处理器芯片接收到删除第一数据块的指令消息之后,参看图7d,该方法实施例还包括:

s771,除第一处理器芯片之外的各处理器芯片根据第一数据块的标识,在各处理器芯片中的片上目录查询和第一数据块对应的片上目录表项,从第一数据块对应的各片上目录的表项中确定存储有第一数据块的处理器核的核标识,向核标识对应的处理器核发送删除第一数据块的指令消息。

其中,收到删除第一数据块的指令消息的各处理芯片的片上目录控制单元,根据第一数据块的标识,在各自的片上目录存储单元查找和第一数据块对应的片上目录表项,并从该片上目录表项中确定缓存有第一数据块的处理器核的核标识,向这些核标识对应的处理器核的私有缓存发送删除第一数据块的指令消息,使得这些处理器核将存储在私有缓存的第一数据块删除。

另外一种情况下,即当根据第一数据块的标识在第一处理器芯片的片上目录未能查询到和第一数据块对应的表项,且根据第一数据块的标识在片间 目录中查询到与第一数据块的标识对应的表项时,参看图8。

s810,根据第一数据块的标识,在片间目录查询到和第一数据块对应的片间目录的表项,从片间目录的表项中确定保存有第一数据块的处理器芯片的芯片标识,向上述芯片标识对应的处理器芯片发送删除第一数据块的指令消息,该指令消息包括所述第一数据块的标识。

其中,第一处理器芯片的片上目录控制单元在第一处理器芯片的片上目录未能查询到第一数据块对应的表项,但在片间目录中查询到和第一数据块对应的表项时,向片间目录控制单元发送指示消息,指示片间目录控制单元根据第一数据块的标识,查询片间目录,确定保存有第一数据块的片间目录的表项,从而确定第一数据块的访问芯片的标识,向上述访问芯片发送删除第一数据块的指令消息,以使得这些访问芯片将缓存的第一数据块删除。

s820,指示第一处理器核将待写入数据写入到第一处理器核内的私有缓存。

其中,在发送删除第一数据块的指令消息后,第一处理器芯片中的片上目录控制单元向第一处理器核发送指示消息,使得第一处理器核将待写入数据写入到第一处理器核的私有缓存。

s830,在第一处理器芯片中的片上目录中,创建对应第一数据块的表项,将第一处理器核的核标识写入表项中存储第一数据块的处理器核的核标识列表中,并设置片上独有标识为true。

其中,由第一处理器芯片的片上目录控制单元在第一处理器芯片中的片上目录中,创建对应第一数据块的表项,将第一处理器核的核标识写入表项中存储第一数据块的处理器核的核标识列表中,并设置片上独有标识为true。

进一步的,当在芯片标识对应的处理器芯片接收到删除第一数据块的指令消息之后,该方法实施例还包括:

s811,各处理器芯片根据第一数据块的标识,在各处理器芯片中的片上目录查询和第一数据块对应的片上目录表项,从第一数据块对应的各片上目录的表项中确定存储有第一数据块的处理器核的核标识,向核标识对应的处理器核发送删除第一数据块的指令消息。

其中,收到删除第一数据块的指令消息的各处理芯片的片上目录控制单元,根据第一数据块的标识,在各自的片上目录存储单元查找和第一数据块对应的片上目录表项,并从该片上目录表项中确定缓存有第一数据块的处理器核的核标识,向这些核标识对应的处理器核的私有缓存发送删除第一数据块的指令消息,使得这些处理器核将存储在私有缓存的第一数据块删除。

另外一种情况下,即当根据第一数据块的标识在第一处理芯片的片上目录未能查询到和第一数据块对应的表项,且所述第一数据块的标识在片间目录中未能查询到与第一数据块对应的表项时,执行如下步骤:

s910,指示根据第一数据块的标识,从内存中读取第一数据块,将第一数据块存入第一处理器核的私有缓存。

其中,第一处理器芯片的片上目录以及片间目录均未查询到第一数据块对应的表项,则说明在多片多核处理器中不存在第一数据块,则需要第一处理器芯片根据第一数据块的标识,从内存中读取第一数据块,并存入第一处理器核的私有缓存。

s920,在第一处理器芯片的片上目录中,创建针对第一数据块的片上目录表项,在存储第一数据块的核标识列表中记录第一处理器核的标识,并设置片上独有标识为true。

其中,第一处理器芯片的片上目录控制单元在所述第一处理器芯片的片上目录中,创建针对第一数据块的片上目录表项,在存储所述第一数据块的 核标识列表中记录所述第一处理器核的标识,并设置片上独有标识为true,即设置的第一数据块在多片多核处理器中由第一处理器芯片独有。

s930,在片间目录中,创建对应第一数据块的片间目录表项,在存储第一数据块的芯片标识列表中记录第一处理器芯片的标识。

其中,第一处理器芯片的片上目录控制单元,指示片间目录控制单元在片间目录中,创建对应第一数据块的片间目录表项,在存储第一数据块的芯片标识列表中记录第一处理器芯片的标识。

下面结合举例详细描述本发明实施例的缓存一致性操作的方法。

图10为本发明另一实施例的目录(包括片上目录以及片间目录)的访问方法的示意性流程图。结合图1所示的多片多核处理器的组成结构,以处理器芯片100中的核11发出访问请求(读请求或者写请求)消息为例来进行说明。

1001,接收针对数据块1的访问请求。

其中,对数据块1的访问请求携带有待访问数据块的地址。

1002,请求核根据待访问的数据块的标识访问片上目录,若命中片上目录表项,则执行1003;若未命中片上目录表项,则执行1010。

其中,请求核指的是发出读请求或者写请求的处理器核。作为举例,可指的是图1中核11。片上目录指的是发出请求的处理器核所属处理器芯片的片上目录,用来记录存储在该处理器芯片中各处理器核私有缓存中的数据块以及这些数据块的访问核的信息。作为举例,即图1中处理器芯片100上的片上目录113,其中片上目录的组成如图4所示。命中片上目录表项,指的是根据待访问数据块的标识找到和该标识对应的片上目录表项,作为举例,片上目录表项的具体数据结构如图5所示。

1003,判断请求类型是读请求还是写请求,若为读请求时,则执行1004; 若为写请求时,则执行1005。

其中,通过访问请求消息中预先定义的字段或者比特位来识别是读请求还是写请求。作为举例,预先在访问请求消息中设定w/r比特位来标识请求类型,譬如:当该比特位为1时表示写请求,当该比特位为0时表示读请求。

1004,若为读请求,将请求核加入片上目录表项中的访问核列表。

例如,对于发送读请求的请求核(即发出读请求的处理器核),待读取的数据块会被存入请求核的私有缓存中,需要将该请求核的标识记录在该数据块对应的片上目录表项中的访问核的标识列表。

1005,若为写请求时,需要判断写请求地址所对应的数据块是否为片上独有。若是片上独有,则执行1006;若不是片上独有,则执行1007。

其中,对于写请求,需要判断写请求地址所对应的数据块是否为片上独有。结合图5所示的片上目录表项的数据结构,通过片上独有标识11312来标识对应的数据块是否为片上独有。

1006,当写请求地址对应的数据块是片上独有时,则对该数据块进行片上一致性维护。

具体的,片上一致性维护的过程是根据片上目录表项中所存储的访问核的标识列表确定私有缓存中存储有该数据块的处理器核,发送删除该数据块的指令消息,使得这些处理器核将私有缓存内的该数据块删除。

1007,当写请求地址对应的数据块不是片上独有时,访问片间目录。

例如,可以由图4中的片上目录控制模块发送片间目录的访问请求,该访问请求中携带有数据块的标识。在片间目录找到和该数据块对应的片间目录的表项,根据图3所示的片间目录表项的数据结构,确定该数据块的访问芯片的标识列表,然后对该写请求地址对应的数据块进行全局一致性维护。

1008,对写请求地址对应的数据块进行全局一致性维护。

其中,全局一致性维护,即需要根据写请求地址对应的数据块的标识查询片间目录确定访问芯片,然后根据该数据块的标识分别查询各个访问芯片的片上目录表项确定访问核,向这些访问核发送删除该数据块的指令消息,由各个访问核的私有缓存将缓存的该数据块删除,然后将待写入数据写到请求核的私有缓存中。

以图6a作为举例,确定【芯片0、芯片3、芯片4】为数据块1的访问芯片,根据和数据块1对应的片上目录的表项中,可看出在芯片0的片上目录表项中,【核0、核1、核2、核5】为数据块1的访问核,在芯片3的片上目录表项中,【核5】为数据块1的访问核,在芯片4的片上目录表项中,【核1、核3、核4】为数据块1的访问核。对数据块1进行全局一致性维护,即将上述这些数据块1的访问核中私有缓存中的数据块1删除。

1009,在执行完全局一致性维护之后,将该数据块对应的片上目录表项中的片上独有标识置1。

例如,这里本实施例是采用1个比特作为片上独有标识,当该标识取值为1时,表示片上独有;当该标识取值为0时,表示不是片上独有。

1010,当访问片上目录未命中时,需要访问片间目录,确定是否命中。若为是,则执行1011;若为否,则执行1018。

其中,本实施例采用的是层次化的目录结构,即每个处理器芯片包含片上目录,在整个多片多核处理器系统中包含片间目录。当访问核所在处理器芯片中的片上目录未能找到相应的表项时,需要去片间目录查询,看是否其他的处理器芯片作为待访问数据块的访问芯片。

1011,判断访问请求的类型是读请求还是写请求,如果是读请求,执行1012;如果是写请求,则执行1015。

例如:通过请求消息中预先定义的字段或者比特位来识别是读请求还是写 请求。

1012,确定访问请求为读请求时,将发送读请求的请求核所在处理器芯片的标识添加到读请求对应数据块的访问芯片列表。

其中,发送读请求的请求核(对应的是处理器核)将其所在芯片的标识添加到片间目录表项中的访问芯片列表中。

1013,新建片上目录表项。

其中,由于片上目录中未能够命中该写请求对应的数据块的目录表项,则需要在请求核所在芯片的片上目录中新建对应数据块的片上目录表项。

1014,将请求核加入访问核列表。

其中,在新创建的片上目录表项中,将请求核(即发出请求的处理器核)的标识添加到访问核的标识列表中。

1015,对于1011步骤中的读写类型判断为写请求时,执行全局一致性维护。

其中,执行全局一致性维护的过程和步骤1008类似,在此不再赘述。

1016,新建片上目录表项。

其中执行新建片上目录表项的操作和步骤1012类似,在此不再赘述。

1017,将该数据块对应的片上目录表项中的片上独有标识置1。

其中执行片上独有标识置1的操作和步骤1009类似,在此不再赘述。

1018,当采用待访问数据块对片间目录查询未能够命中时,新建片间目录表项。

其中,在片间目录中创建针对待访问数据块的片间目录表项。作为举例,创建的片间目录表项采用图3所示的数据结构的形式。

1019,在针对待访问的数据块创建完片间目录表项之后,需要进一步判断请求类型是读还是写。如果是读请求,执行1020;如果是写请求,则执行1023。

其中,作为举例,通过访问请求消息中预先定义的字段或者比特位来识别是读请求还是写请求。作为举例,预先在访问请求消息中设定w/r比特位来标识请求类型,譬如:当该比特位为1时表示写请求,当该比特位为0时表示读请求。

1020,判断是读请求时,将发出读请求的核所在的芯片(即请求芯片)添加到访问芯片列表。

该步骤和步骤1012的实现方式类似,在此不再赘述。

1021,新建片上目录表项。

该步骤和和步骤1013的实现方式类似,在此不再赘述。

1022,将请求核的标识加入访问核列表。

该步骤和和步骤1014的实现方式类似,在此不再赘述。

1023,将请求芯片加入到访问芯片列表。

和步骤1012的执行过程一致,在此不再赘述。

1024,新建片上目录表项。

和步骤1013的执行过程一致,在此不再赘述。

1025,将请求核加入访问核列表。

和步骤1014的执行过程一致,在此不再赘述。

多片多核处理器实施例

本发明实施例还提供了一种能够加快缓存一致性处理效率的多片多核处理器。如图1所示并结合图2-5,以图1中的处理器芯片100、以及处理器芯片100中的核11为例。其中,处理器核11中的片上目录缓存113包括片上目录存储单元1131以及片上目录控制单元1132,片间目录130包括片间目录 存储单元131以及片间目录控制单元132。

其中,片间目录存储单元1131所存储的每个片间目录的表项和多片多核处理器中每个被写入到处理器核私有缓存内的数据块一一对应,每个片间目录的表项记录有数据块的标识1311以及存储所述数据块的处理器芯片的芯片标识列表1312。

片上目录缓存113包括片上目录存储单元1131以及片上目录控制单元1132,每个核包括用来存储数据块的私有缓存,片上目录存储单元1131所存储的每个片上目录表项和处理器芯片中每个被写入到处理器核内私有缓存的数据块一一对应,每个片上目录的表项记录数据块的标识11311、片上独有标识11312以及存储有所述数据块的处理器核的核标识列表11313,片上独有标识11312用于标识所述数据块在多片多核处理器中是否为处理器芯片独有。

核11中片上目录控制单元1132接收针对第一数据块的写请求,该写请求由处理器芯片100中1处理器核11发送,且该写请求包括所述第一数据块的标识以及待写入数据;

处理器芯片100的片上目录控制单元1132根据第一数据块的标识,在处理器芯片100中的片上目录存储单元1131查询到和第一数据块对应的片上目录的表项,从查询的片上目录的表项中确定存储第一数据块的处理器核的核标识,向核标识对应的处理器核发送删除所述第一数据块的指令消息;

处理器芯片100的片上目录控制单元1132根据片上目录表项中的片上独有标识确定第一数据块是处理器芯片100独有时,不向片间目录控制单元132发送针对第一数据块的片间目录查询请求;

处理器芯片100的片上目录控制单元1132指示第一处理器核将待写入数据写入到所述第一处理器核内的私有缓存112。

当根据片上目录表项中的片上独有标识11312确定第一数据块不是所述处理器芯片100独有时,

处理器芯片100的片上目录控制单元1132向片间目录控制单元132发送针对第一数据块的片间目录查询请求,该查询请求中包括所述第一数据块的标识。

片间目录控制单元132根据第一数据块的标识,查询片间目录存储单元131存储的片间目录表项,确定和第一数据块对应的片间目录的表项;

片间目录控制单元132从片间目录的表项中确定保存有所述第一数据块的处理器芯片的芯片标识,向芯片标识除处理器芯片100之外其他处理器芯片发送删除第一数据块的指令消息,该指令消息包括所述第一数据块的标识。

处理器芯片100的片上目录控制单元1132指示处理器核110将待写入数据写入到处理器核110内的私有缓存112。

在指示所述第一处理器核将所述待写入数据写入到所述第一处理器核内的私有缓存之后,处理器芯片100的片上目录控制单元1132,还用于指示处理器芯片100将待写入数据写入到处理器芯片100内的共享缓存。

当根据第一数据块的标识在处理器芯片100的片上目录存储单元1131未能查询到和第一数据块对应的表项,且根据第一数据块的标识在片间目录存储单元131中查询到与第一数据块的标识对应的表项时,处理器芯片100的片上目录控制单元1132,还用于指示片间目录控制单元132根据第一数据块的标识,在片间目录存储单元131查询到和第一数据块对应的片间目录的表项,从片间目录的表项中确定保存有第一数据块的处理器芯片的芯片标识,向该芯片标识对应的处理器芯片发送删除第一数据块的指令消息,上述指令消息包括所述第一数据块的标识。

处理器芯片100的片上目录控制单元1132,还用于指示处理器核11将待写入数据写入到处理器核11内的私有缓存112。

处理器芯片100的片上目录控制单元1132,还用于在处理器芯片100中的片上目录存储单元1131中,创建对应第一数据块的表项,将处理器核11的核标识写入表项中存储第一数据块的处理器核的核标识列表中,并设置片上独有标识为true。

当根据第一数据块的标识在处理器芯片100的片上目录存储单元1131未能查询到和第一数据块对应的表项,且根据第一数据块的标识在片间目录存储单元131中未能查询到与第一数据块的标识对应的表项时,处理器芯片100的片上目录控制单元1132,还用于指示内存控制器140根据第一数据块的标识,从内存300中读取第一数据块,将第一数据块存入处理器核11的私有缓存112。

处理器芯片100的片上目录控制单元1132,还用于在处理器芯片100的片上目录存储单元1131中,创建针对第一数据块的片上目录表项,在存储第一数据块的核标识列表中记录第一处理器核的标识,并设置片上独有标识为true。

处理器芯片100的片上目录控制单元1132,还用于指示片间目录控制单元132在片间目录存储单元131中,创建对应第一数据块的片间目录表项,在存储第一数据块的芯片标识列表中记录处理器芯片100的标识。

在芯片标识对应的处理器芯片接收到删除所述第一数据块的指令消息之后,多片多核处理器中各处理器芯片的片上目录控制单元,用于根据第一数据块的标识,在各处理器芯片中的片上目录存储单元查询和第一数据块对应的片上目录表项,从第一数据块对应的各片上目录的表项中确定存储有第一数据块的处理器核的核标识,指示核标识对应的处理器核删除私有缓存的第一数据块。

需要说明的是,本发明的所有实施例中所提及的“第一”“第二”等仅仅为了区别彼此以描述方便而使用,不能将这些序号解读为对后面所连接的实体范围的限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1