高效的相似性搜索
相关申请的交叉引用
本申请要求于2020年3月17日提交的美国临时专利申请62/990,513、2020年6月25日提交的美国临时专利申请63/043,821、以及2020年7月8日提交的美国专利申请16/923,127的优先权,上述申请通过引用并入本文。
技术领域
本发明总体上涉及搜索,并且特别地涉及一种用于相似性搜索的高效方法。
背景技术
相似性搜索用于查找彼此相似的项。例如,化学家使用这样的工具来搜索化学信息学和生物信息学数据库,以帮助设计新分子。在这些计算方法中的基本假设是,结构相似的分子可能具有相似的生物学和物理化学性质。这通常被称为“相似性原理”。
在数据库的分子搜索中利用了五种主要的搜索方法:文本搜索、分子式搜索、身份搜索、子结构搜索和相似性搜索。
文本搜索是简单关键字搜索,例如针对单词“阿司匹林”。
分子式搜索用于查找包含一定数量和类型的元素(例如,C6H6)的分子。
身份搜索用于定位与查询结构“相同”的特定化学结构。
子结构搜索需要专业的搜索引擎,该搜索引擎识别分子的图示(illustration)以查找作为更大化学结构的一部分而出现的化学结构。
相似性搜索用于查找与查询分子相似的分子。在比较中使用的分子的各个方面可以根据应用而变化。相似方面的数量也可以根据搜索的性质而改变。
相似性搜索对相似性程度(similarity measure)进行操作。所有的相似性程度包括三个基本组成部分——分子描述符、权重和相似性系数。
分子描述符也可以被称为特征。特征是分子的物理、化学或其它特性的数字表示。一组特征被称为“分子指纹”。
权重用于对特征进行优先化和去优先化,以反映它们在特定的指纹方法中的相对重要性。随着时间的推移,已经开发出不同的分子指纹方法来解决不同的测量需求。它们可以包含以不同方式获得的不同数量和类型的特征和加权。
相似性系数(也被称为相似性度量(similarity metric))向两个分子之间的相似性程度提供了数值。正在被使用的分子指纹类型、搜索样本的大小和其它因素可能会影响相似性度量的选择。相似性度量的示例是谷本(Tanimoto)、汉明、L1、L2和Jaccard。
化学家和生物学家经常使用谷本度量α来量化分子指纹之间的相似性。谷本度量α是正在被比较的两个分子指纹的共同特征(即,它们的指纹特征的交集)与在两个分子中一起存在的特征(即,它们的指纹特征的并集)的比率,并且可以被表示为:
其中,A和B分别是分子a和b的分子指纹,∩是指纹特征的交集,并且∪是指纹特征的并集,并且其中,α(A,B)的值在零和一之间——分子指纹A和B越相似,谷本度量α(A,B)的值越趋向于1。
例如,如果分子a具有28个特征而分子b具有32个特征,其中特征中的15个特征是a和b二者共有的,则因此可以使用等式1计算谷本度量α:
现在参考图1,其示出了现有技术的谷本测量系统10,该系统包括谷本测量器12、谷本比较器13和候选向量数据库14。谷本测量器12测量在查询向量q和来自候选向量数据库14的候选向量C之间的谷本度量αm。谷本比较器13然后将经测量的谷本度量αm与定义的门限谷本度量αt进行比较。门限谷本度量αt定义了这样的αm值:在该值之上,被比较的向量被视为相似。针对上面提到的示例,如果αt被定义为0.85,则经测量的谷本度量αm为0.33指示q和C不相似。如果αm等于或大于αt,则谷本比较器13将向量C识别为有效候选向量。针对候选向量数据库14中的所有向量重复此测量。
由于分子指纹可以包含成千上万的特征,并且分子指纹数据库可以包含数十万个候选,因此使用谷本量度对分子指纹进行相似性搜索可能在计算上昂贵、复杂且耗时。
发明内容
因此,根据本发明的优选实施例,提供了一种用于测量在二进制查询向量和多个二进制候选向量之间的相似性的系统。该系统包括存储单元和处理器。存储单元存储二进制查询向量和多个候选向量,并且处理器依据汉明距离执行谷本计算。处理器包括:谷本到汉明门限转换器、汉明测量器和汉明比较器。谷本到汉明门限转换器将谷本门限转换为汉明门限。汉明测量器测量在候选向量和查询向量之间的汉明距离。汉明比较器选择距查询向量的汉明距离小于或等于汉明门限的候选向量。
另外地,根据本发明的优选实施例,谷本门限和汉明距离是弹出计数(popcounts)的函数、以及候选向量和查询向量之间的布尔XOR函数。
此外,根据本发明的优选实施例,谷本到汉明门限转换器包括:弹出计数器(popcounter)和汉明门限计算器。弹出计数器对所选择的符号在二进制向量中的一个中的出现次数进行计数。汉明门限计算器根据谷本度量来计算汉明门限,所述谷本度量根据候选向量之一和查询的弹出计数。
此外,根据本发明的优选实施例,汉明测量器包括:XOR计算器和弹出计数器。XOR计算器计算在两个二进制向量之间的XOR,并且弹出计数器对XOR计算器的输出中的逻辑真值的出现次数进行计数。
而且,根据本发明的优选实施例,所述系统还包括:组块器(chunker)和组块(chunk)比较器。组块器根据候选向量的弹出计数来将候选向量分组到组块中。组块比较器拒绝不能包含与查询向量相似的候选向量的那些组块,并且向汉明测量器提供未被拒绝的组块。
此外,根据本发明的优选实施例,组块器包括:弹出计数器和向量分类器。弹出计数器对候选向量的弹出计数进行计数,并且向量分类器将候选向量分组到具有同质弹出计数的组块中。
此外,根据本发明的优选实施例,组块比较器包括:弹出计数器和汉明最小比较器(Hamming minimum comparator)。弹出计数器对组块的弹出计数进行计数。汉明最小比较器将组块的弹出计数与汉明门限进行比较,并且拒绝具有高于汉明门限的弹出计数的组块。
另外地,根据本发明的优选实施例,所述系统包括:聚类器和聚类比较器。聚类器通过聚类算法来将组块中的候选向量分组到具有原型质心的聚类中,并且聚类比较器选择具有与查询向量相似的质心的聚类。
而且,根据本发明的优选实施例,聚类算法是K-均值算法或K最近邻算法。
此外,根据本发明的优选实施例,聚类比较器包括:汉明测量器和汉明比较器。汉明测量器测量在查询向量和质心之间的汉明距离。汉明比较器仅选择在聚类和查询向量的汉明测量门限内具有质心的聚类。
另外地,根据本发明的优选实施例,所述系统是在联合存储器中实现的。
根据本发明的优选实施例,还提供了一种用于测量在二进制查询向量和多个二进制候选向量之间的相似性的方法。所述方法包括:存储二进制查询向量和多个候选向量;依据汉明距离执行谷本度量计算;以及将谷本门限转换为汉明门限。所述方法还包括:测量在候选向量和查询向量之间的汉明距离,以及选择其距查询向量的汉明距离小于或等于汉明门限的候选向量。
而且,根据本发明的优选实施例,转换包括:对所选择的符号在二进制向量中的一个中的出现次数进行计数,以及根据谷本度量来计算汉明门限,所述谷本度量根据候选向量之一和查询的弹出计数。
此外,根据本发明的优选实施例,测量包括:计算在两个二进制向量之间的XOR,以及对计算的输出中的逻辑真值的出现次数进行计数。
此外,根据本发明的优选实施例,所述方法还包括:根据候选向量的弹出计数来将候选向量分块到组块中,以及拒绝不能包含与查询向量相似的候选向量的那些组块并且提供未被拒绝的组块用于测量。
另外地,根据本发明的优选实施例,分块包括:对候选向量的弹出计数进行计数,以及分类以将候选向量分组到具有同质弹出计数的组块中。
而且,根据本发明的优选实施例,拒绝包括:对组块的弹出计数进行计数,以及将组块的弹出计数与汉明门限进行比较并且拒绝具有高于汉明门限的弹出计数的组块。
此外,根据本发明的优选实施例,所述方法还包括:通过聚类算法来将组块中的候选向量聚类到具有原型质心的聚类中,以及选择具有与查询向量相似的质心的聚类。
另外地,根据本发明的优选实施例,选择包括:测量在查询向量和质心之间的汉明距离,以及仅选择在查询向量和组块的汉明测量门限内具有质心的聚类。
附图说明
在权利要求书中特别指出并明确要求保护被视为本发明的主题。然而,当结合附图阅读时,通过参考以下详细描述可以最好地理解本发明(关于组织和操作方法二者以及其目标、特征和优点),在附图中:
图1是现有技术谷本测量系统的示意图;
图2A和2B是二进制向量的图示;
图3是汉明-谷本测量系统的优选实施例的示意图;
图4是在图3的系统中有用的谷本到汉明门限转换器的元件的示意图;
图5是汉明测量器的元件的示意图;
图6A、6B和6C是二进制向量的图示;
图7是谷本测量系统的替代优选实施例的示意图;
图8是在图7的系统中有用的组块器的元件的示意图;
图9是在图7的系统中有用的组块比较器的元件的图示;
图10A、10B和10C是聚类二进制向量的图示;
图11是谷本测量系统的替代优选实施例的示意图;
图12是在图11的系统中有用的聚类比较器的元件的示意图;
图13是在图3、7和11的系统中有用的联合存储器阵列的示意图;
图14A是在图3、7和11的系统中有用的联合存储器阵列中的未分类向量的图示;
图14B是在图7和图11的系统中有用的联合存储器阵列中的分块向量的图示;以及
图14C是在图11的系统中有用的联合存储器阵列中的分块和聚类向量的图示。
将理解的是,为了图示的简单和清楚起见,图中所示的元素不一定按比例绘制。例如,为了清楚起见,元素中的一些的尺寸可能相对于其它元素被放大。此外,在认为适当的情况下,可以在附图之中重复附图标记以指示对应的或类似的元素。
具体实施方式
在下面的详细描述中,阐述了许多特定细节以便提供对本发明的透彻理解。然而,本领域技术人员将理解的是,可以在没有这些特定细节的情况下实践本发明。在其它实例中,未详细地描述公知的方法、过程和组件,以避免使本发明难以理解。
申请人已经认识到,可以依据另一相似性搜索度量汉明距离h来计算谷本度量α,并且可以用简单的布尔运算来计算汉明距离h。因此,分子搜索可以被显著地加速,通常可以提高多个数量级。
申请人已经认识到,如下文所详述的,通过预先对候选向量C进行聚类(例如,通过k-均值算法),可以在多个候选向量C已经被测量之前予以拒绝(因为不相似)。然而,在谷本度量α的情况下,很难用k-均值进行聚类。申请人已经认识到,使用汉明距离h来查找k-均值的聚类质心是简单的布尔运算。在相同长度的两个二进制向量之间的汉明距离h被定义为对应的位位置(在其处符号是不同的)的数量。现在参考图2A,其示出了两个二进制向量q和r。二进制向量q具有7位的长度和值1010101。二进制向量r也具有7位的长度,但是具有1010010的值。可以看出的是,向量q和向量r的3个最低有效位位置包含不同的符号。向量q包含符号101,而向量r包含符号010。所有其它位位置包含相似的符号。这里,在向量q和向量r之间的汉明距离h为h(q,r)=3。因此,对总汉明距离有贡献的位位置是在对应的位位置中具有不相似符号的位位置。如果符号(在这种情况下为1或0)位于两个对应的位位置中,则它们对汉明距离没有影响。
将理解的是,布尔运算符XOR被定义为这样的运算符:当两个输入中仅一个为逻辑真时,其输出为逻辑真,但是当两个输入都为逻辑真或逻辑假时,则其输出不为逻辑真。这与我们应用到向量q和向量r中的对应位的逻辑相同:如果符号不同,则将它们添加到汉明距离h(如逻辑真),并且如果它们相似,则它们不会影响汉明距离h(如逻辑假)。
现在参考图2B,其示出了布尔XOR函数以及向量q和向量r的XOR。布尔运算符XOR被定义为这样的运算符:当两个输入中仅一个为逻辑真时,其输出为逻辑真,但是当两个输入都为逻辑真或逻辑假时,则其输出不为逻辑真。汉明距离h是符号(或在此情况下,位)不同的对应位的数量的计数。对二进制向量中出现逻辑真(在我们的情况下为1)进行计数的布尔函数被称为弹出计数。因此,汉明距离h可以被定义为向量q和向量r的XOR的弹出计数。这可以被表示为:
h(q,r)=pop(XOR(q,r)) (2)
其中,pop是弹出计数,并且XOR(q,r)是向量q和向量r的XOR。
可以依据汉明距离h和两个向量(向量A和向量B)的弹出计数来表示谷本系数α,如下所示:
其中,α(A,B)是在向量A和向量B之间的谷本系数,pop(A)和pop(B)分别是二进制向量A和B的弹出计数,并且h(A,B)是在如等式2中定义的向量A和向量B之间的汉明距离。
应当注意的是,汉明距离是一种“不相似”度量,这意味着当两个被比较的向量变得彼此更相似时,它们之间的汉明距离h的值趋向于从1到0。相反地,由于谷本系数为相似性度量,因此当两个被比较的向量变得彼此更相似时,谷本系数的值趋向于从0到1。
申请人已经认识到,弹出计数和XOR是可以被容易地计算出的两个非常简单的布尔运算。
在实践中,当化学家和生物学家进行相似性测量时,他们可以将结果与门限值进行比较。例如,当使用谷本系数时,可以基于诸如样本集大小和特征数量之类的许多因素来选择门限值。将理解的是,由于可以依据经测量的汉明距离hm来在两个二进制向量之间测量谷本系数αm,则可以依据汉明门限ht(其是这样的门限:低于该门限,两个二进制向量被视为相似)定义谷本门限αt(其是这样的αm值:在该值之上,两个二进制向量被视为相似)。
通过重新排列等式3中的项,汉明门限ht可以被如下表示:
其中,ht(A,B)是针对两个向量(向量A和向量B)之间测量的汉明距离hm的所计算的汉明门限值,而αt(A,B)是针对在相同的两个向量(向量A和向量B)之间测量的谷本系数αm的预定义的谷本门限αt。
因此,如申请人已经认识到的,可以依据汉明距离h和布尔弹出计数来计算谷本度量α,并且可以依据布尔XOR和弹出计数来计算汉明距离h本身。
现在参考图3,其是汉明-谷本测量系统20的优选实施例的图示,该汉明-谷本测量系统20包括谷本到汉明门限转换器21、汉明测量器22和汉明比较器24。在此实施例中,汉明-谷本测量系统20计算候选向量C是否与查询向量q相似,如由谷本门限值αt定义的。
谷本到汉明门限转换器21将谷本门限αt转换为汉明门限ht。汉明测量器22测量在查询向量q和候选向量C之间的汉明距离hm,并且汉明比较器24仅选择这样的候选向量C:其到查询向量q的经测量的汉明距离hm小于或等于汉明门限ht。
现在参考图4,其示出了谷本到汉明门限转换器21的元件。转换器21包括弹出计数器26和汉明门限计算器27。弹出计数器26分别计算查询向量q和候选向量C的弹出计数pop(q)和pop(C)。汉明门限计算器27根据等式4计算ht(q,C)。
现在参考图5,其示出了用于实现等式2的汉明测量器22的元件。测量器22包括另一弹出计数器26和XOR计算器29。XOR计算器29将查询向量q和候选向量C的XOR输出到弹出计数器26。弹出计数器26输出查询向量q和候选向量C的XOR的弹出计数,其等于在查询向量q和候选向量C之间的汉明距离hm。
返回到图3,汉明比较器24然后仅选择这样的候选向量C:其经测量的汉明距离hm(q,Ci)小于或等于汉明门限ht(q,Ci)。
申请人已经认识到,汉明门限ht是pop(q)和pop(C)的函数,并且pop(q)是恒定的,但是pop(C)可以变化。因此,系统5可以针对每个连续的查询向量和候选向量对来重新计算新的ht值。这在计算上是昂贵的。
申请人已经进一步认识到,通过将具有相同弹出计数的所有候选向量C一起分组到组块D中,每个组块Dj可以被认为是具有弹出计数pop(Dj),该弹出计数是被包含在组块Dj中的所有候选向量Ci的弹出计数。汉明门限计算器27可能仅需要根据等式4为每对查询向量q和组块Dj计算一个汉明门限ht(q,Dj)。
申请人已经进一步认识到,通过允许整个组块的候选向量在测量之前被拒绝,对候选向量进行分块可以使用谷本度量来加速相似性搜索。
将理解的是,任何两个二进制向量之间的最小汉明距离hm将是当所有对应的位位置都包含相似的符号或位时。现在参考图6A,其示出了相同的向量,向量q和向量r1。在此示例中,查询向量q和候选向量r1是相同的,并且因此具有为零的汉明距离hm(q,r1)。将理解的是,仅当pop(q)等于pop(r1)时,汉明距离hm(q,r1)的零值才可能出现,然而,相等的pop(q)和pop(r1)不能保证最小的汉明距离hm。现在参考图6B,其示出了两个向量,向量q和向量r2。由于向量q和向量r2在对应的位位置中不具有相似的符号,因此汉明距离hm(q,r2)是最大值。在这种情况下,由于向量是6位向量,因此hm为6。
将理解的是,为了使汉明距离hm为0,则如果在向量q的任何位位置中存在符号,则在向量C的对应的位位置中将存在相似的符号。因此,对于汉明距离hm为0,在向量q和C中必须存在相同数量的1,换言之,它们具有相等的弹出计数。这在图6A中是这种情况。然而,在图6C中,向量q具有为3的弹出计数,并且向量r3具有为2的弹出计数。在此示例中,在向量q中将总是存在至少一个位位置包含1,而在向量r3中的对应的位位置中包含0。因此汉明距离hm(q,r3)不能小于1。
在向量q和向量r3之间的最低汉明距离hm可以被表示为:
hmin(q,r3)=|pop(q)–pop(r3)| (5)
因此,如果pop(q)和pop(Dj)之间的差大于定义的汉明门限ht,则组块Dj中没有任何候选向量Ci可能与查询向量q相似,并且因此组块Dj可以被先验地拒绝。
现在参考图7,其示出了系统的特定实施例,这里被标记为5',其实现了候选向量C的分块。除了系统5的谷本到汉明门限转换器21、汉明测量器22和汉明比较器24之外,系统5'还包括组块器30、组块比较器32、以及组块和聚类仓库23。
组块器30可以将所有候选向量C分组到同质弹出计数组块D中。谷本到汉明门限转换器21可以针对每对候选向量q和组块Dj将谷本门限αt转换为汉明门限ht。使用等式5,组块比较器32可以仅选择可能包含候选向量Ci的组块Dj。对于由组块比较器32选择的组块Dj,汉明测量器22可以测量在当前组块Dj中的每个候选向量Ci与上述查询向量q之间的汉明距离hm。汉明比较器24可以仅选择这样的候选向量Ci:其到查询向量q的经测量的汉明距离hm小于或等于汉明门限ht。针对所有组块Dj和每个组块Dj内的所有向量Ci重复此过程。
现在参考图8,其示出了组块器30的元件。组块器30包括另一弹出计数器26和向量分类器33。对于组块器30,弹出计数器26可以计算每个候选向量Ci的弹出计数pop(Ci),并且向量分类器33可以将候选向量Ci分类到组块Dj中。组块Di和pop(Di)可以被存储在组块和聚类仓库23中,如图7所示。
现在参考图9,其示出了包括另一弹出计数器26和汉明最小比较器35的组块比较器32的元件。如上面所讨论的,如果在pop(q)和pop(Dj)之间的差小于或等于ht,则组块Dj可能包含与查询向量q相似的候选向量Ci。汉明最小比较器35可以仅选择具有小于或等于汉明门限ht的pop(q,Dj)的那些当前组块Dj。
将理解的是,通过将具有同质弹出计数的候选向量C分组到组块D中,搜索速度将提高。这是由于消除了针对具有相同pop(q)和pop(Ci)的向量对的重复的汉明门限hm计算,以及消除了对组块D的测量,这些组块D可能无法包含与查询向量q相似的候选向量C。
申请人已经认识到,在组块比较器32可能已经选择用于测量的组块D中的候选向量C中,仅一些而不是所有候选向量C将与查询向量q相似。申请人已经认识到,在组块D内对候选向量C进行聚类可以进一步减少要被测量的候选向量的数量,并且因此可以进一步减少用于搜索的处理时间。
现在参考图10A、10B和10C,其示出了在组块D内对候选向量C进行聚类的步骤。图10A示出了具有候选向量C(被标记为Dj的二维空间内的点)的组块Dj。如可以看出的,候选C贯穿空间分布;然而,它们没有贯穿空间均匀分布。
假设候选C似乎在图10A的空间内是聚类的,则可以使用聚类算法(例如,K-均值或KNN(K最近邻))将候选向量C聚类到聚类E中。聚类算法可以将组块Dj内适度靠近每个聚类Ek的均值或质心Fk的那些候选C进行分组。如图10B所示,取决于聚类算法以及如何设置其值,可以存在多个聚类Ek。每个质心Fk可以代表其聚类Ek,并且可以具有作为聚类Ek内的候选C的原型的代表性二进制向量值。
图10C示出了如何利用质心F来确定哪些聚类E可能被拒绝。图10C示出了从查询向量q到每个质心Fk的箭头。箭头表示每个质心Fk的汉明距离hm(q,Fk)。注意,聚类E中的一些聚类相对靠近查询q,而被标记为E3的一个聚类则远得多。
如果汉明距离hm(q,Fk)大于ht,则整个聚类Ek可以被拒绝,这是由于大的汉明距离hm(q,Fk)指示整个聚类不能包含与查询向量q相似的候选向量Ci。为了确保这为真,聚类算法可能需要紧的聚类,使得仅非常靠近质心Fk的一个的那些候选C可以被包括在聚类Ek中。
现在参考图11,其示出了系统的特定实施例,这里被标记为5”,其实现了候选向量C的聚类。除了组块器30、谷本到汉明门限转换器21、组块比较器32、汉明测量器22、汉明比较器24以及组块和聚类仓库23之外,系统5”还包括聚类器36和聚类比较器38。如前所述,组块器30可以将所有候选向量Ci分类到同质弹出计数组块Dj中。聚类器36可以使用如上文所描述的聚类算法来将组块Dj内的候选向量Ci分组到聚类Ek中。谷本到汉明门限转换器21可以针对每个组块Dj将谷本门限αt转换为适当的汉明门限ht。
如在先前的实施例中,组块比较器32可以计算每个组块Dj是否可能包含有用的候选向量Ci,并且可以输出所选择的组块Dj的索引值j。聚类比较器38可以查看所选择的组块Dj,并且可以选择可能包含有用的候选向量Ci的那些聚类Ek。聚类比较器38可以输出所选择的聚类Ek的索引k。汉明测量器22和汉明比较器24现在可以对减少的候选向量Ci集合进行操作,测量在所选择的聚类Ek中的每个候选向量Ci和查询向量q之间的汉明距离hm,并且将候选向量Ci的汉明测量结果hm与汉明门限ht进行比较,如先前所描述的。针对所有所选择的聚类Ek重复此过程。
现在参考图12,其示出了包括另一汉明测量器22和另一汉明比较器24的聚类比较器38的元件。汉明测量器22可以测量在查询向量q和每个聚类质心Fk之间的汉明距离hm(q,Fk)。汉明比较器24可以将hm(q,Fk)与ht(q,Dj)进行比较,并且如果hm(q,Fk)小于或等于ht(q,Dj),则汉明比较器24可以输出聚类索引k。
将理解的是,通过排除其质心Fk与查询向量q不相似的聚类Ek,搜索速度将进一步提高,这是由于正在被测量的候选向量的数量被进一步减少。
上文所描述的实施例可以在任何合适的计算设备上被实现。
申请人已经认识到,布尔函数容易在联合处理单元(APU)中的联合存储器阵列上实现,并且可以在相对较少的存储器周期中被执行。此外,可以跨存储在联合存储器阵列列中的多个(32k、64k、128k……)二进制向量并行地执行布尔函数。布尔函数和在联合存储器上实现的大规模并行处理可以一起提供处理时间的多个数量级的提高和计算复杂性的显著降低。
现在参考图13,其示出了包括多个位线处理器42的联合存储器阵列40和作用于存储器阵列40的控制器43。位线处理器42可以在阵列40中按列和行布置,其中,位线处理器42的每一列可以对来自大量多个候选向量Ci之中的单个候选向量Ci进行操作,并且其中,位线处理器42的每一行可以对每个候选向量Ci的相同位进行操作。每个位线处理器42可以占据可以具有R行(每行包含1位寄存器)的存储器的一部分44。位线处理器中的每个寄存器可以具有不同的功能:寄存器1和2可以是存储要被操作的数据(例如,候选向量Ci或查询向量q)的单个位的数据寄存器,而寄存器3至R可以是用于布尔函数和计算的布尔寄存器。因此例如,可以将候选向量C1和查询向量q的位1分别存储在列1中的位线处理器421,1的寄存器1和2中;可以将位2存储在列1中的位线处理器421,2的寄存器1和2中;等等。
每个位线处理器42的每个1位寄存器(在每行中)可以通过字线45被连接到所有行中的对应的寄存器。字线45被连接到控制器43。控制器43可以同时激活一行中的所有对应的寄存器。这是在联合存储器阵列40上进行大规模并行处理的基础。
另外,每个位线处理器42中的寄存器经由位线46被垂直连接在一起。使用字线45和位线46的组合,控制器43可以同时激活单个寄存器或多个寄存器。当在候选向量Ci和查询q之间执行操作时,控制器43可以同时激活存储每个向量的所有行,从而一次对向量的所有位执行相同的功能,每个操作在其位线处理器内执行。通过激活多条位线46,可以并行操作多个位。
包括位线处理器42和控制器43二者的联合处理单元APU(未示出)可以执行布尔函数。例如,在存储器周期1上,控制器43可以激活寄存器1的行(存储候选向量Ci)。这将使得位线46接收寄存器1的数据。在周期2上,控制器43可以激活寄存器5的行以在位线46上接收数据。在周期3上,控制器43可以对寄存器2(其存储查询向量q)重复该过程,并且可以仅当要被写入的数据与已经存储在其中的数据不同时,才激活寄存器5以在位线46上接收数据。这在来自寄存器1的内容和来自寄存器2的内容之间创建了布尔XOR。控制器43可以对存储在列中的向量的所有位并行地执行此操作,但是也可以通过操纵字线45和位线46来对所有并行列执行此操作。
将理解的是,通过将多个向量存储在并行列中,可以快速并且对多个向量执行计算和布尔函数。
申请人已经认识到,图3、7和11的实施例可以在联合存储器(例如,关于图13描述的)中实现,并且由于图13的APU的大规模并行处理,相似性搜索时间可以增加许多数量级。
现在参考图14A、14B和14C,其示出了存储在联合存储器40的并行列中的候选二进制向量C。在图3的实施例中,在候选向量C和查询向量q之间测量汉明距离h。图14A示出了存储在联合存储器的列中的候选向量C。没有示出控制器以及单独的行和位线处理器,但是在此示例中,如上面所描述的,候选向量C的每个位被存储在每个位线处理器的寄存器1中。控制器将同时激活候选向量C的所有位,并且还对多个候选向量C和查询向量q并行地执行所有计算和操纵。
在图7的实施例中,具有相同弹出计数的候选向量C被分组到组块D中。每个组块然后被存储在存储器的一部分中。图14B示出了候选向量如何仍然被存储在联合存储器中的并行列中,但是被组织在组块D中。通过操纵字线和位线,控制器可以对组块D执行大规模并行处理。如先前所提到的,这减少了需要被执行的汉明门限计算的数量,以及允许候选向量的整个组块被忽略。
在图11的实施例中,组块中的候选向量被分组到各自具有质心F的聚类E中。图14C示出了组块D内的候选向量C的聚类E。再次,通过操纵字线和位线,控制器43可以对单独的聚类E进行操作以提高搜索速度。
尽管本文已经示出和描述了本发明的某些特征,但是本领域的普通技术人员现在将想到许多修改、替换、改变和等同物。因此,应当理解的是,所附权利要求旨在涵盖落入本发明的真实精神内的所有这样的修改和改变。