一种基于布隆过滤器思想的一致性目录设计方法

文档序号:6632304阅读:155来源:国知局
一种基于布隆过滤器思想的一致性目录设计方法
【专利摘要】本发明公开了一种基于布隆过滤器思想的一致性目录设计方法,属于布隆过滤器【技术领域】,本发明所述的方法使用布隆过滤器思想设计目录项的共享列表,对于具有n个处理器的系统,目录项的共享列表向量压缩为m位,通过多个Hash运算的方式实现N个处理器到M位的共享列表位向量的映射,其中N>M;当directorycache收到某个处理器的请求需要向其它具有目标cache行副本的处理器发送消息时,执行多次hash运算,仅当所有Hash运算结果指示的共享列表的对应位均被置位时,才向对应的处理器发送同步消息。本发明能够显著减小目录中用于记录Cache行共享信息的位向量的长度,降低目录项开销,提升目录空间的利用效率。
【专利说明】一种基于布隆过滤器思想的一致性目录设计方法

【技术领域】
[0001] 本发明涉及一种布隆过滤器【技术领域】,具体地说是一种基于布隆过滤器思想的一 致性目录设计方法。

【背景技术】
[0002] 在多核、多处理器系统中,为了维护不同处理器(核)私有Cache (高速缓冲存储器) 中数据的一致性,需要使用Cache -致性协议。基于目录的Cache -致性由于其良好的扩展 性,在现代大型计算机系统中得到普遍的应用。其基本思想是以目录的形式记录所有高速 缓存行的副本位置以及状态。当某一处理器(核)对某个缓存行进行操作时,根据该行对应 的目录项进行相应的一致性操作。这种片上用于存储高速缓存行状态及副本共享信息的结 构被称为高速缓存目录(directory Cache)(注:以下说明中,除非特别指定,否则目录均指 代高速缓存目录)。Directory cache中的每一项称为一个"目录项",其除了需要记录对应 cache行的标签(tag)、状态外,还需要记录哪些处理器(核)具有该行的副本。高速缓存目 录的一种典型实现方式是全映射目录。在全映射目录中,使用位向量(称为共享列表:Share list)记录位于同一同步域内各个Cache中是否拥有该Cache行的副本。Share list中的 每位对应一个处理器(核),其置为1表示相应的处理器(核)私有Cache具有对应行的副本, 否则没有。当需要给其它处理器(核)发送无效消息时,仅对share list中置为1的对应处 理器(核)发送。
[0003] 由于处理器片上资源极其宝贵,因此必须控制directory Cache的容量。一种典 型的做法是使用有限高速缓存目录。在有限高速缓存目录实现中,每个目录项仅使用特定 数量(记为Q)的位记录数据共享情况,当系统中的数据共享副本数大于Q时,向系统中所有 的处理器(核)广播同步消息。这种做法虽然有助于减小目录项的大小,但是当数据共享副 本较多时,同步消息频繁,系统通信性能不佳。


【发明内容】

[0004] 本发明的技术任务是提供一种能够显著减小目录中用于记录Cache行共享信息 的位向量的长度,降低目录项开销,提升目录空间的利用效率的一种基于布隆过滤器思想 的一致性目录设计方法。
[0005] 本发明的技术任务是按以下方式实现的: 一种基于布隆过滤器思想的一致性目录设计方法,使用布隆过滤器(bloom filter)思 想设计目录项的共享列表(Share List),对于具有n个处理器(核)的系统,目录项的共享 列表向量压缩为m位,通过多个Hash运算的方式实现N个处理器(核)到M位的共享列表 (Share List)位向量的映射,其中N>M ;当directory cache收到某个处理器(核)的请求需 要向其它具有目标cache行副本的处理器(核)发送消息时,执行多次hash运算,仅当所有 Hash运算结果指示的共享列表(Share List)的对应位均被置位时,才向对应的处理器(核) 发送同步消息。
[0006] hash次数随系统规模变化而变化,系统处理器(核)数n与目录项的共享列表向量 长度m应该满足关系:;当n=m时,为全目录共享列表设计方法,一位表示一个处理器(核)。
[0007] 具有n个处理器(核)的系统,为具有单极或多级Cache -致性协议域的计算机系 统。
[0008] 需要给所有包含数据副本的处理器(核)发送消息时,多次Hash运算确定需要发送 消息的处理器(核)集合,该集合包含所有包含数据副本的处理器(核)及所有其它不包含数 据副本但被命中判定方法判定为包含副本的处理器(核);命中判定方法为包含副本的处理 器(核)为多次Hash运算确定处理器(核)是否具有数据的共享副本,仅当所有hash结果都 在共享列表中命中时确定该处理器(核)具有数据共享副本;命中判定方法判定为包含副本 的处理器(核)收到一致性同步消息时,直接返回应答消息。
[0009] 当使用k个Hash函数时,一个m位的共享列表(Share List)位向量最多可映射 个处理器。
[0010] 使用3个hash函数时,6位的位向量最多可映射20个处理器。与全目录实现方式 相比,share list的长度不到1/3。假设处理器(核)数为n,则使用本发明方法的共享列表 的长度m满足条件:,其中k为映射函数个数。满足上述条件的最小m值为,称为"最小可 映射长度"。
[0011] 处理器(核)不包含数据副本但被命中判定方法判定为包含副本,这种情况为伪共 享;当伪共享发生时,向所有被多次Hash运算判定为包含共享副本的处理器(核)发送一致 性同步消息,当不具有数据副本的处理器(核)收到一致性同步消息后,直接返回响应,协议 正确性不受影响。为了减少伪共享情况的发生,在实际使用过程中,可在最小可映射长度基 础上适当增加共享列表位数;为了减小伪共享情况及降低多次Hash运算的时间及空间开 销,在满足的情况下,选择最小的k值。伪共享现象仅存在于当一个以上的处理器(核)具 有数据副本的情况,因此,处于E或者M状态的Cache行不会因为伪共享导致额外的同步消 肩、。
[0012] 多个Hash映射功能的实现使用如下方式的任意一种: (1) 、使用多个运算逻辑单元,每个运算逻辑单元的输入为处理器编号,输出为一位置1 的m位向量或一个指示特定位编号的数字;例如,假设share list为4位,输入为0,要求 映射share list的最低位,则输出可为4位位向量0001,或者0 (指示检查最右边1位); (2) 、使用查找表实现Hash映射,每个处理器(核)对应一个表项,并使用处理器(核)编 号定位表项;例如编号为5的处理器(核)对应第五个表项。每个表项具有与share list相 同的位长度,k个位被置I, k为定义的hash函数个数; (3) 、使用寄存器组实现hash函数,每个寄存器可记录一个或多个处理器(核)对应的映 射结果。与使用逻辑单元实现方式相比,后两种方式可动态更改Hash映射关系,因此更为 灵活。
[0013] 一致性目录同步过程如下: (1) 、初始阶段:在数据块被引用前,Directory Cache中无对应的目录项或对应目录项 的有效位(V位)为0,此时共享列表对应的5位向量为0 ; (2) 、数据读阶段:处理器(核)CO读数据块,返回数据的同时更新对应目录项,将位向量 中其对应的两位(第1及2位)置1 ; (3) 、处理器(核)C4读数据块,返回数据的同时更新对应目录项,将处理器(核)C4对 应的两位(第2及5位)置1,第2位已经为1,将第5位置1 ; (4) 、数据写阶段:处理器(核)C2写数据块,在执行写操作之前,向具有该数据块副本的 处理器发送无效命令,Directory Cache控制器根据Hash运算结果,向对应处理器(核)发 送无效命令;此时共享列表的第1、2、5位被置为1,参照表1的hash运算结果,需要向处理 器(核)CO、C3及C4发送无效消息; (5) 、CO及C4接收到该无效消息后,将本地数据副本无效,返回应答消息;C3并不存在 数据的副本,在收到该无效消息后,其检查本地Cache,发现无对应数据副本后直接返回应 答消息; (6) 、当directory Cache接收到所有无效消息应答后,从相应位置返回数据行给C2, 同时更新对应的目录项。
[0014] 在上述过程中,尽管C3没有数据副本,但是Directory Cache根据Hash运算结 果依然向其发送无效消息,这种现象是由"伪共享"造成的。"伪共享"是由多次Hash映射 引起的,通过改进Hash映射方式及增加共享列表位向量长度可减少"伪共享"现象的发生。 "伪共享"现象的存在可能导致使用本发明的目录设计方法的系统在Cache -致性同步时, 消息数量大于使用全目录的实现方式的系统,但是不会影响协议工作的正确性。现有研究 成果表明,大部分的Cache行的共享副本数有限,因此"伪共享"较少。
[0015] 使用查找表或寄存器组方式实现多次Hash映射能够根据系统中数据的共享情况 灵活修改映射关系,从而减小"伪共享"的存在,提升消息同步效率。例如,假设根据系统拓 扑关系得知⑶、Cl数据共享较多,那么在建立Hash映射关系时,可尽量保证其在共享列表 向量中的映射位不重叠,例如CO对应的映射为00011,Cl对应的映射为01100。
[0016] 本发明的一种基于布隆过滤器思想的一致性目录设计方法具有以下优点:能够 显著减小用于记录数据共享信息的位向量的长度,降低目录项开销,从而使得同样容量的 directory cache能够记录更多的Cache行共享信息,提升了目录空间的利用效率。另一方 面,与有限目录相比,本发明方法几乎不存在广播同步消息导致的消息拥塞问题,对系统通 信性能影响较小。

【专利附图】

【附图说明】
[0017] 下面结合附图对本发明进一步说明。
[0018] 附图1为全映射目录项示意图; 附图2为一种基于布隆过滤器思想的一致性目录设计方法的Cache -致性维护过程示 意图; 附图3为一种基于布隆过滤器思想的一致性目录设计方法的Cache -致性维护过程示 意图。
[0019] 图1中,系统包含n个处理器(核),每个目录项n位指示n个处理器(核)对一个 Cache行的共享情况,其中每一位标识一个处理器(核)是否具有该Cache行的副本,1表示 具有,0表示不具有。
[0020] 图2中,系统具有8个(编号为0-7)位于同一同步域的处理器(核),使用两次Hash 运算将这8个处理器(核)对数据的共享情况映射至5位共享列表向量,处理器(核)编号与 Hash映射结果对应关系见表1。

【具体实施方式】
[0021] 参照说明书附图和具体实施例对本发明的一种基于布隆过滤器思想的一致性目 录设计方法作以下详细地说明。
[0022] 实施例1 : 本发明的一种基于布隆过滤器思想的一致性目录设计方法,使用布隆过滤器(bloom filter)思想设计目录项的共享列表(Share List),对于具有n个处理器(核)的系统,目录 项的共享列表向量压缩为m位,通过多个Hash运算的方式实现N个处理器(核)到M位的共 享列表(Share List)位向量的映射,其中N>M ;当directory cache收到某个处理器(核) 的请求需要向其它具有目标cache行副本的处理器(核)发送消息时,执行多次hash运算, 仅当所有Hash运算结果指示的共享列表(Share List)的对应位均被置位时,才向对应的 处理器(核)发送同步消息。
[0023] hash次数随系统规模变化而变化,系统处理器(核)数n与目录项的共享列表向量 长度m应该满足关系:;当n=m时,为全目录共享列表设计方法,一位表示一个处理器(核)。
[0024] 具有n个处理器(核)的系统,为具有单极或多级Cache -致性协议域的计算机系 统。
[0025] 需要给所有包含数据副本的处理器(核)发送消息时,多次Hash运算确定需要发送 消息的处理器(核)集合,该集合包含所有包含数据副本的处理器(核)及所有其它不包含数 据副本但被命中判定方法判定为包含副本的处理器(核);命中判定方法为包含副本的处理 器(核)为多次Hash运算确定处理器(核)是否具有数据的共享副本,仅当所有hash结果都 在共享列表中命中时确定该处理器(核)具有数据共享副本;命中判定方法判定为包含副本 的处理器(核)收到一致性同步消息时,直接返回应答消息。
[0026] 当使用k个Hash函数时,一个m位的共享列表(Share List)位向量最多可映射 个处理器。
[0027] 本发明提出的一致性目录设计方法与传统的全目录实现方法的主要不同之处在 于使用多次Hash运算判断一个数据副本存在与否。当且仅当所有hash运算的结果对应的 位均为1时才确定处理器具有数据副本。与有限目录相比,本发明方法几乎可避免广播消 息,提升系统通信性能。
[0028] 实施例2 : 本发明的一种基于布隆过滤器思想的一致性目录设计方法,使用布隆过滤器(bloom filter)思想设计目录项的共享列表(Share List),对于具有n个处理器(核)的系统,目录 项的共享列表向量压缩为m位,通过多个Hash运算的方式实现N个处理器(核)到M位的共 享列表(Share List)位向量的映射,其中N>M ;当directory cache收到某个处理器(核) 的请求需要向其它具有目标cache行副本的处理器(核)发送消息时,执行多次hash运算, 仅当所有Hash运算结果指示的共享列表(Share List)的对应位均被置位时,才向对应的 处理器(核)发送同步消息。
[0029] 处理器(核)不包含数据副本但被命中判定方法判定为包含副本,这种情况为伪共 享;当伪共享发生时,向所有被多次Hash运算判定为包含共享副本的处理器(核)发送一致 性同步消息,当不具有数据副本的处理器(核)收到一致性同步消息后,直接返回响应,协议 正确性不受影响。为了减少伪共享情况的发生,在实际使用过程中,可在最小可映射长度基 础上适当增加共享列表位数;为了减小伪共享情况及降低多次Hash运算的时间及空间开 销,在满足的情况下,选择最小的k值。伪共享现象仅存在于当一个以上的处理器(核)具 有数据副本的情况,因此,处于E或者M状态的Cache行不会因为伪共享导致额外的同步消 肩、。
[0030] 多个Hash映射功能的实现使用如下方式的任意一种: (1)、使用多个运算逻辑单元,每个运算逻辑单元的输入为处理器编号,输出为一位置1 的m位向量或一个指示特定位编号的数字;例如,假设share list为4位,输入为0,要求 映射share list的最低位,则输出可为4位位向量0001,或者0 (指示检查最右边1位); (2 )、使用查找表实现Hash映射,每个处理器(核)对应一个表项,并使用处理器(核)编 号定位表项;例如编号为5的处理器(核)对应第五个表项。每个表项具有与share list相 同的位长度,k个位被置I, k为定义的hash函数个数; (3)、使用寄存器组实现hash函数,每个寄存器可记录一个或多个处理器(核)对应的映 射结果。与使用逻辑单元实现方式相比,后两种方式可动态更改Hash映射关系,因此更为 灵活。
[0031] 实施例3: 本发明的一种基于布隆过滤器思想的一致性目录设计方法,使用布隆过滤器(bloom filter)思想设计目录项的共享列表(Share List),对于具有n个处理器(核)的系统,目录 项的共享列表向量压缩为m位,通过多个Hash运算的方式实现N个处理器(核)到M位的共 享列表(Share List)位向量的映射,其中N>M ;当directory cache收到某个处理器(核) 的请求需要向其它具有目标cache行副本的处理器(核)发送消息时,执行多次hash运算, 仅当所有Hash运算结果指示的共享列表(Share List)的对应位均被置位时,才向对应的 处理器(核)发送同步消息。
[0032] 一致性目录同步过程如下: (1) 、初始阶段:在数据块被引用前,Directory Cache中无对应的目录项或对应目录项 的有效位(V位)为0,此时共享列表对应的5位向量为0 (见图3 (1)); (2) 、数据读阶段:处理器(核)CO读数据块,返回数据的同时更新对应目录项,将位向量 中其对应的两位(第1及2位)置1 (如图3 (2)所示); (3) 、处理器(核)C4读数据块,返回数据的同时更新对应目录项,将处理器(核)C4对 应的两位(第2及5位)置1,第2位已经为1,将第5位置1 (如图3 (3)所示); (4) 、数据写阶段:处理器(核)C2写数据块(见图3 (4)),在执行写操作之前,向具有该 数据块副本的处理器发送无效命令,Directory Cache控制器根据Hash运算结果,向对应 处理器(核)发送无效命令;此时共享列表的第1、2、5位被置为1,参照表1的hash运算结 果,需要向处理器(核)CO、C3及C4发送无效消息; (5) 、CO及C4接收到该无效消息后,将本地数据副本无效,返回应答消息;C3并不存在 数据的副本,在收到该无效消息后,其检查本地Cache,发现无对应数据副本后直接返回应 答消息; (6) 、当directory Cache接收到所有无效消息应答后,从相应位置返回数据行给C2, 同时更新对应的目录项(见图3 (5))。

【权利要求】
1. 一种基于布隆过滤器思想的一致性目录设计方法,其特征在于使用布隆过滤器思想 设计目录项的共享列表,对于具有n个处理器的系统,目录项的共享列表向量压缩为m位, 通过多个Hash运算的方式实现N个处理器到M位的共享列表位向量的映射,其中N>M ;当 directory cache收到某个处理器的请求需要向其它具有目标cache行副本的处理器发送 消息时,执行多次hash运算,仅当所有Hash运算结果指示的共享列表的对应位均被置位 时,才向对应的处理器发送同步消息。
2. 根据权利要求1所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于hash次数随系统规模变化而变化,系统处理器数n与目录项的共享列表向量长度m应该 满足关系:;当n=m时,为全目录共享列表设计方法,一位表示一个处理器。
3. 根据权利要求1所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于具有n个处理器的系统,为具有单极或多级Cache -致性协议域的计算机系统。
4. 根据权利要求1所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于需要给所有包含数据副本的处理器发送消息时,多次Hash运算确定需要发送消息的处 理器集合,该集合包含所有包含数据副本的处理器及所有其它不包含数据副本但被命中判 定方法判定为包含副本的处理器;命中判定方法为包含副本的处理器为多次Hash运算确 定处理器是否具有数据的共享副本,仅当所有hash结果都在共享列表中命中时确定该处 理器具有数据共享副本;命中判定方法判定为包含副本的处理器收到一致性同步消息时, 直接返回应答消息。
5. 根据权利要求1所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于当使用k个Hash函数时,一个m位的共享列表位向量最多可映射个处理器。
6. 根据权利要求5所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于使用3个hash函数时,6位的位向量最多可映射20个处理器。
7. 根据权利要求4所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于处理器不包含数据副本但被命中判定方法判定为包含副本,这种情况为伪共享;当伪共 享发生时,向所有被多次Hash运算判定为包含共享副本的处理器发送一致性同步消息,当 不具有数据副本的处理器收到一致性同步消息后,直接返回响应。
8. 根据权利要求1所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于多个Hash映射功能的实现使用如下方式的任意一种: (1) 、使用多个运算逻辑单元,每个运算逻辑单元的输入为处理器编号,输出为一位置1 的m位向量或一个指示特定位编号的数字; (2) 、使用查找表实现Hash映射,每个处理器对应一个表项,并使用处理器编号定位表 项; (3) 、使用寄存器组实现hash函数,每个寄存器可记录一个或多个处理器对应的映射 结果。
9. 根据权利要求1所述的一种基于布隆过滤器思想的一致性目录设计方法,其特征在 于一致性目录同步过程如下: (1) 、初始阶段:在数据块被引用前,Directory Cache中无对应的目录项或对应目录项 的有效位为〇,此时共享列表对应的5位向量为0 ; (2) 、数据读阶段:处理器C0读数据块,返回数据的同时更新对应目录项,将位向量中 其对应的两位置1; (3 )、处理器C4读数据块,返回数据的同时更新对应目录项,将处理器C4对应的两位置 1,第2位已经为1,将第5位置1 ; (4) 、数据写阶段:处理器C2写数据块,在执行写操作之前,向具有该数据块副本的处 理器发送无效命令,Directory Cache控制器根据Hash运算结果,向对应处理器发送无效 命令;此时共享列表的第1、2、5位被置为1,向处理器CO、C3及C4发送无效消息; (5) 、C0及C4接收到该无效消息后,将本地数据副本无效,返回应答消息;C3并不存在 数据的副本,在收到该无效消息后,其检查本地Cache,发现无对应数据副本后直接返回应 答消息; (6) 、当directory Cache接收到所有无效消息应答后,从相应位置返回数据行给C2, 同时更新对应的目录项。
【文档编号】G06F17/30GK104408069SQ201410595480
【公开日】2015年3月11日 申请日期:2014年10月30日 优先权日:2014年10月30日
【发明者】王恩东, 倪璠, 陈继承, 唐士斌, 王洪伟, 赵雅倩 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1