CN105659216B - 多核处理器系统的缓存目录处理方法和目录控制器 - Google Patents
多核处理器系统的缓存目录处理方法和目录控制器 Download PDFInfo
- Publication number
- CN105659216B CN105659216B CN201480038054.5A CN201480038054A CN105659216B CN 105659216 B CN105659216 B CN 105659216B CN 201480038054 A CN201480038054 A CN 201480038054A CN 105659216 B CN105659216 B CN 105659216B
- Authority
- CN
- China
- Prior art keywords
- directory entry
- pointer
- vector
- data block
- sharer
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了一种多核处理器系统的缓存目录处理方法及目录控制器,多核处理器系统包括多个处理器核、共享存储空间及目录控制器,该方法包括:目录控制器根据第一处理器核对第一数据块的读操作请求,确定第一数据块对应的第一指针目录项;如果第一指针目录项的向量标记为有效状态,且第一处理器核不属于第一指针目录项的目录共享者列表当前记录的共享者,且第一指针目录项的目录共享者列表当前记录的共享者数量达到第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则该目录控制器确定该共享存储空间的一个向量目录项作为第一指针目录项的向量目录项,并将第一数据块的当前的共享者记录到第一指针目录项的向量目录项中。
Description
技术领域
本发明涉及计算机领域,并且更具体地,涉及多核处理器系统的缓存目录处理方法和目录控制器。
背景技术
多核心处理器(Multi-core processor),也叫多微处理器核心,是在一个单一的计算组件中,加入两个或两个以上的独立实体中央处理单元。独立实体中央处理单元也被称为处理器核、内核或核心(core),是CPU最重要的组成部分,CPU所有的计算、接受/存储命令、处理数据都由处理器核执行。各种CPU处理器核都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单元和总线接口等。
微处理器是计算机系统的核心部件,面对应用程序对高吞吐量数据处理能力的日益增长的需求,传统的提高单核处理器性能的方案受到集成度、功耗、延迟的制约,现如今业界普遍采用以多个简单的核心来替代单个复杂核心的片上多核设计方案。由于多个处理器核需要共享物理内存,且各个处理器核都拥有自己的私有缓存,当一个处理器核访问共享物理内存时,往往需要将该共享物理内存的数据块拷贝到自己的私有缓存中,以加速数据的访问。当多个处理器核访问共享物理内存时,该共享物理内存中的数据块的副本将存在多个处理器核的私有缓存中,因此需要高速缓存一致性协议来管理数据的共享保持这些副本的一致性,当某个处理器核对共享数据块或者其副本进行写操作时就可以发送写无效或者写更新操作到存有该缓存块副本的处理器核中,避免数据不一致的问题。
当前主要有两种缓存一致性协议:一种是基于监听总线的一致性协议;一种是基于目录结构的一致性协议。对于基于目录结构的一致性协议来说,单个处理器核的访存需求会首先发送到拥有被访问缓存块的目录结构中,该目录结构记录该缓存块的共享情况,而写无效或者写更新操作仅仅发送到目录结构中记录的处理器核中,因此避免了不必要的带宽开销。对于基于目录结构的一致性协议来说,由于目录结构自身也会占用片上存储空间,一个重要的研究内容就是如何降低目录结构自身的存储开销。
本发明的一种现有技术,采用指针目录结构来记录共享物理内存内数据块的访问状态。在指针目录结构中,一个指针目录项对应于共享物理内存的一个数据块,指针目录项的地址标签指向共享物理内存的一个数据块地址,指针目录项的目录共享者列表记录该指针目录项所指向的数据块的共享者(处理器核)。但是,如果为指针目录项的目录共享者列表分配足够大的地址空间,则会造成片上存储空间的开销浪费;如果为指针目录项的目录共享者列表分配较小的地址空间,则可能出现无法正确表示数据块的共享状态的情况。
需要一种技术方案,能够正确表示数据块的共享状态,同时提高目录的片上存储空间的利用率。
发明内容
本发明实施例提供一种多核处理器系统的缓存目录处理方法和目录控制器,能够正确表示数据块的共享状态的前提下,一定程度上提高目录的片上存储空间的利用率。
第一方面,提出了一种多核处理器系统的缓存目录记录方法,该多核处理器系统包括多个处理器核、共享存储空间及目录控制器,该方法包括:
当该多个处理器核中的第一处理器核对该共享存储空间的第一数据块发起读操作请求时,根据该第一处理器核对该第一数据块的读操作请求,确定该第一数据块对应的第一指针目录项,其中,该第一指针目录项为该第一数据块在该共享存储空间的目录中所对应的指针目录项,该第一指针目录项的地址标签用于标记该第一数据块的地址;
如果该第一指针目录项的向量标记为有效状态,且该第一处理器核不属于该第一指针目录项的目录共享者列表当前记录的共享者,且该第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则该目录控制器确定该共享存储空间的一个向量目录项作为该第一指针目录项的向量目录项,并将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中;
其中,将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中包括:
将该第一指针目录项的向量标记设置为无效状态,并将该第一指针目录项目录共享者列表当前记录的共享者及该第一处理器核,记录到该向量目录项的目录共享者列表中,并用该向量目录项的地址替换该第一指针目录项的目录共享者列表所记录的内容,其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
结合第一方面,在第一种可能的实现方式中,确定该第一指针目录项的向量目录项具体实现为:确定第一向量目录项为该第一指针目录项的向量目录项,其中该第一向量目录项为该共享存储空间的向量目录项中的一个未分配的向量目录项。
结合第一方面,在第二种可能的实现方式中,确定该第一指针目录项的向量目录项具体实现为:确定第二向量目录项为该第一指针目录项的向量目录项,其中该第二向量目录项为该共享存储空间的向量目录项中一个已分配的向量目录项。在该将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之前,该方法还包括:将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中,其中,该第二指针目录项为该第二向量目录项在确定为该第一指针目录项的向量目录项之前所对应的指针目录项。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,该指针目录项还包括广播标记,当该广播标记为有效状态时表示该指针目录项所对应的第一数据块为该多核处理器系统的所有处理器核所共享,当该广播标记为无效状态时表示该指针目录项所对应的第一数据块为非该多核处理器系统的所有处理器核所共享,将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中具体实现为:如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量大于预定阈值,则将该第二指针目录项的广播标记设置为有效状态,并将该第二指针目录项的向量标记设置为有效状态;或者如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量小于预定阈值,则从该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者中选择不多于M个的共享者作为该第二指针目录项的共享者,并将该第二指针目录项的广播标记设置为无效状态,其中,M为该指针目录项可记录的共享者的数量最大值。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,在该将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该方法还包括:当该多个处理器核中第二处理器核对该第一数据块发起写操作请求时,根据该第二处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;如果该第一指针目录项当前的向量标记为无效状态,则释放该第一指针目录项的向量目录项的资源,并将该第一指针目录项的向量标记设置为有效状态,并该第一指针目录项的目录共享者列表由记录该第一指针目录项的向量目录项的地址改为记录该第二处理器核。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,在该将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该方法还包括:当该多个处理器核中第三处理器核对该第一数据块发起写操作请求时,根据该第三处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;如果该第一指针目录项当前的向量标记为无效状态,且该第三处理器核不属于该第一指针目录项的向量目录项记录的共享者,则将该第三处理器核添加到该第一指针目录项的向量目录项记录的共享者中。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式中任一种可能的实现方式,在第六种可能的实现方式中,在该将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该方法还包括:当该第一数据块或该第一数据块的目录项被作废时,或者当该第一数据块的共享者数量小于或等于M时,释放该第一指针目录项的向量目录项的资源,其中,M为该第一指针目录项可记录的共享者的数量最大值。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第六种可能的实现方式中任一种可能的实现方式,在第七种可能的实现方式中,该向量目录项还包括反向指针,用于指向该向量目录项所对应的指针目录项的地址;将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中还包括:将该第一指针目录项的地址写入该向量目录项的反向指针中。
第二方面,应用于多核处理器系统,该处理器系统还包括多个处理器核和共享存储空间,该目录控制器包括:第一确定单元,用于当该多个处理器核中的第一处理器核对该共享存储空间的第一数据块发起读操作请求时,根据该第一处理器核对该第一数据块的读操作请求,确定该第一数据块对应的第一指针目录项,其中,该第一指针目录项为该第一数据块在该共享存储空间的目录中所对应的指针目录项,该第一指针目录项的地址标签用于标记该第一数据块的地址;第二确定单元,用于如果该第一指针目录项的向量标记为有效状态,且该第一处理器核不属于该第一指针目录项的目录共享者列表当前记录的共享者,且该第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则确定该共享存储空间的一个向量目录项作为该第一指针目录项的向量目录项;处理单元,用于将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中;其中,该处理单元具体用于:将该第一指针目录项的向量标记设置为无效状态,并将该第一指针目录项目录共享者列表当前记录的共享者及该第一处理器核,记录到该向量目录项的目录共享者列表中,并用该向量目录项的地址替换该第一指针目录项的目录共享者列表所记录的内容,其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
结合第二方面,在第一种可能的实现方式中,该第二确定单元具体用于:确定第一向量目录项为该第一指针目录项的向量目录项,其中该第一向量目录项为该共享存储空间的向量目录项中的一个未分配的向量目录项。
结合第二方面,在第二种可能的实现方式中,该第二确定单元具体用于:确定第二向量目录项为该第一指针目录项的向量目录项,其中该第二向量目录项为该共享存储空间的向量目录项中一个已分配的向量目录项;在该处理单元将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之前,该处理单元还用于:将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中,其中,该第二指针目录项为该第二向量目录项在确定为该第一指针目录项的向量目录项之前所对应的指针目录项。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,该指针目录项还包括广播标记,当该广播标记为有效状态时表示该指针目录项所对应的第一数据块为该多核处理器系统的所有处理器核所共享,当该广播标记为无效状态时表示该指针目录项所对应的第一数据块为非该多核处理器系统的所有处理器核所共享,在用于将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项的过程中,该处理单元具体用于:如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量大于预定阈值,则将该第二指针目录项的广播标记设置为有效状态,并将该第二指针目录项的向量标记设置为有效状态;或者如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量小于预定阈值,则从该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者中选择不多于M个的共享者作为该第二指针目录项的共享者,并将该第二指针目录项的广播标记设置为无效状态,其中,M为该指针目录项可记录的共享者的数量最大值。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,在该处理单元将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该第一确定单元还用于当该多个处理器核中第二处理器核对该第一数据块发起写操作请求时,根据该第二处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;该处理单元还用于如果该第一指针目录项当前的向量标记为无效状态,则释放该第一指针目录项的向量目录项的资源,并将该第一指针目录项的向量标记设置为有效状态,并该第一指针目录项的目录共享者列表由记录该第一指针目录项的向量目录项的地址改为记录该第二处理器核。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,在该处理单元将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该第一确定单元还用于当该多个处理器核中第三处理器核对该第一数据块发起写操作请求时,根据该第三处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;该处理单元还用于如果该第一指针目录项当前的向量标记为无效状态,且该第三处理器核不属于该第一指针目录项的向量目录项记录的共享者,则将该第三处理器核添加到该第一指针目录项的向量目录项记录的共享者中。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中任一种可能的实现方式,在第六种可能的实现方式中,在该处理单元将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该处理单元还用于当该第一数据块或该第一数据块的目录项被作废时,或者当该第一数据块的共享者数量小于或等于M时,释放该第一指针目录项的向量目录项的资源,其中,M为该第一指针目录项可记录的共享者的数量最大值。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第六种可能的实现方式中任一种可能的实现方式,在第七种可能的实现方式中,该向量目录项还包括反向指针,用于指向该向量目录项所对应的指针目录项的地址;该处理单元还用于将该第一指针目录项的地址写入该向量目录项的反向指针中。
第三方面,提出了一种多核处理器系统的缓存目录读取方法,该多核处理器系统包括多个处理器核、共享存储空间及目录控制器,该方法包括:当该多个处理器核中的第一处理器核对共享存储空间的第一数据块发起访存请求时,根据该第一处理器核对该第一数据块的访存请求确定该第一数据块在该共享存储空间的指针目录项;如果该指针目录项的向量标记为有效状态,则该目录控制器从该指针目录项的目录共享者列表中获取该第一数据块的共享者信息;或者如果该指针目录项的向量标记为无效状态,则该目录控制器根据该指针目录项的目录共享者列表确定该指针目录项的向量目录项,并从该指针目录项的向量目录项的目录共享者列表中获取该第一数据块的共享者信息;其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
第四方面,提出了一种目录控制器,应用于多核处理器系统,该处理器系统还包括多个处理器核和共享存储空间,该目录控制器包括:确定单元,用于当该多个处理器核中的第一处理器核对共享存储空间的第一数据块发起访存请求时,根据该第一处理器核对该第一数据块的访存请求确定该第一数据块在该共享存储空间的指针目录项;读取单元,用于如果该指针目录项的向量标记为有效状态,则从该指针目录项的目录共享者列表中获取该第一数据块的共享者信息;或者如果该指针目录项的向量标记为无效状态,则根据该指针目录项的目录共享者列表确定该指针目录项的向量目录项,并从该指针目录项的向量目录项的目录共享者列表中获取该第一数据块的共享者信息;其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
本发明实施例中,通过在数据块的共享者数量大于指针目录项的目录共享者列表中可记录的共享者数量最大值时,为数据块分配向量目录项以记录数据块的共享者的对数据块的共享状态,综合考虑和指针目录和向量目录的优势,既降低了目录的存储开销,又能良好的反应数据块的共享状态,在正确表示数据块的共享状态的前提下,一定程度上提高了目录的片上存储空间的利用率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例指针目录项的结构示意图。
图2是本发明实施例多核处理器系统的结构示意图。
图3是本发明实施例缓存目录记录方法的流程图。
图4是本发明实施例指针目录项和向量目录项的结构示意图。
图5是本发明实施例目录控制器的结构示意图。
图6是本发明实施例另一目录控制器的结构示意图。
图7是本发明实施例缓存目录记录方法的流程图。
图8是本发明实施例再一目录控制器的结构示意图。
图9是本发明实施例再一目录控制器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的技术方案,可以应用于各种多核处理器系统中,具体应用于保持多核处理器系统的缓存的共享状态一致性。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。
指针目录项:可包括地址标签和目录共享者列表。其中,地址标签存储数据块的地址,目录共享者列表部分采用位置指针的方式。每个目录项的目录共享者列表部分包含多个指针,每个指针对应一个共享该数据块的处理器核。每个指针包含多个二进制bit位,用于表示该处理器核的地址信息。如图1所示,对于N个处理器核来说,至少需要<Log2N>个bit来表示其地址信息,其中,<Log2N>表示不小于Log2N的最小整数。设每个目录项目录共享者列表部分包含k个指针,该目录项的目录共享者列表长度为k*<Log2N>。
共享者:访问数据块的对象,本发明实施例中,为多核处理器系统中的处理器核。
本发明的方法,根据数据块的共享者数量,采用指针目录项和向量目录项表示数据块的共享状态。如果共享者的数量小于或等于指针目录项所能表示的共享者最大值,则用指针目录项表示;否则,为指针目录项分配一个向量目录项,用向量目录项表示数据块的共享状态。
本发明实施例的方法及目录控制器,适用于多核处理器系统中。多核处理器系统中,可包括多个处理器核及每个处理器核各自的私有内存、目录控制器、片上存储空间及共享存储空间。其中,片上存储空间存储着共享存储空间的目录,该目录用于记录多核处理器系统的处理器核对共享存储空间中数据块的共享状态。图2是本发明实施例多核处理器系统的结构示意图。如图2所示,多核处理器系统可包括n个处理器核(处理器核1...处理器核n),以及每个处理器核的私有内存(私有内存1...私有内存n)。另外,多核处理器系统还可包括共享存储空间,该共享存储空间为n个处理器核所共享。另外,多核处理器系统还可包括片上存储空间,存储着共享存储空间的目录。目录中的目录项记录着处理器核对共享存储空间数据块的共享状态。当一个处理器核访问共享存储空间的一个数据块时,通过目录控制器从片上存储空间的目录中读取该数据块对应的目录项,并通过目录控制器将该数据块被访问后的共享状态写入到该数据块对应的目录项。
图3是本发明实施例多核处理器系统的缓存目录记录方法的流程图。图3的方法由目录控制器执行。其中,该目录控制器应用于多核处理器系统中,该多核处理器系统还可包括多个处理器核和共享存储空间。该方法包括:
301,当多个处理器核中第一处理器核对该多个处理器核的共享存储空间的第一数据块发起读操作请求时,该目录控制器根据该第一处理器核对该第一数据块的读操作请求,确定该第一数据块对应的第一指针目录项。
其中,该第一指针目录项为该第一数据块在该共享存储空间的目录中所对应的指针目录项,该第一指针目录项的地址标签用于标记该第一数据块的地址。
应理解,本发明实施例中,多处理器核的共享存储空间,是指为该多个处理器核所共享的存储空间,在多核处理器系统中,该共享存储空间通常是多个处理器核所共享的缓存空间。
应理解,本发明实施例中,第一数据块是共享存储空间的一个数据块。
应理解,当处理器核对共享存储空间中的第一数据块发起访存请求(包括读操作请求和写操作请求)时,目录控制器可通过多种方式,直接或间接地接收第一处理器核对第一数据块的访存信息。例如,处理器核在访问共享存储空间时,同时将访存信息提供给目录控制器;或者,处理器核在访问共享存储空间时,访存信息发送给共享存储空间的内存控制器(或缓存控制器),内存控制器(或缓存控制器)将处理器核的访存信息提供给目录控制器;或者,在某些应用场景中,目录控制器和共享存储空间的内存控制器(或缓存控制器)是做在一起的,或者说,内存控制器(或缓存控制器)能够完成目录控制器的工作。
302,如果该第一指针目录项的向量标记为有效状态,且该第一处理器核不属于该第一指针目录项的目录共享者列表当前记录的共享者,且该第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则该目录控制器确定该共享存储空间的一个向量目录项作为该第一指针目录项的向量目录项,并将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中。
其中,将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中包括:将该第一指针目录项的向量标记设置为无效状态,并将该第一指针目录项目录共享者列表当前记录的共享者及该第一处理器核,记录到该向量目录项的目录共享者列表中,并用该向量目录项的地址替换该第一指针目录项的目录共享者列表所记录的内容,其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
应理解,本发明实施例中,第一处理器核、第二处理器核、第三处理器核都是多核处理器系统的多个处理器核心中的一个,并没有时间上的先后关系,仅用于区分不同的处理器核。第一指针目录项、第二指针目录项也都为指针目录项,具有相同的数据结构,其区别仅在于内容的不同;类似地,第一向量目录项、第二向量目录项也都为向量目录项,具有相同的数据结构,其区别仅在于内容的不同。
应理解,本发明实施例中,指针目录项可包括地址标签、向量标记和目录共享者列表,向量目录项可包括目录共享者列表。
其中,第一指针目录项的地址标签用于存储第一指针目录项所对应的第一数据块的地址信息;第一指针目录项的向量标记用于表示第一指针目录项的有效性,当第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,具体地,例如,可用0表示第一指针目录项的无效状态,用1表示第一指针目录项的有效状态;第一指针目录项的目录共享者列表在第一指针目录项的向量标记为有效状态时,用于记录该第一数据块的共享者,在第一指针目录项的向量标记为无效状态时,用于记录第一指针目录项的向量目录项的地址。
向量目录项初始内容为空,当其与第一指针目录项关联后,向量目录项的目录共享者列表用于记录该第一指针目录项所对应的第一数据块的共享者。具体地,向量目录项的目录共享者列表可以用向量的形式表示,对于共享该第一数据块的每个处理器核采用1个bit表示,例如1表示该处理器核在共享该第一数据块,0表示该处理器核未共享该第一数据块。向量目录项的目录共享者列表的长度与共享存储空间的处理器核数量有关,如共享内存空间的处理器核的数量为N,则向量目录项的目录共享者列表的最小长度为N。
应理解,该第一指针目录项的目录共享者列表当前记录的共享者,是指第一处理器核对该第一数据块发起读操作请求但尚未进行读操作时该第一数据块的共享者。应理解,第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值后,如果再有该第一指针目录项的目录共享者列表记录的共享者之外的处理器核发起对第一指针目录项对应的第一数据块的读操作请求,第一指针目录项的目录共享者列表将无法完全记录所有的共享者信息。
本发明实施例中,在数据块的共享者数量大于指针目录项的目录共享者列表中可记录的共享者数量最大值时,为数据块分配向量目录项以记录数据块的共享者的对数据块的共享状态,综合考虑和指针目录和向量目录的优势,既降低了目录的存储开销,又能良好的反应数据块的共享状态,在正确表示数据块的共享状态的前提下,一定程度上提高了目录的片上存储空间的利用率。
优选地,本发明实施例中,向量目录项还可包括反向指针,用于指向向量目录项所对应的第一指针目录项的地址。此时,步骤302中,将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中还包括:将第一指针目录项的地址写入第一指针目录项的向量目录项的反向指针中。通过增加反向指针,有利于根据向量目录项反向定位其所对应的指针目录项,提高查找向量目录项所对应的指针目录项的效率。
当然,向量目录项也可不包括反向指针。当需要查找向量目录项所对应的第一指针目录项时,从向量标记为无效状态的指针目录项中,根据目录共享者列表查找第一指针目录项。此时,可为向量标记为无效状态的指针目录项建立关于目录共享者列表的索引。
可选地,作为一个实施例,步骤302中,确定该第一指针目录项的向量目录项具体可实现为:确定第一向量目录项为该第一指针目录项的向量目录项,其中该第一向量目录项为该共享存储空间的向量目录项中的一个未分配的向量目录项。
可选地,作为另一个实施例,步骤302中,确定该第一指针目录项的向量目录项具体可实现为:确定第二向量目录项为该第一指针目录项的向量目录项,其中该第二向量目录项为该共享存储空间的向量目录项中一个已分配的向量目录项。在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之前,该方法还包括:将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中,其中,该第二指针目录项为该第二向量目录项在确定为该第一指针目录项的向量目录项之前所对应的指针目录项。
本发明实施例中,指针目录项还可包括广播标记,当该第一指针目录项的广播标记为有效状态时表示该第一指针目录项所对应的第一数据块为该多核处理器系统的所有处理器核所共享,当该广播标记为无效状态时表示该第一指针目录项所对应的第一数据块为非该多核处理器系统的所有处理器核所共享。例如,当广播标记为0时表示第一指针目录项所对应的第一数据块非所有处理器核共享,当广播标记为1时表示第一指针目录项所对应的第一数据块被所有处理器核共享。
此时,将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中具体可实现为:如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量大于预定阈值,则将该第二指针目录项的广播标记设置为有效状态,并将该第二指针目录项的向量标记设置为有效状态;或者如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量小于预定阈值,则从该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者中选择不多于M个的共享者作为该第二指针目录项的共享者,并将该第二指针目录项的广播标记设置为无效状态,其中,M为该指针目录项可记录的共享者的数量最大值。另外,预定阈值的取值可介于M和N之间,N表示共享存储空间的所有处理器核数量。例如,不妨假设N取值为8,M取值为2,则该预定阈值可取值为3、4、5、6、7等数值。
可选地,作为另一个实施例,在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该方法还包括:当该多个处理器核中第二处理器核对该第一数据块发起写操作请求时,该目录控制器根据该第二处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;如果该第一指针目录项当前的向量标记为无效状态,则释放该第一指针目录项的向量目录项的资源,并将该第一指针目录项的向量标记设置为有效状态,并该第一指针目录项的目录共享者列表由记录该第一指针目录项的向量目录项的地址改为记录该第二处理器核。
不妨假设指针目录项和向量目录项的结构示意图可如图4所示,其中,指针目录项可表示的共享者数量为2个,V表示针目录项的向量标记,V取值为1时为有效状态,取值为0时为无效状态,B表示针目录项的广播标记,B取值为1时为有效状态,取值为0时为无效状态。本发明实施例的具体实现方法如下:当第二处理器核对第一数据块的写操作,且第一数据块对应的第一指针目录项的向量标记V和广播标记V满足V=0且B=0时,此时,目录控制器可回收第一指针目录项的向量目录项资源,并将第二处理器核的地址存储在第一指针目录项的目录共享者列表中,并将V置为1,B置为0。
当然,如果指针目录项不包括广播标记B,本发明实施例的具体实现方法如下:当第二处理器核对第一数据块的写操作,且第一数据块对应的第一指针目录项的向量标记V满足V=0时,此时,目录控制器可回收第一指针目录项的向量目录项资源,并将第二处理器核的地址存储在第一指针目录项的目录共享者列表中,并将V置为1。
可选地,作为再一个实施例,在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该方法还包括:当该多个处理器核中第三处理器核对该第一数据块发起写操作请求时,该目录控制器根据该第三处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;如果该第一指针目录项当前的向量标记为无效状态,且该第三处理器核不属于该第一指针目录项的向量目录项记录的共享者,则将该第三处理器核添加到该第一指针目录项的向量目录项记录的共享者中。
同样以图4为例,本发明实施例的具体实现方法如下:当第三处理器核对该第一数据块进行读操作,如果V=0,且第一指针目录项的向量目录项记录的共享者不包含第三处理器核,则将第三处理器核添加到该第一指针目录项的向量目录项记录的共享者中。具体地,可在该第一指针目录项的向量目录项的目录共享者列表中,将标记第三处理器核共享状态的数据位置为1,表示第三处理器核对第一数据块进行共享。
可选地,作为一个实施例,在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,该方法还包括:当该第一数据块或该第一数据块的目录项被作废时,或者当该第一数据块的共享者数量小于或等于M时,释放该第一指针目录项的向量目录项资源,其中,M为该第一指针目录项可记录的共享者的数量最大值。
另外,本发明实施例的目录控制器,还可执行以下一个或多个方法:
在初始状态,对于所有数据块都分配一个指针目录项,该指针目录项中的地址标签用于标记该数据块的地址。此时,可将指针目录项中的向量标记V置为有效状态,用1表示,广播标记B置为无效状态,用0表示;
当处理器核对共享存储空间中的第一数据块进行写操作时,如果第一数据块的指针目录项的向量标记V为有效状态且广播标记B为无效状态,且不包含共享者,则将该处理器核添加到第一数据块的指针目录项的目录共享者列表中;
当处理器核对共享存储空间中的第一数据块进行写操作时,如果第一数据块的指针目录项的向量标记V为有效状态且广播标记B为无效状态,且第一数据块的指针目录项的目录共享者列表记录的共享者仅有该处理器核,则不对目录进行处理操作;
当处理器核对共享存储空间中的第一数据块进行写操作时,如果第一数据块的指针目录项的向量标记V为有效状态且广播标记B为无效状态,且第一数据块的指针目录项的目录共享者列表记录的共享者不包含该处理器核,则将第一数据块的指针目录项的目录共享者列表的内容修改为该处理器核;
当处理器核对共享存储空间中的第一数据块进行写操作时,如果第一数据块的指针目录项的向量标记V为有效状态且广播标记B为有效状态,则将第一数据块的指针目录项的目录共享者列表的内容修改为该处理器核,并将广播标记B设置为无效状态;
当处理器核对共享存储空间中的第一数据块进行读操作时,如果第一数据块的指针目录项的向量标记V为有效状态且广播标记B为无效状态,且不包含共享者,则将该处理器核添加到第一数据块的指针目录项的目录共享者列表中;
当处理器核对共享存储空间中的第一数据块进行读操作时,如果第一数据块的指针目录项的向量标记V为有效状态且广播标记B为无效状态,且第一数据块的指针目录项的目录共享者列表记录的共享者包含该处理器核,则不对目录进行处理操作;
当处理器核对共享存储空间中的第一数据块进行读操作时,如果第一数据块的指针目录项的向量标记V为有效状态且广播标记B为有效状态,则不对目录进行处理操作。
图5是本发明实施例目录控制器500的结构示意图。目录控制器500可应用于多核处理器系统,该处理器系统还包括多个处理器核和共享存储空间。目录控制器500可包括:第一确定单元501,第二确定单元502和处理单元503。
第一确定单元501,用于当该多个处理器核中的第一处理器核对该共享存储空间的第一数据块发起读操作请求时,根据该第一处理器核对该第一数据块的读操作请求,确定该第一数据块对应的第一指针目录项。
其中,该第一指针目录项为该第一数据块在该共享存储空间的目录中所对应的指针目录项,该第一指针目录项的地址标签用于标记该第一数据块的地址。
应理解,本发明实施例中,多处理器核的共享存储空间,是指为该多个处理器核所共享的存储空间,在多核处理器系统中,该共享存储空间通常是多个处理器核所共享的缓存空间。
应理解,本发明实施例中,第一数据块是共享存储空间的一个数据块。
应理解,当处理器核对共享存储空间中的第一数据块发起访存请求(包括读操作请求和写操作请求)时,目录控制器500可通过多种方式,直接或间接地接收第一处理器核对第一数据块的访存信息。例如,处理器核在访问共享存储空间时,同时将访存信息提供给目录控制器500;或者,处理器核在访问共享存储空间时,访存信息发送给共享存储空间的内存控制器(或缓存控制器),内存控制器(或缓存控制器)将处理器核的访存信息提供给目录控制器500;或者,在某些应用场景中,目录控制器500和共享存储空间的内存控制器(或缓存控制器)是做在一起的,或者说,内存控制器(或缓存控制器)能够完成目录控制器500的工作。
第二确定单元502,用于如果该第一指针目录项的向量标记为有效状态,且该第一处理器核不属于该第一指针目录项的目录共享者列表当前记录的共享者,且该第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则确定该共享存储空间的一个向量目录项作为该第一指针目录项的向量目录项。
处理单元503,用于将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中。
具体地,处理单元503可用于:将该第一指针目录项的向量标记设置为无效状态,并将该第一指针目录项目录共享者列表当前记录的共享者及该第一处理器核,记录到该向量目录项的目录共享者列表中,并用该向量目录项的地址替换该第一指针目录项的目录共享者列表所记录的内容。
其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
应理解,本发明实施例中,指针目录项可包括地址标签、向量标记和目录共享者列表,向量目录项可包括目录共享者列表。
其中,第一指针目录项的地址标签用于存储第一指针目录项所对应的第一数据块的地址信息;第一指针目录项的向量标记用于表示第一指针目录项的有效性,当第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,具体地,例如,可用0表示第一指针目录项的无效状态,用1表示第一指针目录项的有效状态;第一指针目录项的目录共享者列表在第一指针目录项的向量标记为有效状态时,用于记录该第一数据块的共享者,在第一指针目录项的向量标记为无效状态时,用于记录第一指针目录项的向量目录项的地址。
向量目录项初始内容为空,当其与第一指针目录项关联后,向量目录项的目录共享者列表用于记录该第一指针目录项所对应的第一数据块的共享者。具体地,向量目录项的目录共享者列表可以用向量的形式表示,对于共享该第一数据块的每个处理器核采用1个bit表示,例如1表示该处理器核在共享该第一数据块,0表示该处理器核未共享该第一数据块。向量目录项的目录共享者列表的长度与共享存储空间的处理器核数量有关,如共享内存空间的处理器核的数量为N,则向量目录项的目录共享者列表的最小长度为N。
应理解,第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值后,如果再有该第一指针目录项的目录共享者列表记录的共享者之外的处理器核发起对第一指针目录项对应的第一数据块的读操作请求,第一指针目录项的目录共享者列表将无法完全记录所有的共享者信息。
本发明实施例中,目录控制器500在数据块的共享者数量大于指针目录项的目录共享者列表中可记录的共享者数量最大值时,为数据块分配向量目录项以记录数据块的共享者的对数据块的共享状态,综合考虑和指针目录和向量目录的优势,既降低了目录的存储开销,又能良好的反应数据块的共享状态,在正确表示数据块的共享状态的前提下,一定程度上提高了目录的片上存储空间的利用率。
优选地,本发明实施例中,向量目录项还可包括反向指针,用于指向向量目录项所对应的指针目录项的地址。此时,处理单元503还用于将第一指针目录项的地址写入第一指针目录项的向量目录项的反向指针中。通过增加反向指针,有利于根据向量目录项反向定位其所对应的指针目录项,提高查找向量目录项所对应的指针目录项的效率。
可选地,作为一个实施例,第二确定单元502具体用于确定第一向量目录项为该第一指针目录项的向量目录项,其中该第一向量目录项为该共享存储空间的向量目录项中的一个未分配的向量目录项。
可选地,作为另一个实施例,第二确定单元502具体用于确定第二向量目录项为该第一指针目录项的向量目录项,其中该第二向量目录项为该共享存储空间的向量目录项中一个已分配的向量目录项。处理单元503还用于在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之前,将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中,其中,该第二指针目录项为该第二向量目录项在确定为该第一指针目录项的向量目录项之前所对应的指针目录项。
本发明实施例中,指针目录项还可包括广播标记,当该第一指针目录项的广播标记为有效状态时表示该第一指针目录项所对应的第一数据块为该多核处理器系统的所有处理器核所共享,当该广播标记为无效状态时表示该第一指针目录项所对应的第一数据块为非该多核处理器系统的所有处理器核所共享。例如,当广播标记为0时表示第一指针目录项所对应的第一数据块非所有处理器核共享,当广播标记为1时表示第一指针目录项所对应的第一数据块被所有处理器核共享。
此时,在用于将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项的过程中,处理单元503具体用于:如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量大于预定阈值,则将该第二指针目录项的广播标记设置为有效状态,并将该第二指针目录项的向量标记设置为有效状态;或者如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量小于预定阈值,则从该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者中选择不多于M个的共享者作为该第二指针目录项的共享者,并将该第二指针目录项的广播标记设置为无效状态,其中,M为该指针目录项可记录的共享者的数量最大值。
可选地,作为另一个实施例,在处理单元503将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,第一确定单元501还用于当该多个处理器核中第二处理器核对该第一数据块发起写操作请求时,根据该第二处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;处理单元503还用于如果该第一指针目录项当前的向量标记为无效状态,则释放该第一指针目录项的向量目录项的资源,并将该第一指针目录项的向量标记设置为有效状态,并该第一指针目录项的目录共享者列表由记录该第一指针目录项的向量目录项的地址改为记录该第二处理器核。
可选地,作为再一个实施例,在处理单元503将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,第一确定单元501还用于当该多个处理器核中第三处理器核对该第一数据块发起写操作请求时,根据该第三处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;处理单元503还用于如果该第一指针目录项当前的向量标记为无效状态,且该第三处理器核不属于该第一指针目录项的向量目录项记录的共享者,则将该第三处理器核添加到该第一指针目录项的向量目录项记录的共享者中。
可选地,作为再一个实施例,在处理单元503将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,处理单元503还用于当该第一数据块或该第一数据块的目录项被作废时,或者当该第一数据块的共享者数量小于或等于M时,释放该第一指针目录项的向量目录项的资源,其中,M为该第一指针目录项可记录的共享者的数量最大值。
目录控制器500还可执行图3的方法,并实现目录控制器在图3所示实施例的功能,本发明实施例在此不再赘述。
图6是本发明实施例目录控制器600的结构示意图。目录控制器600可应用于多核处理器系统,该处理器系统还包括多个处理器核和共享存储空间。目录控制器600可包括处理器602、存储器603和总线604。处理器602和存储器603通过总线604系统相互连接。总线604可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器603,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器603可以包括只读存储器和随机存取存储器,并向处理器602提供指令和数据。存储器603可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器602,执行存储器603所存放的程序,并具体用于执行以下操作:
当该多个处理器核中的第一处理器核对该共享存储空间的第一数据块发起读操作请求时,根据该第一处理器核对该第一数据块的读操作请求,确定该第一数据块对应的第一指针目录项,其中,该第一指针目录项为该第一数据块在该共享存储空间的目录中所对应的指针目录项,该第一指针目录项的地址标签用于标记该第一数据块的地址;
如果该第一指针目录项的向量标记为有效状态,且该第一处理器核不属于该第一指针目录项的目录共享者列表当前记录的共享者,且该第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则确定该共享存储空间的一个向量目录项作为该第一指针目录项的向量目录项,并将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中。
其中,在用于将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项的过程中,处理器602具体用于:
将该第一指针目录项的向量标记设置为无效状态,并将该第一指针目录项目录共享者列表当前记录的共享者及该第一处理器核,记录到该向量目录项的目录共享者列表中,并用该向量目录项的地址替换该第一指针目录项的目录共享者列表所记录的内容,其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
应理解,本发明实施例中,多处理器核的共享存储空间,是指为该多个处理器核所共享的存储空间,在多核处理器系统中,该共享存储空间通常是多个处理器核所共享的缓存空间。
应理解,本发明实施例中,第一数据块是共享存储空间的一个数据块。
应理解,当处理器核对共享存储空间中的第一数据块发起访存请求(包括读操作请求和写操作请求)时,目录控制器600可通过多种方式,直接或间接地接收第一处理器核对第一数据块的访存信息。例如,处理器核在访问共享存储空间时,同时将访存信息提供给目录控制器600;或者,处理器核在访问共享存储空间时,访存信息发送给共享存储空间的内存控制器(或缓存控制器),内存控制器(或缓存控制器)将处理器核的访存信息提供给目录控制器600;或者,在某些应用场景中,目录控制器600和共享存储空间的内存控制器(或缓存控制器)是做在一起的,或者说,内存控制器(或缓存控制器)能够完成目录控制器600的工作。
应理解,本发明实施例中,指针目录项可包括地址标签、向量标记和目录共享者列表,向量目录项可包括目录共享者列表。
其中,第一指针目录项的地址标签用于存储第一指针目录项所对应的第一数据块的地址信息;第一指针目录项的向量标记用于表示第一指针目录项的有效性,当第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,具体地,例如,可用0表示第一指针目录项的无效状态,用1表示第一指针目录项的有效状态;第一指针目录项的目录共享者列表在第一指针目录项的向量标记为有效状态时,用于记录该第一数据块的共享者,在第一指针目录项的向量标记为无效状态时,用于记录第一指针目录项的向量目录项的地址。
向量目录项初始内容为空,当其与第一指针目录项关联后,向量目录项的目录共享者列表用于记录该第一指针目录项所对应的第一数据块的共享者。具体地,向量目录项的目录共享者列表可以用向量的形式表示,对于共享该第一数据块的每个处理器核采用1个bit表示,例如1表示该处理器核在共享该第一数据块,0表示该处理器核未共享该第一数据块。向量目录项的目录共享者列表的长度与共享存储空间的处理器核数量有关,如共享内存空间的处理器核的数量为N,则向量目录项的目录共享者列表的最小长度为N。
应理解,第一指针目录项的目录共享者列表当前记录的共享者数量达到该第一指针目录项的目录共享者列表能够记录的共享者数量的最大值后,如果再有该第一指针目录项的目录共享者列表记录的共享者之外的处理器核发起对第一指针目录项对应的第一数据块的读操作请求,第一指针目录项的目录共享者列表将无法完全记录所有的共享者信息。
上述如本发明图3所示实施例揭示的目录控制器执行的方法可以应用于处理器602中,或者由处理器602实现。处理器602可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器602中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器602可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器603,处理器602读取存储器603中的信息,结合其硬件完成上述方法的步骤。
本发明实施例中,目录控制器600在数据块的共享者数量大于指针目录项的目录共享者列表中可记录的共享者数量最大值时,为数据块分配向量目录项以记录数据块的共享者的对数据块的共享状态,综合考虑和指针目录和向量目录的优势,既降低了目录的存储开销,又能良好的反应数据块的共享状态,在正确表示数据块的共享状态的前提下,一定程度上提高了目录的片上存储空间的利用率。
优选地,本发明实施例中,向量目录项还可包括反向指针,用于指向向量目录项所对应的指针目录项的地址。此时,在用于将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项的过程中,处理器602还用于将第一指针目录项的地址写入第一指针目录项的向量目录项的反向指针中。通过增加反向指针,有利于根据向量目录项反向定位其所对应的指针目录项,提高查找向量目录项所对应的指针目录项的效率。
可选地,作为一个实施例,在用于确定该共享存储空间的一个向量目录项作为该第一指针目录项的向量目录项的过程中,处理器602具体用于确定第一向量目录项为该第一指针目录项的向量目录项,其中该第一向量目录项为该共享存储空间的向量目录项中的一个未分配的向量目录项。
可选地,作为另一个实施例,在用于确定该共享存储空间的一个向量目录项作为该第一指针目录项的向量目录项的过程中,处理器602具体用于确定第二向量目录项为该第一指针目录项的向量目录项,其中该第二向量目录项为该共享存储空间的向量目录项中一个已分配的向量目录项。此时,处理器602还用于在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之前,将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中,其中,该第二指针目录项为该第二向量目录项在确定为该第一指针目录项的向量目录项之前所对应的指针目录项。
本发明实施例中,指针目录项还可包括广播标记,当该第一指针目录项的广播标记为有效状态时表示该第一指针目录项所对应的第一数据块为该多核处理器系统的所有处理器核所共享,当该广播标记为无效状态时表示该第一指针目录项所对应的第一数据块为非该多核处理器系统的所有处理器核所共享。例如,当广播标记为0时表示第一指针目录项所对应的第一数据块非所有处理器核共享,当广播标记为1时表示第一指针目录项所对应的第一数据块被所有处理器核共享。
此时,在用于将该第二向量目录项在确定为该第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项的过程中,处理器502具体用于:如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量大于预定阈值,则将该第二指针目录项的广播标记设置为有效状态,并将该第二指针目录项的向量标记设置为有效状态;或者如果该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者数量小于预定阈值,则从该第二向量目录项在确定为该第一指针目录项的向量目录项之前的共享者中选择不多于M个的共享者作为该第二指针目录项的共享者,并将该第二指针目录项的广播标记设置为无效状态,其中,M为该指针目录项可记录的共享者的数量最大值。
可选地,作为另一个实施例,在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,处理器602还用于:当该多个处理器核中第二处理器核对该第一数据块发起写操作请求时,根据该第二处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;如果该第一指针目录项当前的向量标记为无效状态,则释放该第一指针目录项的向量目录项的资源,并将该第一指针目录项的向量标记设置为有效状态,并该第一指针目录项的目录共享者列表由记录该第一指针目录项的向量目录项的地址改为记录该第二处理器核。
可选地,作为再一个实施例,在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,处理器602还用于:当该多个处理器核中第三处理器核对该第一数据块发起写操作请求时,根据该第三处理器核对该第一数据块的写操作请求,确定该第一数据块对应的第一指针目录项;还用于如果该第一指针目录项当前的向量标记为无效状态,且该第三处理器核不属于该第一指针目录项的向量目录项记录的共享者,则将该第三处理器核添加到该第一指针目录项的向量目录项记录的共享者中。
可选地,作为再一个实施例,在将该第一数据块的当前的共享者记录到该第一指针目录项的向量目录项中之后,处理器602还用于:当该第一数据块或该第一数据块的目录项被作废时,或者当该第一数据块的共享者数量小于或等于M时,释放该第一指针目录项的向量目录项的资源,其中,M为该第一指针目录项可记录的共享者的数量最大值。
目录控制器600还可执行图3的方法,并实现目录控制器在图3所示实施例的功能,本发明实施例在此不再赘述。
图7是本发明实施例多核处理器系统的缓存目录读取方法的流程图。图7的方法由目录控制器执行。其中,该目录控制器应用于多核处理器系统中,该多核处理器系统还可包括多个处理器核和共享存储空间。该方法包括:
701,当该多个处理器核中的第一处理器核对共享存储空间的第一数据块发起访存请求时,根据该第一处理器核对该第一数据块的访存请求确定该第一数据块在该共享存储空间的指针目录项;
702,如果该指针目录项的向量标记为有效状态,则该目录控制器从该指针目录项的目录共享者列表中获取该第一数据块的共享者信息;或者,如果该指针目录项的向量标记为无效状态,则该目录控制器根据该指针目录项的目录共享者列表确定该指针目录项的向量目录项,并从该指针目录项的向量目录项的目录共享者列表中获取该第一数据块的共享者信息。
其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
本发明实施例中,通过根据指针目录项的向量标记确定读取数据块的共享者的来源,进而获取数据块的共享者信息,使得用指针目录项和向量目录项混合记录数据块的共享者具备实现的可能。
图8是本发明实施例目录控制器800的结构示意图。目录控制器800可应用于多核处理器系统,该处理器系统还包括多个处理器核和共享存储空间。目录控制器800可包括确定单元801和读取单元802。
确定单元801,用于当该多个处理器核中的第一处理器核对共享存储空间的第一数据块发起访存请求时,根据该第一处理器核对该第一数据块的访存请求确定该第一数据块在该共享存储空间的指针目录项。
读取单元802,用于如果该指针目录项的向量标记为有效状态,则从该指针目录项的目录共享者列表中获取该第一数据块的共享者信息;或者如果该指针目录项的向量标记为无效状态,则根据该指针目录项的目录共享者列表确定该指针目录项的向量目录项,并从该指针目录项的向量目录项的目录共享者列表中获取该第一数据块的共享者信息。
其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
本发明实施例中,目录控制器800通过根据指针目录项的向量标记确定读取数据块的共享者的来源,进而获取数据块的共享者信息,使得用指针目录项和向量目录项混合记录数据块的共享者具备实现的可能。
图9是本发明实施例目录控制器900的结构示意图。目录控制器900可应用于多核处理器系统,该处理器系统还包括多个处理器核和共享存储空间。目录控制器900可包括处理器902、存储器903和总线904。处理器902和存储器903通过总线904系统相互连接。总线904可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器903,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器903可以包括只读存储器和随机存取存储器,并向处理器902提供指令和数据。存储器903可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器902,执行存储器903所存放的程序,并具体用于执行以下操作:
当该多个处理器核中的第一处理器核对共享存储空间的第一数据块发起访存请求时,根据该第一处理器核对该第一数据块的访存请求确定该第一数据块在该共享存储空间的指针目录项;
如果该指针目录项的向量标记为有效状态,则从该指针目录项的目录共享者列表中获取该第一数据块的共享者信息;或者如果该指针目录项的向量标记为无效状态,则根据该指针目录项的目录共享者列表确定该指针目录项的向量目录项,并从该指针目录项的向量目录项的目录共享者列表中获取该第一数据块的共享者信息;
其中,当该第一指针目录项的向量标记为有效状态时该第一数据块的共享者记录在该第一指针目录项的目录共享者列表中,当该第一指针目录项的向量标记为无效状态时该第一数据块的共享者记录在该第一指针目录项的向量目录项的目录共享者列表中,该第一指针目录项的目录共享者列表用于记录该第一指针目录项的向量目录项的地址信息。
上述如本发明图7所示实施例揭示的目录控制器执行的方法可以应用于处理器902中,或者由处理器902实现。处理器902可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器902可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器903,处理器902读取存储器903中的信息,结合其硬件完成上述方法的步骤。
本发明实施例中,目录控制器900通过根据指针目录项的向量标记确定读取数据块的共享者的来源,进而获取数据块的共享者信息,使得用指针目录项和向量目录项混合记录数据块的共享者具备实现的可能。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种多核处理器系统的缓存目录记录方法,其特征在于,所述多核处理器系统包括多个处理器核、共享存储空间及目录控制器,所述方法包括:
当所述多个处理器核中的第一处理器核对所述共享存储空间的第一数据块发起读操作请求时,所述目录控制器根据所述第一处理器核对所述第一数据块的读操作请求,确定所述第一数据块对应的第一指针目录项,其中,所述第一指针目录项为所述第一数据块在所述共享存储空间的目录中所对应的指针目录项,所述第一指针目录项的地址标签用于标记所述第一数据块的地址;
如果所述第一指针目录项的向量标记为有效状态,且所述第一处理器核不属于所述第一指针目录项的目录共享者列表当前记录的共享者,且所述第一指针目录项的目录共享者列表当前记录的共享者数量达到所述第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则所述目录控制器确定所述共享存储空间的一个向量目录项作为所述第一指针目录项的向量目录项,并将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中;
其中,所述将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中包括:
将所述第一指针目录项的向量标记设置为无效状态,并将所述第一指针目录项目录共享者列表当前记录的共享者及所述第一处理器核,记录到所述向量目录项的目录共享者列表中,并用所述向量目录项的地址替换所述第一指针目录项的目录共享者列表所记录的内容,其中,当所述第一指针目录项的向量标记为有效状态时所述第一数据块的共享者记录在所述第一指针目录项的目录共享者列表中,当所述第一指针目录项的向量标记为无效状态时所述第一数据块的共享者记录在所述第一指针目录项的向量目录项的目录共享者列表中,所述第一指针目录项的目录共享者列表用于记录所述第一指针目录项的向量目录项的地址信息。
2.如权利要求1所述的方法,其特征在于,所述确定所述第一指针目录项的向量目录项包括:确定第一向量目录项为所述第一指针目录项的向量目录项,其中所述第一向量目录项为所述共享存储空间的向量目录项中的一个未分配的向量目录项。
3.如权利要求1所述的方法,其特征在于,
所述确定所述第一指针目录项的向量目录项包括:确定第二向量目录项为所述第一指针目录项的向量目录项,其中所述第二向量目录项为所述共享存储空间的向量目录项中一个已分配的向量目录项;
在所述将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之前,所述方法还包括:
将所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中,其中,所述第二指针目录项为所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前所对应的指针目录项。
4.如权利要求3所述的方法,其特征在于,所述指针目录项还包括广播标记,当所述广播标记为有效状态时表示所述指针目录项所对应的第一数据块为所述多核处理器系统的所有处理器核所共享,当所述广播标记为无效状态时表示所述指针目录项所对应的第一数据块为非所述多核处理器系统的所有处理器核所共享;
所述将所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中包括:
如果所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前的共享者数量大于预定阈值,则将所述第二指针目录项的广播标记设置为有效状态,并将所述第二指针目录项的向量标记设置为有效状态;或者如果所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前的共享者数量小于预定阈值,则从所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前的共享者中选择不多于M个的共享者作为所述第二指针目录项的共享者,并将所述第二指针目录项的广播标记设置为无效状态,其中,M为所述指针目录项可记录的共享者的数量最大值。
5.如权利要求1至4任一项所述的方法,其特征在于,在所述将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之后,所述方法还包括:
当所述多个处理器核中第二处理器核对所述第一数据块发起写操作请求时,所述目录控制器根据所述第二处理器核对所述第一数据块的写操作请求,确定所述第一数据块对应的第一指针目录项;
如果所述第一指针目录项当前的向量标记为无效状态,则释放所述第一指针目录项的向量目录项的资源,并将所述第一指针目录项的向量标记设置为有效状态,并所述第一指针目录项的目录共享者列表由记录所述第一指针目录项的向量目录项的地址改为记录所述第二处理器核。
6.如权利要求1至4任一项所述的方法,其特征在于,在所述将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之后,所述方法还包括:
当所述多个处理器核中第三处理器核对所述第一数据块发起写操作请求时,所述目录控制器根据所述第三处理器核对所述第一数据块的写操作请求,确定所述第一数据块对应的第一指针目录项;
如果所述第一指针目录项当前的向量标记为无效状态,且所述第三处理器核不属于所述第一指针目录项的向量目录项记录的共享者,则将所述第三处理器核添加到所述第一指针目录项的向量目录项记录的共享者中。
7.如权利要求1至4任一项所述的方法,其特征在于,在所述将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之后,所述方法还包括:
当所述第一数据块或所述第一数据块的目录项被作废时,或者当所述第一数据块的共享者数量小于或等于M时,释放所述第一指针目录项的向量目录项的资源,其中,M为所述第一指针目录项可记录的共享者的数量最大值。
8.如权利要求1至4任一项所述的方法,其特征在于,所述向量目录项还包括反向指针,用于指向所述向量目录项所对应的指针目录项的地址;
所述将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中还包括:
将所述第一指针目录项的地址写入所述向量目录项的反向指针中。
9.一种多核处理器系统的缓存目录读取方法,其特征在于,所述多核处理器系统包括多个处理器核、共享存储空间及目录控制器,所述方法包括:
当所述多个处理器核中的第一处理器核对所述共享存储空间的第一数据块发起访存请求时,所述目录控制器根据所述第一处理器核对所述第一数据块的访存请求确定所述第一数据块在所述共享存储空间的指针目录项;
如果所述指针目录项的向量标记为有效状态,则所述目录控制器从所述指针目录项的目录共享者列表中获取所述第一数据块的共享者信息;或者
如果所述指针目录项的向量标记为无效状态,则所述目录控制器根据所述指针目录项的目录共享者列表确定所述指针目录项的向量目录项,并从所述指针目录项的向量目录项的目录共享者列表中获取所述第一数据块的共享者信息;
其中,当所述指针目录项的向量标记为有效状态时所述第一数据块的共享者记录在所述指针目录项的目录共享者列表中,当所述指针目录项的向量标记为无效状态时所述第一数据块的共享者记录在所述指针目录项的向量目录项的目录共享者列表中,所述指针目录项的目录共享者列表用于记录所述指针目录项的向量目录项的地址信息。
10.一种目录控制器,其特征在于,应用于多核处理器系统,所述处理器系统还包括多个处理器核和共享存储空间,所述目录控制器包括:
第一确定单元,用于当所述多个处理器核中的第一处理器核对所述共享存储空间的第一数据块发起读操作请求时,根据所述第一处理器核对所述第一数据块的读操作请求,确定所述第一数据块对应的第一指针目录项,其中,所述第一指针目录项为所述第一数据块在所述共享存储空间的目录中所对应的指针目录项,所述第一指针目录项的地址标签用于标记所述第一数据块的地址;
第二确定单元,用于如果所述第一指针目录项的向量标记为有效状态,且所述第一处理器核不属于所述第一指针目录项的目录共享者列表当前记录的共享者,且所述第一指针目录项的目录共享者列表当前记录的共享者数量达到所述第一指针目录项的目录共享者列表能够记录的共享者数量的最大值,则确定所述共享存储空间的一个向量目录项作为所述第一指针目录项的向量目录项;
处理单元,用于将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中;
其中,所述处理单元具体用于:
将所述第一指针目录项的向量标记设置为无效状态,并将所述第一指针目录项目录共享者列表当前记录的共享者及所述第一处理器核,记录到所述向量目录项的目录共享者列表中,并用所述向量目录项的地址替换所述第一指针目录项的目录共享者列表所记录的内容,其中,当所述第一指针目录项的向量标记为有效状态时所述第一数据块的共享者记录在所述第一指针目录项的目录共享者列表中,当所述第一指针目录项的向量标记为无效状态时所述第一数据块的共享者记录在所述第一指针目录项的向量目录项的目录共享者列表中,所述第一指针目录项的目录共享者列表用于记录所述第一指针目录项的向量目录项的地址信息。
11.如权利要求10所述的目录控制器,其特征在于,所述第二确定单元具体用于:确定第一向量目录项为所述第一指针目录项的向量目录项,其中所述第一向量目录项为所述共享存储空间的向量目录项中的一个未分配的向量目录项。
12.如权利要求10所述的目录控制器,其特征在于,
所述第二确定单元具体用于:确定第二向量目录项为所述第一指针目录项的向量目录项,其中所述第二向量目录项为所述共享存储空间的向量目录项中一个已分配的向量目录项;
在所述处理单元将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之前,所述处理单元还用于:
将所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项中,其中,所述第二指针目录项为所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前所对应的指针目录项。
13.如权利要求12所述的目录控制器,其特征在于,所述指针目录项还包括广播标记,当所述广播标记为有效状态时表示所述指针目录项所对应的第一数据块为所述多核处理器系统的所有处理器核所共享,当所述广播标记为无效状态时表示所述指针目录项所对应的第一数据块为非所述多核处理器系统的所有处理器核所共享;
在用于将所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前所记录的共享者记录到第二指针目录项的过程中,所述处理单元具体用于:
如果所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前的共享者数量大于预定阈值,则将所述第二指针目录项的广播标记设置为有效状态,并将所述第二指针目录项的向量标记设置为有效状态;或者如果所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前的共享者数量小于预定阈值,则从所述第二向量目录项在确定为所述第一指针目录项的向量目录项之前的共享者中选择不多于M个的共享者作为所述第二指针目录项的共享者,并将所述第二指针目录项的广播标记设置为无效状态,其中,M为所述指针目录项可记录的共享者的数量最大值。
14.如权利要求10至13任一项所述的目录控制器,其特征在于,在所述处理单元将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之后,
所述第一确定单元还用于当所述多个处理器核中第二处理器核对所述第一数据块发起写操作请求时,根据所述第二处理器核对所述第一数据块的写操作请求,确定所述第一数据块对应的第一指针目录项;
所述处理单元还用于如果所述第一指针目录项当前的向量标记为无效状态,则释放所述第一指针目录项的向量目录项的资源,并将所述第一指针目录项的向量标记设置为有效状态,并所述第一指针目录项的目录共享者列表由记录所述第一指针目录项的向量目录项的地址改为记录所述第二处理器核。
15.如权利要求10至13任一项所述的目录控制器,其特征在于,在所述处理单元将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之后,
所述第一确定单元还用于当所述多个处理器核中第三处理器核对所述第一数据块发起写操作请求时,根据所述第三处理器核对所述第一数据块的写操作请求,确定所述第一数据块对应的第一指针目录项;
所述处理单元还用于如果所述第一指针目录项当前的向量标记为无效状态,且所述第三处理器核不属于所述第一指针目录项的向量目录项记录的共享者,则将所述第三处理器核添加到所述第一指针目录项的向量目录项记录的共享者中。
16.如权利要求10至13任一项所述的目录控制器,其特征在于,在所述处理单元将所述第一数据块的当前的共享者记录到所述第一指针目录项的向量目录项中之后,
所述处理单元还用于当所述第一数据块或所述第一数据块的目录项被作废时,或者当所述第一数据块的共享者数量小于或等于M时,释放所述第一指针目录项的向量目录项的资源,其中,M为所述第一指针目录项可记录的共享者的数量最大值。
17.如权利要求10至13任一项所述的目录控制器,其特征在于,所述向量目录项还包括反向指针,用于指向所述向量目录项所对应的指针目录项的地址;
所述处理单元还用于将所述第一指针目录项的地址写入所述向量目录项的反向指针中。
18.一种目录控制器,其特征在于,应用于多核处理器系统,所述处理器系统还包括多个处理器核和共享存储空间,所述目录控制器包括:
确定单元,用于当所述多个处理器核中的第一处理器核对所述共享存储空间的第一数据块发起访存请求时,根据所述第一处理器核对所述第一数据块的访存请求确定所述第一数据块在所述共享存储空间的指针目录项;
读取单元,用于如果所述指针目录项的向量标记为有效状态,则从所述指针目录项的目录共享者列表中获取所述第一数据块的共享者信息;或者如果所述指针目录项的向量标记为无效状态,则根据所述指针目录项的目录共享者列表确定所述指针目录项的向量目录项,并从所述指针目录项的向量目录项的目录共享者列表中获取所述第一数据块的共享者信息;
其中,当所述指针目录项的向量标记为有效状态时所述第一数据块的共享者记录在所述指针目录项的目录共享者列表中,当所述指针目录项的向量标记为无效状态时所述第一数据块的共享者记录在所述指针目录项的向量目录项的目录共享者列表中,所述指针目录项的目录共享者列表用于记录所述指针目录项的向量目录项的地址信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/087786 WO2016049808A1 (zh) | 2014-09-29 | 2014-09-29 | 多核处理器系统的缓存目录处理方法和目录控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105659216A CN105659216A (zh) | 2016-06-08 |
CN105659216B true CN105659216B (zh) | 2019-03-19 |
Family
ID=55629235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480038054.5A Active CN105659216B (zh) | 2014-09-29 | 2014-09-29 | 多核处理器系统的缓存目录处理方法和目录控制器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105659216B (zh) |
WO (1) | WO2016049808A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111788562A (zh) * | 2018-07-11 | 2020-10-16 | 华为技术有限公司 | 原子操作的执行方法及装置 |
WO2023133830A1 (zh) * | 2022-01-14 | 2023-07-20 | 华为技术有限公司 | 共享存储系统、装置和用于无效缓存数据的方法 |
CN116662222A (zh) * | 2022-11-22 | 2023-08-29 | 荣耀终端有限公司 | 缓存管理方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102770853A (zh) * | 2009-12-23 | 2012-11-07 | 思杰系统有限公司 | 用于在多核系统中管理大型高速缓存服务的系统和方法 |
CN103049392A (zh) * | 2012-10-17 | 2013-04-17 | 华为技术有限公司 | 缓存目录的实现方法及装置 |
CN103324584A (zh) * | 2004-12-27 | 2013-09-25 | 英特尔公司 | 用于多核处理器中非一致性高速缓存的系统和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8850125B2 (en) * | 2011-10-25 | 2014-09-30 | Cavium, Inc. | System and method to provide non-coherent access to a coherent memory system |
US9372796B2 (en) * | 2012-10-24 | 2016-06-21 | Texas Instruments Incorporated | Optimum cache access scheme for multi endpoint atomic access in a multicore system |
-
2014
- 2014-09-29 WO PCT/CN2014/087786 patent/WO2016049808A1/zh active Application Filing
- 2014-09-29 CN CN201480038054.5A patent/CN105659216B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324584A (zh) * | 2004-12-27 | 2013-09-25 | 英特尔公司 | 用于多核处理器中非一致性高速缓存的系统和方法 |
CN102770853A (zh) * | 2009-12-23 | 2012-11-07 | 思杰系统有限公司 | 用于在多核系统中管理大型高速缓存服务的系统和方法 |
CN103049392A (zh) * | 2012-10-17 | 2013-04-17 | 华为技术有限公司 | 缓存目录的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016049808A1 (zh) | 2016-04-07 |
CN105659216A (zh) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105283855B (zh) | 一种寻址方法及装置 | |
CN105095116B (zh) | 缓存替换的方法、缓存控制器和处理器 | |
TWI262397B (en) | Method and multiprocessor computer apparatus for controlling access to a shared resource using a task synchronization mechanism | |
CN104133780B (zh) | 一种跨页预取方法、装置及系统 | |
US10901619B2 (en) | Selecting pages implementing leaf nodes and internal nodes of a data set index for reuse | |
US9152325B2 (en) | Logical and physical block addressing for efficiently storing data | |
CN105677580A (zh) | 访问缓存的方法和装置 | |
CN110275841A (zh) | 访问请求处理方法、装置、计算机设备和存储介质 | |
US20110138102A1 (en) | Data storage management using a distributed cache scheme | |
US9092366B2 (en) | Splitting direct memory access windows | |
CN113641596B (zh) | 缓存管理方法、缓存管理装置、处理器 | |
CN104731635B (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
US9507636B2 (en) | Resource management and allocation using history information stored in application's commit signature log | |
CN105335308B (zh) | 对存储设备的访问信息处理方法和装置、系统 | |
US7484210B2 (en) | Apparatus and method for a generic, extensible and efficient data manager for virtual peripheral component interconnect devices (VPCIDs) | |
CN105659216B (zh) | 多核处理器系统的缓存目录处理方法和目录控制器 | |
CN103970678B (zh) | 目录设计方法及装置 | |
US9104601B2 (en) | Merging direct memory access windows | |
CN110187832A (zh) | 一种数据操作的方法、设备和系统 | |
US20140082293A1 (en) | Store Buffer for Transactional Memory | |
US20170300255A1 (en) | Method and Apparatus for Detecting Transaction Conflict and Computer System | |
CN104252423B (zh) | 基于多内核处理器的一致性处理方法和装置 | |
CN112860506B (zh) | 监控数据的处理方法、装置、系统和存储介质 | |
CN116633900A (zh) | 逻辑地址分配方法、装置、电子设备及存储介质 | |
CN108228333A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210422 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |