一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

二进制搜寻的方法和系统与流程

2022-02-21 03:45:43 来源:中国专利 TAG:


1.本发明涉及一种用于二进制搜寻的方法和系统,更具体地,涉及一种用于具有恒定最大响应时间的可扩展硬件二进制搜寻设计的方法和系统。


背景技术:

2.二进制搜寻,也称为半区间搜寻、对数搜寻或二分截断算法。是一种搜寻算法,其在已排序的数组中找到目标值的位置。二进制搜寻将目标值与数组的中间元素进行比较。如果中间元素正好是要搜寻的元素,则搜寻结束。如果搜寻目标值大于或者小于中间元素,则在阵列大于或小于中间元素的那一半区间中搜寻。并继续搜寻剩余的一半区间,再次取中间元素与目标值进行比较,并重复此操作直到找到目标值。如果搜寻范围结束,则目标不在数组中。
3.请同时参考图1a和图1b,其说明了传统的二分搜寻。
4.从图1a中可以看出,二分搜寻表存储在存储器中,即将进行二分搜寻。存储器包括几个位址,从#0、#1到#15。每个位址存储一个s值。例如,#0存储值3,#4存储值20,#13存储值87。现在请求搜寻查询。搜寻查询请求搜寻存储器中是否存在值75。
5.参见图1a,传统的二分搜寻方法首先执行步骤1,包括以下子步骤:(1)读取存储在#7存储器位址中的值;(2)#7中找到值47,确定47《75;(3)然后确定目标值没有在#0~#6的范围内,不需要进行搜寻,因为值是按顺序存储的,如图1a所示。
6.传统的二分搜寻进行到步骤2,该步骤还包括以下子步骤:(1)读取存储位址#11中存储的值;(2)#11中找到值72,确定72《75;(3)然后确定没有搜寻#8~#10的必要,因为值是按顺序存储的。
7.参见图1b,传统二分搜寻方法的步骤3,步骤3还执行以下子步骤:(1)读取存储在#13存储器位址中的值;(2)#13中找到值87,确定87》75;(3)然后确定没有搜寻#14~#15的必要,因为值是按顺序存储的。
8.传统的二分搜寻最后进行到步骤4,该步骤还包括以下子步骤:(1)读取存储在#12存储器位址中的值;(2)发现存储器位址#12中存有值80;(3)可以得出结论,75在存储器中不存在。
9.因此,传统的硬件二分搜寻设计存在一定的缺陷,例如通过硬件对表项进行排序和插入需要复杂的逻辑电路设计和更多的执行时间。此外,对于一个有m个条目的表,二分搜寻的最大响应时间是log2m。而且,更大的表大小导致更大的最大响应时间。
10.更进一步,对于另一种传统的bcam,它提供了更短的搜寻时间,但是需要更大的电路面积,这导致更高的成本。


技术实现要素:

11.本发明涉及一种二进制搜寻的方法,包括:提供具有m个条目的存储设备,每个条目存储一个值;提供包括n个暂存器的索引暂存器,其中n个暂存器将存储设备划分为n-1、n
或n 1个搜寻区域;其中m和n为整数且n《m;其中,当在存储设备中搜寻目标值时,确定目标值落在相邻的两个暂存器之间,只剩下两个暂存器之间的存储设备的位址进行搜寻。
12.较佳地,暂存器是从存储设备的m个条目中提取的。
13.较佳地,存储设备中存储的值按从小到大的顺序排列。
14.较佳地,存储设备中存储的值按从大到小的顺序排列。
15.较佳地,排序由软件进行。
16.本发明涉及一种二进制搜寻系统,包括:存储设备,该存储设备包括m个条目,每个条目存储一个值;和索引暂存器,索引暂存器包括n个暂存器,n个暂存器将存储设备划分为n-1、n或n 1个搜寻区;其中m和n为整数且n《m;其中,当在存储器中搜寻目标值时,确定目标值落在相邻的两个暂存器之间,只剩下两个暂存器之间的存储器位址进行搜寻。
17.较佳地,暂存器是从存储设备的m个条目中提取的
18.较佳地,存储设备中存储的值按从小到大的顺序排列。
19.较佳地,存储设备中存储的值按从大到小的顺序排列。
20.较佳地,排序由软件进行。
附图说明
21.图1a-1b说明了传统的二进制搜寻;
22.图2a-2c说明了本发明的改进的二进制搜寻方法;和
23.图3提供了本发明的改进的二进制搜寻方法的一般说明。
具体实施方式
24.除非另外定义,否则本文使用的所有技术和科学术语具有与本公开所属领域的技术人员通常理解的相同的含义。将进一步理解术语;例如在常用词典中定义的那些,应被解释为具有与其在相关技术和本公开的上下文中的含义一致的含义,并且除非明确如此定义,否则不会以理想化或过于正式的含义进行解释在此处。
25.在整个说明书中对“一个实施例”或“一个实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被封包括在至少一个实施例中。因此,在本说明书各处出现的短语“在一个实施例中”或“在一个实施例中”不一定都指代相同的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
26.请参考图2a-2c。图2a-2c为本发明改进后的二分搜寻方法的示意图。此外,本发明还可以理解为一种改进的二进制搜寻,在存储器和暂存器中具有额外的二进制搜寻表。
27.如图2a所示,多个值存储在存储器201中。存储器201包括16个位址,编号从#0到#15。然而,存储器中的位址数量不受限制。本领域普通技术人员可以将本发明的公开内容应用到具有更多位址的其他存储器中。
28.回到图2a,存储器201的每个位址存储一个值。例如,位址#0存储值3,位址#6存储值43,位址#14存储值94。所描述和如图所示的值仅用于示例目的,不应限制本发明的范围发明。
29.每个值以从小到大的顺序存储。当这些值进入存储器201时,可以通过软件进行排序。但是,排序的方法对于本领域普通技术人员来说是公知的,在此不再赘述。
30.可以相应地修改排序。也就是说,每个值可以按照从大到小的顺序排列,本发明仍然可以适用。
31.进一步如图2a所示,还提供了索引暂存器202。索引暂存器202包括四个位址,即#0、#5、#10和#15。对于每个位址,值3、值31、值67和值98分别存储在位址#0、#5、#10和#15中。接下来,请求进来。请求询问值75是否存在于存储器201中。索引暂存器202可以是任何形式。也就是说,索引暂存器202可以实现为软件或硬件。
32.接下来参考图2b,进一步说明了请求进来后的步骤1。对于步骤1,根据索引暂存器202中记录的信息,可以发现75大于67且小于比98。即67《75《98。因此,位址#0到#9以及位址#10和位址#15可以排除搜寻,因为目标值75落在67之间(存储在#10)和98(存储在#15中),使搜寻从位址#11到位址#14执行。从图可以看出,在未经存储器读取的情况下,这种索引暂存器202有助于排除一半以上的位址。
33.接下来参考图2c,其示出了步骤2和步骤3。在步骤2中,读取存储在位址#12中的值。发现值80存储在位址#80中。由于值80大于目标值75,并且在每个存储值按顺序排列的前提下,很快就会发现不需要从位址#13到#14搜寻,因为存储在两个位址必须大于值75。
34.本发明进一步进行到步骤3,接下来读取存储在存储器位址#11中的值。然后发现位址#11中存储的值为72。这样的值72是目前没有排除的最后一个值。然而,由于72不等于75,因此可以得出结论,值75不存在于存储器201中。
35.回到图2c的步骤2,本领域普通技术人员可以相应地调整读取其他位址中存储的值(例如,可以不读取#12中的值,而是可以读取13中存储的值)
36.接下来参考图3,其提供了本发明的改进的二进制搜寻方法的一般说明。
37.假设存储器301包括m个表项,编号为表项1、表项2
……
到表项m。每个表项中存储有一个值,所有值按从小到大的顺序排列。排序可以通过软件的辅助来完成,由于排序的相关技术为本领域的常规技术,为方便起见,不再赘述。
38.可以相应地修改排序。也就是说,每个值可以按照从大到小的顺序排列,本发明仍然可以适用。
39.再次参考图3,提供了索引暂存器302。索引暂存器302包括n个区域,编号为reg1、reg2

到regn。这n个区域将二分搜寻表划分为n 1个二分搜寻区域,标记为binarysearcharea1、binarysearcharea2

tobinary搜寻区域n 1。
40.应用上述步骤,本发明改进的二分搜寻可以进一步减少计算资源。
41.因此,表格条目由软件排序。在设置存储器中具有m个条目的硬件二进制搜寻表的内容时,软件还设置了额外的n个索引暂存器(n《m),每个索引暂存器包含相同的([m/(n 1)]*k)'th个表项,其中k的范围从1到n。
[0042]
需要说明的是,n个区域是从存储器的位址中提取的。例如,在图中。如图2a所示,索引暂存器202具有四个区域,分别从位址#0、位址#5、位址#10和位址#15中提取。
[0043]
还需要说明的是,如果将存储器的首尾位址都提取出来,则划分的搜寻区域将下降到n-1个。如果提取了存储器首尾位址中的一个,则分区搜寻区域为n。如果没有提取存储器首尾位址,则分区搜寻区域为n 1。
[0044]
应用上述步骤,本发明改进的二分搜寻可以进一步减少计算资源。
[0045]
因此,表格条目由软件排序。在设置存储器中具有m个条目的硬件二进制搜寻表的
内容时,软件还设置了额外的n个索引暂存器(n《m),每个索引暂存器包含相同的([m/(n 1)]*k)'th个表项,其中k的范围从1到n。
[0046]
需要说明的是,n个区域是从存储器的位址中提取的。例如,在图中。如图2a所示,索引暂存器202具有四个区域,分别从位址#0、位址#5、位址#10和位址#15中提取。
[0047]
还需要说明的是,如果将存储器的首尾位址都提取出来,则划分的搜寻区域将下降到n-1个。如果提取了存储器首尾位址中的一个,则分区搜寻区域为n。如果没有提取存储器首尾位址,则分区搜寻区域为n 1。
[0048]
通过索引暂存器中存储的信息,存储器中的目标二进制搜寻区域显著减少,并且无论表大小有多大,搜寻区域的大小都是固定的。最大二分搜寻时间上限为log2((m-n)/(n 1))。
[0049]
综上所述,对于本发明,还可以进一步理解,在软件的辅助下,无论硬件表的大小有多大,本发明的二分搜寻在存储器上的最大搜寻时间上限都可以是固定的。
[0050]
综上所述,本发明的目的之一是,本发明控制二分搜寻的最大搜寻时间上限以适应性能要求。
[0051]
此外,本发明可以应用于各种环境,例如所有硬件二分搜寻表设计,无论表大小有多大,透过软件协助,限制其最大搜寻响应时间。
[0052]
综上所述,根据本发明,由软件处理表单条目排序和插入额外的索引暂存器。这种设计降低了硬件复杂性。
[0053]
进一步地,通过增加适当数量的索引暂存器,可以控制最大二分搜寻响应时间以满足性能要求。不一定需要高成本的bcam作为解决方案。
[0054]
综上所述,本发明具有一定的潜在应用和市场。例如,对于所有硬件二进制搜寻表设计,无论表大小有多大,都需要有限的最大响应时间。
[0055]
综上所述,本发明提供了一种具有固定最大响应时间的可扩展硬件二进制搜寻设计,其中表项排序和插入由软件处理。此外,还增加了适量的索引暂存器来记录存储器的内容。使用索引暂存器,目标二进制搜寻区域只是表单的一小部分,搜寻区域大小保持不变,但可使整个搜寻表单大小增加。
[0056]
可见本发明在突破先前之技术下,确实已达到所想要增进的功效,且也并非本领域的技术人员容易想到的,其具有进步性、实用性,显已符合专利的申请要件,因此依法提出专利申请。
[0057]
以上仅为举例说明,而非为限制性者。其它任何未脱离本发明的精神与范畴,而对其进行的等效修改或变更,均应该封包含于本技术的申请专利范围中。
[0058]
符号说明
[0059]
201、301 存储器
[0060]
202、302 索引暂存器
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献