一种并行Hash查表架构和方法与流程

文档序号:16608837发布日期:2019-01-14 21:23阅读:475来源:国知局
一种并行Hash查表架构和方法与流程
本发明属于数据
背景技术
:实际工程设计中,经常会遇到对一个大范围的数据进行存储并查找相应内容,但是由于需要存储数据的不确定性以及存储空间的限制,不能保证预留足够大的存储体来存放所有数据。这时就需要考虑如何将一个大范围的数据映射到一个小范围存储中,并在使用时可以快速定位查找地址,而hash函数正是实现这样操作的工具。实际中的hash函数是指把一个大范围映射到一个小范围的算法,该操作的目的是为了节省空间,使得数据容易保存。在实现hash结构的一般方案中,往往会使用2倍于实际存储内容的一个ram空间,利用多个hash函数解决表项查找过程中的冲突问题。如图1所示,方案中展示了利用四个hash函数的查表架构,该架构是目前比较通用的hash查表方案架构。key是用于hash的键值,首先key经过hash0得到第一个地址,作为ram的查表地址。读取对应地址数值和键值key做比较,如果比对成功则本次查表成功,否则使用hash1再次进行计算,查表比对。依次类推,进行hash2、hash3的查找比对。该方案实现hash查找存储时,使用多个hash函数对应一个存储空间,由于hash冲突的原因,使得一个键值需要经过多次hash计算和查找才能匹配成功。而所有的数据在一个存储空间,可供读取的接口只有一套,因此需要串行完成hash计算->读取->比较->再hash->再读取->……->比对成功(或失败)。该架构在时间效率上存在很大不足,限制整体查表的速率,并且存在查表时间不确定性,该问题在硬件asic设计中尤为突出。如果第一次对比成功,该次查表完成,所用时间定为t。最坏的情况下,需要第四次查找对比后才能知道是否查表成功,需要4t的时间。平均查表时间在1.5t-2.5t之间,并且由于查表的不确定性,最终得到查表是否成功的时间也存在1t-4t的不确定。目前在对时间要求较高的查找环境中,该方案这种不确定时间的串行查找比对方式显然不能满足设计需求。技术实现要素:有鉴于此,本发明设计了一种并行hash计算的hash查找架构和方法,能够有效的解决上述查找性能差的问题,不再需要多次循环比对、再hash计算,也不需要多次读取ram空间,从而大大压缩查表的时间,提高了hash查找的效率。为达到上述目的,本发明的技术方案是这样实现的:一种并行hash查表架构,包括:查表hash键值key,根据需要确定bit位宽;n个hash函数,各自选择不同的表达式;n个ram,各自独立,与hash函数一一对应;compare对比模块,同时完成n个ram查表结果和查表键值key的对比,并根据对比结果得到正确的查表内容;其中,每个hash函数对应深度不同的ram。优选的,用crc多项式作为hash函数,位宽较大的crc多项式对应ram深度较深的ram。进一步的,所述n个ram空间大小不一、依次递减,使得各ram存储查表的概率依次递减。优选的,所述n个ram空间大小为等比递减。本发明还提供了上述查表结构的使用方法,包括:1)获得查表的键值key,分别送入n个hash函数,并保存本次键值留作与结果对比;2)每个hash函数根据输入的键值,进行独立的hash计算;3)各自hash计算结果分别作为ram的查表地址,读取相应的ram表项,同时获得n个表项内容;4)将n个表项内容与保存的键值key分别做对比,选取其中比对成功的一组作为最终的查表结果,进行输出,完成本次的hash查表。进一步的,步骤2)中,各hash计算时间相同,同时输出计算结果。进一步的,步骤4)中,由compare对比模块同时完成n个ram查表结果和查表键值key的对比。进一步的,多个键值key同时在步骤1)-4)的不同环节运行,在前面键值key数据进行查表时进入新的查表键值key数据,流水进行查表动作。与现有技术相比,本发明的有益效果为:本发明在架构设计中将原来的一块共用ram空间拆分成n个大小不同的ram,每块ram对应自己独特的hash函数,相互之间无任何联系,保证了hash之间的独立性和结果的随机性,在最终hash查表效果上与传统的hash查表一致。通过ram空间的拆分,使得原先一套查找接口被n个hash共用的现象改为了每个hash都有自己的ram接口,相互之间互不影响,从而将n个hash的查表动作由原先的n个过程缩减到了1个过程中共同完成。在保证hash查表的效果基础上,大大提高了多hash查表的效率。多个ram容量的设计不再是通常的大小相等,而是根据实际建表和查表过程中使用的频率进行确定,采用由前到后依次递减的设计规则。该设计的依据是由于hash表的建立和查找过程中使用和比对的顺序也是由前到后,因此越是靠前的ram使用的概率越大,所以越靠前的ram使用较大的空间更有利于数据的存储和查找。该设计结构使得多hash的效率和空间的使用率更高。匹配多ram输出结果,compare对比模块实现同时n个结果与键值key做比对,保证整体查表的吞吐量。本发明所设计的hash查表结构,用多路hash查找不同ram替代了原有的单路hash查找、多次循环的方式,使得每个键值经由hash查表的时间为一个固定数值,而不再是根据前面查找结果而定。该结构保证查表有固定延时使得hash查表在硬件逻辑实现上更加简单,去掉了原先的延时不确定性。附图说明图1是现有技术中hash查表结构示意图;图2是本发明实施例的hash查表结构示意图;图3是本发明实施例的流水查表示意图。具体实施方式需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。1、hash架构设计本发明设计了一种并行hash计算、多ram存储空间、ram等比大小、并行比对的hash查找架构。如图2所示,是本发明的架构设计。说明如下:1)查表hash键值key,根据需要确定bit位宽;2)hash函数0-(n-1),共n个,与ram一一对应,n个hash函数需要选择不同的表达式,尽量减少各hash函数之间的关联性;3)ram共n个,各自独立,与前面的hash函数一一对应。ram设计成空间大小不一,保持等比的关系(或其他递减形式),使得各ram存储查表的概率依次递减,更好地解决建表和查表时的冲突;4)compare对比模块,同时完成n个ram查表结果和查表键值key的对比,并根据对比结果从中得到正确的查表内容;2、设计说明ram空间的划分:使用hash查表主要是为了解决大空间数据向有限存储空间映射的问题,并解决映射过程中的冲突。公认的研究结果表明,如果需要存储深度是m的数据,在实际使用2m深度ram空间时冲突的概率最小。本发明也遵循该原则进行设计。本发明设计的独特点在于将深度是2m的ram空间进行了拆分,而不再只有一个ram接口。拆分成n个大小不等的ram,每个ram有一套对应各自hash的查表接口。其中,ram大小的划分采用了由大到小,等比递减的设计原则。ramram0ram1……ramn-3ramn-2ramn-1大小mm/2……m/2n-3m/2n-2m/2n-2如上表所示,ram0的大小是m,ram1的大小是m/2,……,最后两ram大小都是m/2n-2,最终使得所有ram的大小之和为:m+m/2+……+m/2n-2+m/2n-2=2m。本处各ram深度的选取不一定需要遵循等比原则,也可以根据实际仿真建表、查表设计中各ram的使用情况进行调整,整体的设计原则要求ram深度划分与ram表使用概率成正比,这将在实际查表中得到性能最优化的体现。hash函数的选择:本发明选用了n个hash函数实现ram地址的查找,尽量降低查找过程中的失败(n个hash都未找到正确的表项)。hash函数的选择可以根据需要以及实际仿真效果选择。比如选用crc多项式作为hash函数,因为每个hash函数对应深度不同的ram,可以将crc多项式也做顺序调整,使得位宽较大的对应ram深度较深的。在硬件实现中,要保持各hash函数计算时间尽量最短,并且所有hash使用相同的时间完成,这是保证整体架构并行实现的前提。hash个数n以及存储空间2m的选择:本发明设计了一个通用的高效hash查表架构,可根据用户不同的需求确定架构中各参数的大小。如前所述,当实际存储数据深度为m时,选择所有n个ram的深度总和为2m时,此时hash建表和查表的冲突概率最小。因此,m是设计中ram允许存储的最大表项(ram空间的利用率不高于50%)。hash查表中解决冲突的一个重要方法是使用更多的hash函数,函数越多,计算出可供选择的地址越多,全部冲突(查表失败)的概率越小。但hash函数越多,导致需要使用更多的逻辑资源去实现,因此需要综合考虑性能与资源的取舍问题。通过大量的仿真实验对比,当选取合适的hash函数时,在m=8k的环境中,选取n=8比较合适,百万次建表过程无失败的现象。3、计算过程1)获得查表的键值key,分别送入n个hash函数,并保存本次键值留作与结果对比;2)每个hash函数根据输入的键值,进行独立的hash计算,保证各hash计算时间相同,同时输出计算结果;3)各自hash计算结果分别作为ram的查表地址,读取相应的ram表项,同时获得n个表项内容;4)将n个表项内容与保存的键值key分别做对比(n个对比同时进行),选取其中比对成功的一组作为最终的查表结果,进行输出,完成本次的hash查表。4、流水查表由于本发明设计中不存在传统方案中查表时间不确定性,并且本架构中每部分功能相对明确,所以可以在前面数据进行查表时进入新的查表数据。也就是可以保证多个键值同时在本设计中的不同环节运行,流水进行查表动作,这将大大提高hash查表的效率。如图3所示,key0首先输入,依次是key1、key2、key3,每个查表动作占据一个计算部分,前后错开、相互之间无影响。本发明中存储空间采用了多ram、深度递减的设计方法,不同于传统的1块或多块等大小ram,更好地利用了不同位置ram使用概率依次递减的规则;本发明中的ram递减规则不限于等比递减,还包括其他方式与使用概率相关的ram大小设计方法;本发明设计中可以将hash查表计算的各个环节固定化,从而在硬件实现的每个时钟下都有固定的操作,实现查表的流水化过程。本发明的技术关键点在于:1、多ram存储空间,ram大小根据使用概率确定;2、各ram大小采用不对等的架构,突出各ram的使用概率,更有利于进行建表和查表过程;3、对同一键值,多hash并行计算,使用计算结果并行查找各自ram表,并行设计提高查表效率;4、同一时刻对比查表结果和键值,省去了传统hash中多次对比;5、在硬件设计中可以将每部分动作分配到固定时钟周期下进行,从而使得整体查表时间是一个固定数值,方便硬件设计。6、相对固定延迟的各步骤操作,便于实现流水查表。以上描述了本发明的基本原理、主要特征和实施方案等信息,但是本发明不受上述实施过程的限制,在不脱离发明精神和范围的前提下,本发明还可以有各种变化和改进。因此,除非这种变化和改进脱离了本发明的范围,它们应该被看作包含在本发明中。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1