[发明专利]对多线程应用的杂凑表执行并行的重杂凑有效
| 申请号: | 200980159762.3 | 申请日: | 2009-04-08 |
| 公开(公告)号: | CN102460392A | 公开(公告)日: | 2012-05-16 |
| 发明(设计)人: | A.A.马拉霍夫 | 申请(专利权)人: | 英特尔公司 |
| 主分类号: | G06F9/46 | 分类号: | G06F9/46 |
| 代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 张涛;蒋骏 |
| 地址: | 美国加利*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 多线程 应用 杂凑 执行 并行 | ||
背景技术
杂凑表是在诸如数据库、搜索引擎、统计处理和动态脚本语言的多种应用中的基本构成块。杂凑表是一族将键(key)与值相关联的容器。杂凑表使用其杂凑值以及容器的当前容量来计算存储在表的条目中的项目的放置位置,所述条目即桶(bucket)。然而,容器通常需要动态增加容量,这意味着附加存储块的重新分配或分配。所以,增加的容量导致了项目放置的无效并且需要项目被移动到新的地方,这通常被称作重杂凑(rehashing)。
对于杂凑表的已知并行算法而言,在线程决定重新设定容器的大小时,该线程阻止(即,临时停止)对该表的一些(或者甚至全部)并行操作,直至该线程完成了重新设定大小和重杂凑的处理二者。这导致了并行性的降低,并且因此导致了性能降低。另一个问题在于,具有重新设定大小的操作的运行时间和复杂度明显不同于没有重新设定大小的相同操作。
附图说明
图1是依据本发明一个实施例的用于更新杂凑表的方法的流程图。
图2A是依据本发明一个实施例的桶的框图。
图2B是图示依据本发明一个实施例的新桶分配的框图。
图2C是图示依据本发明一个实施例的新桶分配的框图。
图3是依据本发明实施例的用于执行查找/重杂凑的方法的流程图。
图4是依据本发明一个实施例的系统的框图。
具体实施方式
实施例可以被用来对并行的杂凑表执行并行的重新设定大小以及根据需要按桶进行的重杂凑,所述并行的杂凑表是由可以在多处理器系统的一个或多个核心上执行的一个或多个线程所访问的共享存储器,所述多处理器系统诸如具有一个或多个多核处理器的系统。可应用于杂凑表的是,其中桶可以存储一组项目。为了简明,假设表的初始容量是2的幂。项目的杂凑值除以容量的余数给出了存储该项目的桶的索引。在一些实施例中经过简化,桶的索引也可以通过以下公式来计算
等式(1)
其中hash是通过杂凑计算所获得的杂凑值,在所述杂凑计算中,键被应用于生成该杂凑值的杂凑函数,并且“&”表示二进制表示的逐比特的与(AND)。在一个实施例中,容量可以以杂凑表的桶的数量为单位,但是本发明的范围并不局限于此。
为了增加容量,依据本发明实施例的算法可以分配像现有桶那么多的桶并且保留旧桶,因此使得桶数加倍。每个新桶被逻辑映射到一个现有桶(母桶)上,除了最高位保持为值1之外,所述现有桶具有包括与新桶索引中相同的值(即,比特集)的索引。例如,如果一个桶的索引为二进制表示的00101101,则母桶的相应索引为00001101。也就是说,母桶的索引可以如下获得:
等式(2)
其中<<表示将二进制的左侧操作数移位由右侧操作数所指定的比特数。
在许多实现中,特定的新桶可以具有其它新桶作为母桶。如以下所描述的,导致它的分配在一些实现中可以被组合为单个存储器请求。
现在参见图1,示出了依据本发明一个实施例的用于更新杂凑表的方法的流程图。如图1所示,方法10可以通过确定杂凑表中所需要增加的空间来开始(框20)。虽然本发明的范围并不局限于此,但是可以基于所述表的负载因数来进行这样的确定,例如在当杂凑表中所存储的数据量达到预定阈值时出现针对新数据对的插入操作时由系统软件进行,所述预定阈值例如是总表量的特定百分比。当然,可以在其它实施例中使用确定所需要增加的空间的其它方式。例如,用户可以在对保留操作的调用中指定一定数量的桶。
一旦进行了这样的确定,控制进行至框30,在那里可以分配一定数量的新桶。更具体地,可以对应于杂凑表中桶的当前数量而分配一定数量的桶。以这种方式,分配给所述表的桶的数量被加倍。在一个实施例中,调用分配器以获得所需的存储器量并且将桶初始化为新的空桶。接着,可以公布该新的空间(框40)。虽然本发明的范围并不局限于此,但是公布可以经由对包含容量值的变量的更新来进行。在一个实施例中,该更新可以经由带有针对“容量”变量的释放操作(或原子写)的存储来进行。可替换地,这样的更新可以针对与容量值减1相对应的掩码(mask)。因此,通过分配新桶并且公布该新空间,完成分配而无需将存在于原始桶中的数据完全重杂凑到新桶中。也就是说,分配是独立于重杂凑进行的并且通过公布新空间而完成。新公布的空间中的每个桶最初被标记为未重杂凑(non-rehashed)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200980159762.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:上跨电气化铁路桥梁轻型棚架防护结构
- 下一篇:马桶盖板的慢落装置





