CN115237954A - 基于pim装置的布谷鸟哈希查询的方法、pim装置及系统 - Google Patents
基于pim装置的布谷鸟哈希查询的方法、pim装置及系统 Download PDFInfo
- Publication number
- CN115237954A CN115237954A CN202210805683.2A CN202210805683A CN115237954A CN 115237954 A CN115237954 A CN 115237954A CN 202210805683 A CN202210805683 A CN 202210805683A CN 115237954 A CN115237954 A CN 115237954A
- Authority
- CN
- China
- Prior art keywords
- key
- processor
- bucket
- cuckoo hash
- pim device
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 241000544061 Cuculus canorus Species 0.000 claims abstract description 98
- 239000013598 vector Substances 0.000 claims abstract description 58
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种基于内存中处理(PIM)装置的布谷鸟哈希查询的方法、PIM装置及系统。所述方法包括:所述PIM装置接收处理器传输的与键对应的值的查询指令;从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中所属的桶的标识和索引向量;响应所述查询指令,基于所述布谷鸟哈希表、所述键、所述所属的桶的标识和所述索引向量,获取所述键的位置索引指示信息;将所述位置索引指示信息传输给处理器,以使得处理器根据所述位置索引指示信息获取与所述键对应的值。
Description
技术领域
本申请涉及数据存储领域,更具体地,涉及一种基于内存中处理(PIM)装置的布谷鸟哈希查询的方法、PIM装置及系统。
背景技术
内存键值存储(In-memory Key-Value Store,IMKV)因其高吞吐量和低延迟而被广泛应用于数据中心和云计算等应用中,代表性系统包括广泛部署的开源系统(诸如,Memcached、Redis、RAM Cloud等),也应用在互联网服务系统(诸如,Facebook、YouTube、Twitter等)的关键组件中。布谷鸟哈希(Cuckoo Hashing)是为了实现快速并行索引而设计的,因此在IMKV中得到广泛应用。
布谷鸟哈希是一种开放寻址的哈希表,包含多个哈希函数,为每个键提供多个可能的位置以解决哈希冲突。图1是示出现有技术的使用两个哈希函数的布谷鸟哈希的查找(GET)操作的示意图。在图1中,哈希表中的每一行被称为桶(bucket),每个桶中可以包括由键(K)和对应的值(V)构成的多个键值对,其中,每个键或每个键值对可对应一个位置索引信息。在执行查找操作时,基于查找到的键的位置索引信息,返回需要查询的键对应的值。
在现有技术中,处理器在执行布谷鸟哈希的GET操作过程中,读取哈希表时对内存读取的需求过高,这是由于哈希表的随机性;且随着哈希表大小的增加,处理器上的缓存命中率逐渐降低,导致频繁的全局内存访问。此外,随着查询数量的增加,处理器的内存带宽需求也会增加。这些都不利于哈希表的查找速度。
发明内容
根据本发明的示例性实施例,提供了一种基于内存中处理(PIM)装置的布谷鸟哈希查询的方法,包括:所述PIM装置接收处理器传输的与键对应的值的查询指令;从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中所属的桶的标识和索引向量;响应所述查询指令,基于所述布谷鸟哈希表、所述键、所述所属的桶的标识和所述索引向量,获取所述键的位置索引指示信息;将所述位置索引指示信息传输给处理器,以使得处理器根据所述位置索引指示信息获取与所述键对应的值。
所述布谷鸟哈希表的每个桶中可包括键不包括值。
获取所述键的位置索引指示信息的步骤可包括:根据所述布谷鸟哈希表和所述所属的桶的标识,获取所述所属的桶;根据所述键和所述所属的桶,确定所述键在所属的桶中的位置信息;基于所述键在所属的桶中的位置信息和所述索引向量,确定所述键的位置索引指示信息。
确定所述键在所属的桶中的位置信息的步骤可包括:将所述键与所述所属的桶中的每个键进行同或操作,确定所述键的位置索引指示信息的步骤可包括:将所述键在所属的桶中的位置信息与所述索引向量进行乘法操作。
所述位置索引指示信息可以为位置索引指示向量或位置索引指示值。
所述索引向量的长度可以和所述PIM装置的Bank长度相同。
所述基于PIM装置的布谷鸟哈希查询的方法还可包括:接收处理器传输的布谷鸟哈希表,并将所述布谷鸟哈希表存储在PIM装置的BANK中。
根据本发明的示例性实施例,提供了一种执行布谷鸟哈希查询的内存中处理(PIM)装置,包括:至少一个可编程计算单元(PCU),被配置用于执行以下操作:接收处理器传输的与键对应的值的查询指令;从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中所属的桶的标识和索引向量;响应所述查询指令,基于所述布谷鸟哈希表、所述键、所述所属的桶的标识和所述索引向量,获取所述键的位置索引指示信息;将所述位置索引指示信息传输给处理器,以使得处理器根据所述位置索引指示信息获取与所述键对应的值。
所述布谷鸟哈希表的每个桶中可包括键不包括值。
所述至少一个PCU在获取所述键的位置索引指示信息中还可被配置用于执行以下操作:根据所述布谷鸟哈希表和所述所属的桶的标识,获取所述所属的桶;根据所述键和所述所属的桶,确定所述键在所属的桶中的位置信息;基于所述键在所属的桶中的位置信息和所述索引向量,确定所述键的位置索引指示信息。
所述PIM装置还可包括:断言寄存器PRF,其中,所述至少一个PCU还可被配置用于执行以下操作:将所述键与所述所属的桶中的每个键进行同或操作,其中,同或操作结果被存储在PRF中,将所述键在所属的桶中的位置信息与所述索引向量进行乘法操作。
所述位置索引指示信息可以为位置索引指示向量或位置索引指示值。
所述索引向量的长度可以和所述PIM装置的BANK长度相同。
所述至少一个PCU还可被配置用于执行以下操作:接收处理器传输的布谷鸟哈希表,并将所述布谷鸟哈希表存储在PIM装置的BANK中。
根据本发明的示例性实施例,提供了一种基于内存中处理(PIM)装置的布谷鸟哈希查询的系统,包括:PIM装置;处理器,其中,所述PIM装置被配置为执行前述的方法;所述处理器,被配置为根据所述位置索引指示信息获取与所述键对应的值。
根据本发明的示例性实施例,提供了一种电子设备,包括存储器,处理器和PIM装置,存储器上存储有计算机可执行指令,当所述指令由PIM装置执行时,执行前述的方法。
根据本发明的示例性实施例,通过将布谷鸟哈希查找中的内存读取操作从处理器转移到在PIM装置中进行,利用PIM装置的高带宽优势,解决了布谷鸟哈希查找由于内存带宽受限导致的检索速度慢的问题,提高了索引操作的响应速度,随着查询数量不断增加,GET操作的内存带宽利用率相较于现有的仅采用处理器的情况大幅下降,并且随着哈希表大小的增加,GET操作的吞吐量也大幅提高;此外,通过向PIM装置添加计算功能(比较功能),可通过充分利用PIM装置的高带宽而将PIM装置扩展到数据库领域,扩展了PIM硬件的应用领域;此外,通过重新设计哈希表结构,将键和值解耦并且只保留键在PIM内存中,从而可更合理地使用大小有限的PIM内存。
附图说明
通过下面结合附图进行的详细描述,本发明的上述和其它目的和特点将会变得更加清楚,其中:
图1是示出现有技术的使用两个哈希函数的布谷鸟哈希的GET操作的示意图;
图2示例性的示出现有技术的PIM装置的一个通道的示意图;
图3是示出根据本发明示例性实施例的基于PIM装置的布谷鸟哈希查询的方法的流程图;
图4是示出根据本发明示例性实施例的由PIM内存存储的布谷鸟哈希表的示意图;
图5a和图5b是示出根据本发明示例性实施例的PCU的示意图;
图6是示出根据本发明示例性实施例的执行布谷鸟哈希查询的PIM装置的框图;
图7是示出根据本发明示例性实施例的基于PIM装置的布谷鸟哈希查询的系统的框图;
图8是示出根据本发明示例性实施例的基于PIM装置的布谷鸟哈希查询的系统的流程图。
具体实施方式
在下文中,参照附图对本公开的各种示例性实施例进行描述,其中,相同的标号用于表示相同或相似的元件、特征和结构。然而,不旨在由本文所述的各种实施例将本公开限制于具体实施例,并且旨在于:本公开覆盖本公开的所有修改、等同物和/或替代物,只要它们在所附权利要求及其等同物的范围内。在以下说明书和权利要求书中使用的术语和词语不限于它们的词典含义,而是仅被用于使得能够清楚和一致地理解本公开。因此,对于本领域技术人员应显而易见的是:提供本公开的各种实施例的以下描述仅用于说明的目的,而不是为了限制由所附权利要求和它们的等同物限定的本公开的目的。
应理解,除非上下文另外明确指出,否则单数形式包括复数形式。本文使用的术语“包括”、“包含”和“具有”指示公开的功能、操作或元件的存在,但不排除其它功能、操作或元件。
例如,表述“A或B”、或“A和/或B中的至少一个”可指示A和B、A或者B。例如,表述“A或B”或“A和/或B中的至少一个”可指示(1)A、(2)B或(3)A和B两者。
在本公开的各种实施例中,意图是:当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“耦接”或“连接”或者被“耦接”或者“连接”到另一组件(例如,第二组件)时,所述组件可被直接连接到所述另一组件,或者可通过另一组件(例如,第三组件)被连接。相比之下,当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“直接耦接”或“直接连接”或者被直接耦接到或直接连接到另一组件(例如,第二组件)时,在所述组件和所述另一组件之间不存在另一组件(例如,第三组件)。
在描述本公开的各种实施例中使用的表述“被配置为”可以例如根据情况与诸如“适用于”、“具有…的能力”、“被设计为”、“适合于”、“被制造为”和“能够”的表述互换使用。术语“被配置为”可不一定指示按照硬件“被专门设计为”。相反,在一些情况下的表述“被配置为...的装置”可指示所述装置和另一装置或者部分“能够…”。例如,表述“被配置为执行A、B和C的处理器”可指示用于执行相应操作的专用处理器(例如,嵌入式处理器)或用于通过执行存储在存储器装置中的至少一个软件程序来执行相应的操作的通用处理器(例如,中央处理单元CPU或应用处理器(AP))。
本文使用的术语在于描述本公开的某些实施例,但并不旨在限制其它实施例的范围。除非本文另外指出,否则本文使用的所有术语(包括技术或科学术语)可具有与本领域技术人员通常理解的含义相同含义。通常,词典中定义的术语应被视为具有与相关领域中的上下文含义相同的含义,并且,除非本文明确地定义,否则不应被不同地理解或被理解为具有过于正式的含义。在任何情况下,本公开中定义的术语也不旨在被解释为排除本公开的实施例。
本申请为了加速哈希表的查询速度,利用了PIM的并行处理特性。在这里我们首先对PIM装置进行简要介绍。图2示例性的示出了一种现有技术的PIM装置的一个通道的示意图。
参照图2,PIM装置的一个通道包括8个可编程计算单元(Programmable ComputingUnit(PCU)),每个PCU可访问两个BANK,其中,BANK为PIM装置的内存单元。PIM装置是具有计算能力的内存,参考图2,PCU让PIM装置具有了计算能力。在一些示例中,PIM装置可以是具有PCU的动态随机存取存储器(Dynamic Random Access Memory,DRAM),可以是具有PCU的HBM(High Bandwidth Memory),可以是具有PCU的GDDR(Graphics Double Data Rate)显存,可以是具有PCU的LPDDR(Low Power Double Data Rate)内存。其中,每个PCU可包括控制器、单指令多数据(Single Instruction Multiple Data(SIMD))乘法器、SIMD加法器和三种类型的寄存器,即,命令寄存器(Command Register File(CRF))、标量寄存器(ScalarRegister File(SRF))和通用寄存器(General Purpose Register File)GRF_A和GRF_B。
在一个示例性的实施例中,一个PIM装置可以包括16个通道,那么一个PIM装置可以并行地进行128个键的查询,这将会极大的提升大规模的KV查找速度。
下面将参照图3对根据本发明示例性实施例的基于PIM装置执行布谷鸟哈希查询的方法进行描述。
图3是示出根据本发明示例性实施例的基于PIM装置的布谷鸟哈希查询的方法的流程图。
在步骤S310,所述PIM装置接收处理器传输的与键对应的值的查询指令。
为了提高布谷鸟哈希查询速度,利用PIM装置的并行计算的特点,本申请在处理器执行GET操作时,处理器可以将GPU中的布谷鸟哈希表复制给PIM装置,进而确定所述键在布谷鸟哈希表中所属的桶的标识,依据PIM装置硬件特性确定索引向量,生成指示PIM进行布谷鸟哈希查询的查询指令,而PIM装置只用于执行查询指令。
其中,索引向量的取值依赖于BANK的长度,如图2示例性的PIM装置的BANK的长度为16bit,则索引向量可以为[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]。本领域技术人员可以理解的是,如果BANK的长度改变,那么索引向量的长度也会相应变化,以用于后续中位置索引指示信息的计算,具体的计算说明参见后续说明。同样上述的索引向量是一个示例性的向量,其它可以用于后续的位置索引指示信息计算的向量也是可行的。
在一示例性的实施例中,所述查询指令可以携带有要查询的键的地址信息、所属桶的标识的地址信息、以及所述索引向量的地址信息,以用于PIM装置在执行查询指令时,根据需求从所述处理器中读取相应的数据。
当然本领域技术人员可以理解的是,在某些PIM装置硬件可以支持的情况下,所述查询指令也可以直接携带要查询的键、所属桶的标识、以及所述索引向量。
在一些示例中,所述处理器可以是CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit)、NPU(Neural-Network Processing Unit)等。
此外,可由PIM装置的命令寄存器(CRF)从处理器读取并接收查询指令。
在步骤S320,PIM装置从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中的所属的桶的标识和索引向量。
在一示例性的实施例中,为了减少处理器和PIM装置之间数据传输,处理器在执行第一次GET操作时,将布谷鸟哈希表复制到PIM装置,存储于PIM装置的各个BANK中。对于本领域技术人员来说,布谷鸟哈希表也可以是处理器每执行一次GET操作,就会复制一次布谷鸟哈希表到PIM装置。
鉴于现有的PIM装置的内存空间有限,在一示例性的示例中,处理器还可以向PIM装置传输结构优化后的布谷鸟哈希表。优化后的布谷鸟哈希表可以将原哈希表中的键和值解耦,只保留键,这样可以尽可能保存更多的哈希表表项。
示例性的,参照图4来描述的结构优化前和结构优化后的布谷鸟哈希表。图4是示出根据本发明示例性实施例的由PIM内存存储的布谷鸟哈希表的示意图。参照图4,当键(图4中示出为K)的大小为4字节时,值(图4中示出为V)的大小为32字节,在将哈希表的键和值解耦之后,可以使用16MB的PIM内存(PIM内存由BANK构成)索引结构优化前的144MB的哈希表。
PIM接收到处理器传输的查询指令后,可以根据查询指令中携带的地址信息从处理器中读取所述键、所述键在布谷鸟哈希表中的所属桶的标识和索引向量。
其中,所述键被所述PIM装置从处理器读取到标量寄存器(SRF)中,所述索引向量被所述PIM装置从处理器中读取到通用寄存器(GRF)。其中,若BANK的长度是固定,在PIM硬件资源允许的情况下,本申请也可以将索引向量存储在PIM装置的BANK中,无需每次执行GET操作时向PIM装置传输索引向量。
在步骤S330,响应所述查询指令,基于所述布谷鸟哈希表、所述键、所述所属的桶的标识和所述索引向量,获取所述键的位置索引指示信息。
需要说明的是,PIM装置可以根据上述的地址信息直接从处理器中读取,也可以在下述的计算过程中根据需求及时从处理器中读取,本申请对此不作具体限定。因此步骤320和步骤330的执行顺序并不受限于步骤编号的顺序。
在一示例性的实例中,响应所述查询指令,所述PIM装置根据所述布谷鸟哈希表和所述所属的桶的标识,获取所述所属的桶。
根据所述键和所述所属的桶,确定所述键在所属的桶中的位置信息,基于所述键在所属的桶中的位置信息和所述索引向量,确定所述键的位置索引指示信息。
在进一步示例性的实例中,确定所述键在所属的桶中的位置信息的步骤可包括:将所述键与所述所属的桶中的每个键进行同或操作(XNOR)。
其中,确定所述键的位置索引指示信息的步骤可包括:将所述键在所属的桶中的位置信息与所述索引向量进行乘法操作(MUL)。
进一步的,为了实现同或操作以及乘法操作,参考图5a和图5b所示的一种示例性的PCU示意图。图5a和图5b是示出根据本发明示例性实施例的PCU的示意图。如图5a所示,PCU在图2所示的PCU的基础上增加了同或指令(XNOR),以支持所述键与所述所属的桶中的每个键进行同或操作,同时增加了断言寄存器PRF(Predicate Register File),用于保存同或操作的结果。
具体的,PIM装置中的所有如图5a所示的PCU并行地根据所述桶的标识,确定各自可访问的BANK中是否保存有所述标识对应的桶。举例来说,假设图5a中的PCU可访问的BANK中保存了所述标识对应的桶,则该PCU将所述桶读取到SRF中。如图5b所示,同或指令对从该PCU对应的BANK中读取所述桶中的各个键和所述键进行同或操作,以确定所述键在所述所属的桶中的位置信息(即同或操作的结果),将该同或操作的结果保存至该PCU的PRF中。接下来,将保存在GRF_A中的索引向量和PRF中的同或操作结果进行乘法操作,以获得所述键的位置索引指示信息,保存至GRF_B中。
在一示例性的实施例中,根据PIM装置的硬件性能,位置索引指示信息可以是位置索引指示向量,也可以是位置索引指示值。
处理器从PIM装置读取该位置索引指示信息,若是位置索引指示值,处理器可以直接根据该位置索引指示值读取所述键对应的值;若是位置索引指示向量,所述处理器根据所述位置索引指示向量计算所述键对应的位置索引指示值,以基于此获取所述键对应的值。
在步骤S340,将所述位置索引指示信息传输给处理器,以使得处理器根据所述位置索引指示信息获取与所述键对应的值。
图6是示出根据本发明示例性实施例的执行布谷鸟哈希查询的PIM装置的框图。
参照图6,根据本发明示例性实施例的执行布谷鸟哈希查询的PIM装置600可包括至少一个可编程计算单元(PCU)610。
每个可编程计算单元(PCU)610可被配置用于执行以下操作:接收处理器传输的与键对应的值的查询指令;从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中所属的桶的标识和索引向量;响应所述查询指令,基于所述布谷鸟哈希表、所述键、所属的桶的标识和所述索引向量获取所述键的位置索引指示信息;将所述位置索引指示信息传输给处理器,以使得处理器根据所述位置指示索引信息获取与所述键对应的值。其中,所述位置索引指示信息可以为位置索引指示向量或位置索引指示值。此外,处理器可以向PIM装置传输结构优化后的布谷鸟哈希表,优化后的布谷鸟哈希表的每个桶中可包括键不包括值。因此,PCU还被配置用于接收处理器传输的布谷鸟哈希表,并将所述布谷鸟哈希表存储在PIM的BANK中。
更具体地,可编程计算单元(PCU)610可被配置用于进一步执行以下操作:根据所述布谷鸟哈希表和所述所属的桶的标识获取所述所属的桶;根据所述键与所述所属的桶,确定所述键在所属的桶中的位置信息;基于所述键在所属的桶中的位置信息和所述索引向量,确定所述键的位置索引指示信息。
此外,根据本发明示例性实施例的执行布谷鸟哈希查询的PIM装置600还可包括断言寄存器(PRF)。同时,可编程计算单元(PCU)610可被配置用于执行以下操作:将所述键与所述所属的桶中的每个键进行同或操作(XNOR),其中,同或操作结果被存储在断言寄存器(PRF)中;将所述键在所属的桶中的位置信息与所述索引向量进行乘法操作。其中,所述索引向量的长度和所述PIM装置的BANK长度可相同。这里,本领域技术人员可根据需要使PIM装置600支持在存储所述键的标量寄存器(SRF)与PIM装置的BANK之间的同或操作,并可根据需要使PIM装置600支持在存储同或操作结果的通用寄存器(PRF)与存储所述索引向量的通用寄存器(GRF)之间的乘法操作。随后,乘法操作结果即作为位置索引指示信息而被输出,本领域技术人员可根据需要使通用寄存器(GRF)支持输出16比特的标量,从而可精确输出诸如图5中存储在GRF_B中的“6”而非GRF_B中的整行数据。
随后,处理器可从PIM装置600读取该位置索引指示信息,若是位置索引指示值,处理器可以直接根据该位置索引指示值读取所述键对应的值;若是位置索引指示向量,所述处理器根据所述位置索引指示向量计算所述键对应的位置索引指示值,以基于此获取所述键对应的值。
图7是示出根据本发明示例性实施例的基于PIM装置的布谷鸟哈希查询的系统的示意图。
参照图7,根据本发明示例性实施例的基于PIM装置的布谷鸟哈希查询的系统700可包括PIM装置710和处理器720。应理解,PIM装置710可相应于前述的PIM装置,并且处理器720可相应于前述的处理器。
PIM装置710可接收处理器传输的与键对应的值的查询指令,从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中所属的桶的标识和索引向量,响应所述查询指令,基于所述布谷鸟哈希表、所述键、所述所属的桶的标识和所述索引向量,获取所述键的位置索引指示信息,并将所述位置索引指示信息传输给处理器720,以使得处理器720根据所述位置索引指示信息获取与所述键对应的值。
下面将参照图8对PIM装置710和处理器720进行更详细的描述。
图8是示出根据本发明示例性实施例的基于PIM装置的布谷鸟哈希查询的系统示意图。
参照图8,左半边操作为处理器720执行,右半边操作为PIM装置710执行。更具体地,处理器720可基于键开启GET操作。随后,处理器720计算键所属的桶的标识,基于所属的桶的标识产生查询指令,根据PIM装置710硬件特性确定索引向量,并向PIM装置710传输布谷鸟哈希表、键、所属的桶的标识、索引向量和查询指令(关于处理器向PIM装置传输哈希表,键,所属桶的标识,索引向量和查询指令的具体过程,可参考上述方法实例的过程,再次不再赘述),其中,布谷鸟哈希表被存储在PIM装置710的BANK中。随后,PIM装置710可将查询指令读取到CRF中,将键读取到SRF中,执行查询指令以进行SRF与BANK之间的同或操作,并将同或操作结果存储在PRF中。接着,PIM装置710可执行PRF与GRF_A(读取有索引向量)之间的乘法操作,并将乘法操作结果存储在GRF_B中。最后,PIM装置710可将乘法操作结果(即,键的位置索引指示信息)存放到BANK中并传输给处理器720。随后,处理器720可基于键的位置索引指示信息获取键在布谷鸟哈希表中的位置,并返回该位置的值。
示例性,所述基于PIM装置的布谷鸟哈希查询的系统可以是GPU和PIM装置组成的片上系统SoC(System of Chip),也可以是CPU和PIM装置组成的SoC,也可以是处理器和PIM装置作为独立的芯片或模块组成的系统。
根据本发明的示例性实施例,通过将布谷鸟哈希查找中的内存读取操作从处理器转移到在PIM装置中进行,利用PIM装置的高带宽优势,解决了布谷鸟哈希查找由于内存带宽受限导致的检索速度慢的问题,提高了索引操作的响应速度,随着查询数量不断增加,GET操作的内存带宽利用率相较于现有的仅采用处理器的情况大幅下降,并且随着哈希表大小的增加,GET操作的吞吐量也大幅提高;此外,通过向PIM装置添加计算功能(比较功能),可通过充分利用PIM装置的高带宽而将PIM装置扩展到数据库领域,扩展了PIM硬件的应用领域;此外,通过重新设计哈希表结构,将键和值解耦并且只保留键在PIM内存中,从而可更合理地使用大小有限的PIM内存。
根据本公开的示例性实施例,提供了一种电子设备,包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的数据存储的方法。
根据本公开的示例性实施例,还可提供一种存储指令的计算机可读存储介质,其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的基于PIM装置的布谷鸟哈希查询的方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
虽然已经参照特定示例性实施例示出和描述了本发明,但是本领域的技术人员将理解,在不脱离范围由权利要求及其等同物限定的本发明的精神和范围的情况下可作出形式和细节上的各种改变。
Claims (10)
1.一种基于内存中处理PIM装置的布谷鸟哈希查询的方法,包括:
所述PIM装置接收处理器传输的与键对应的值的查询指令;
从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中所属的桶的标识和索引向量;
响应所述查询指令,基于所述布谷鸟哈希表、所述键、所述所属的桶的标识和所述索引向量,获取所述键的位置索引指示信息;
将所述位置索引指示信息传输给处理器,以使得处理器根据所述位置索引指示信息获取与所述键对应的值。
2.如权利要求1所述的基于PIM装置的布谷鸟哈希查询的方法,其中,所述布谷鸟哈希表的每个桶中包括键不包括值。
3.如权利要求1所述的基于PIM装置的布谷鸟哈希查询的方法,其中,获取所述键的位置索引指示信息的步骤包括:
根据所述布谷鸟哈希表和所述所属的桶的标识,获取所述所属的桶;
根据所述键和所述所属的桶,确定所述键在所属的桶中的位置信息;
基于所述键在所属的桶中的位置信息和所述索引向量,确定所述键的位置索引指示信息。
4.如权利要求3所述的基于PIM装置的布谷鸟哈希查询的方法,
其中,确定所述键在所属的桶中的位置信息的步骤包括:将所述键与所述所属的桶中的每个键进行同或操作;
其中,确定所述键的位置索引指示信息的步骤包括:将所述键在所属的桶中的位置信息与所述索引向量进行乘法操作。
5.如权利要求1所述的基于PIM装置的布谷鸟哈希查询的方法,其中,所述位置索引指示信息为位置索引指示向量或位置索引指示值。
6.如权利要求1所述的基于PIM装置的布谷鸟哈希查询的方法,其中,所述索引向量的长度和所述PIM装置的BANK长度相同。
7.如权利要求1所述的基于PIM的布谷鸟哈希查询的方法,其中,还包括:
接收处理器传输的布谷鸟哈希表,并将所述布谷鸟哈希表存储在PIM装置的BANK中。
8.一种执行布谷鸟哈希查询的内存中处理PIM装置,包括:
至少一个可编程计算单元PCU,被配置用于执行以下操作:
接收处理器传输的与键对应的值的查询指令;
从处理器获取布谷鸟哈希表、所述键、所述键在布谷鸟哈希表中所属的桶的标识和索引向量;
响应所述查询指令,基于所述布谷鸟哈希表、所述键、所述所属的桶的标识和所述索引向量,获取所述键的位置索引指示信息;
将所述位置索引指示信息传输给处理器,以使得处理器根据所述位置索引指示信息获取与所述键对应的值。
9.一种基于内存中处理PIM装置的布谷鸟哈希查询的系统,包括:
PIM装置;
处理器,
其中,所述PIM装置被配置为执行前述权利要求1~7中任一项所述的方法;
所述处理器,被配置为根据所述位置索引指示信息获取与所述键对应的值。
10.一种电子设备,包括存储器,处理器和PIM装置,存储器上存储有计算机可执行指令,当所述指令由PIM装置执行时,执行前述权利要求1~7中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210805683.2A CN115237954A (zh) | 2022-07-08 | 2022-07-08 | 基于pim装置的布谷鸟哈希查询的方法、pim装置及系统 |
KR1020230034982A KR20240007582A (ko) | 2022-07-08 | 2023-03-17 | Pim 장치 기반의 쿠쿠 해시 쿼리 방법, pim 장치 및 시스템 |
US18/345,211 US20240012811A1 (en) | 2022-07-08 | 2023-06-30 | Method, device, and system with processing-in-memory (pim)-based hash querying |
EP23183617.2A EP4303739A1 (en) | 2022-07-08 | 2023-07-05 | Method, device, and system with processing-in-memory (pim)-based hash querying |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210805683.2A CN115237954A (zh) | 2022-07-08 | 2022-07-08 | 基于pim装置的布谷鸟哈希查询的方法、pim装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237954A true CN115237954A (zh) | 2022-10-25 |
Family
ID=83670895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210805683.2A Pending CN115237954A (zh) | 2022-07-08 | 2022-07-08 | 基于pim装置的布谷鸟哈希查询的方法、pim装置及系统 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20240007582A (zh) |
CN (1) | CN115237954A (zh) |
-
2022
- 2022-07-08 CN CN202210805683.2A patent/CN115237954A/zh active Pending
-
2023
- 2023-03-17 KR KR1020230034982A patent/KR20240007582A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
KR20240007582A (ko) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163828B2 (en) | Building and querying hash tables on processors | |
US10515064B2 (en) | Key-value storage system including a resource-efficient index | |
US9529848B2 (en) | Predictive query result computation | |
US11586629B2 (en) | Method and device of storing data object | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
US10558702B2 (en) | Unified storage system for online image searching and offline image analytics | |
TW201220197A (en) | for improving the safety and reliability of data storage in a virtual machine based on cloud calculation and distributed storage environment | |
US9369332B1 (en) | In-memory distributed cache | |
CN104391863A (zh) | 一种数据存储方法及装置 | |
US20230185806A1 (en) | Data system configured to transparently cache data of data sources and access the cached data | |
US9483523B2 (en) | Information processing apparatus, distributed processing system, and distributed processing method | |
WO2022156650A1 (zh) | 访问数据的方法及装置 | |
US8271500B2 (en) | Minimal perfect hash functions using double hashing | |
US9870168B1 (en) | Key-value store with internal key-value storage interface | |
US11403273B1 (en) | Optimizing hash table searching using bitmasks and linear probing | |
JP6189266B2 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
CN115237954A (zh) | 基于pim装置的布谷鸟哈希查询的方法、pim装置及系统 | |
EP4303739A1 (en) | Method, device, and system with processing-in-memory (pim)-based hash querying | |
US11210280B2 (en) | Systems and methods for fast bloom filter operations | |
CN114064729A (zh) | 一种数据检索方法、装置、设备及存储介质 | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions | |
CN110413215B (zh) | 用于获取访问权限的方法、设备和计算机程序产品 | |
US20200143001A1 (en) | Indexing structure with size bucket indexes | |
WO2019126154A1 (en) | System and method for data storage management | |
WO2024001827A1 (zh) | 数据访问方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |