用于在关联存储器中进行最小值-最大值计算的方法

文档序号:48539 发布日期:2021-09-28 浏览:39次 >En<

阅读说明:本技术 用于在关联存储器中进行最小值-最大值计算的方法 (Method for minimum-maximum calculation in associative memory ) 是由 M·拉泽 于 2018-08-16 设计创作,主要内容包括:一种用于在关联存储器中查找多个数之中的极值的方法,包括:针对多个数中的每个数创建展开表示(SOR),将每个SOR存储在关联存储器阵列的列中,以及对关联存储器阵列的行执行水平按比特布尔运算以产生具有极值的极端SOR(ESOR)。一种用于查找极值的系统,包括:关联存储器阵列,其用于存储多个数,每个数能够存储在列中;展开表示(SOR)创建器,其用于针对多个数中的每个数创建SOR,并且将每个SOR存储在关联存储器阵列的列中;以及极端SOR(ESOR)查找器,其用于使用对存储SOR的比特的、关联存储器阵列的行进行的水平按比特布尔运算来查找极值。(A method for finding an extremum among a plurality of numbers in an associative memory, comprising: creating an expanded representation (SOR) for each of a plurality of numbers, storing each SOR in a column of an associative memory array, and performing a horizontal bitwise boolean operation on rows of the associative memory array to produce an extreme SOR having an extreme value (esor). A system for finding an extremum comprising: an associative memory array for storing a plurality of numbers, each number capable of being stored in a column; an expanded representation (SOR) creator for creating SORs for each of the plurality of numbers and storing each SOR in a column of the associative memory array; and an extreme SOR (esor) finder for finding an extremum value using a horizontal bitwise boolean operation on a row of the associative memory array storing bits of the SOR.)

用于在关联存储器中进行最小值-最大值计算的方法

本申请是2018年8月16日提交的名称为“用于在关联存储器中进行最小值-最大值计算的方法”、申请号为201810933822.3的分案申请。

相关申请的交叉引用

本申请要求于2017年8月29日提交的美国专利申请15/688,895的优先权,其通过引用方式并入本文。

技术领域

本发明总体上涉及关联存储器,并且特别地涉及在大数据集中查找极值的通常高效的方法。

背景技术

在数据集中查找极值(最大值或最小值)是常见的任务。于2015年7月16日公布、于2018年1月2日以美国专利9,859,005发布、由本发明的共同受让人提交并通过引用方式并入本文的美国专利公开第US2015/0200009号(题为“MEMORY DEVICE(存储器设备)”)描述了在恒定时间O(1)内在存储器设备中的大数据集中查找极值的方法。无论数据集大小如何,计算时间大致恒定。

美国专利公开第US 2015/0200009号中定义的现有技术方法一次并发地对数据集中的所有项的一个比特进行运算,以MSB(最高有效比特)开始并且以LSB(最低有效比特)结束。这种方法的计算时间与表示数据集中的数的比特数量(其可以是16比特、32比特等)成比例。

发明内容

根据本发明的优选实施例,提供了一种用于在关联存储器中查找多个数之中的极值的方法。该方法包括针对多个数中的每个数创建展开表示(SOR),将每个SOR存储在关联存储器阵列的列中,以及对关联存储器阵列的行执行水平按比特布尔运算以产生具有极值的极端SOR(ESOR)。

此外,根据本发明的优选实施例,数N的SOR包括连续的零的序列,接着是连续的K个一的序列,其中K=N+1。

更进一步地,根据本发明的优选实施例,具有值N的数的SOR包括连续的一的序列,接着是连续的K个零的序列,其中K=N+1。

另外,根据本发明的优选实施例,布尔运算是以下中的一个:OR运算和AND运算。

此外,根据本发明的优选实施例,该数是较大的多比特数的比特聚合。

更进一步地,根据本发明的优选实施例,第一比特聚合包括多比特数的最高有效比特,并且最后一个比特聚合包括多比特数的最低有效比特。

此外,根据本发明的优选实施例,多比特数表示多个项之中的项。

此外,根据本发明的优选实施例,该项中的每个项被指派初始候选资格指示。

更进一步地,根据本发明的优选实施例,创建SOR仅针对具有候选资格指示的项。

另外,根据本发明的优选实施例,该方法还包括将ESOR与具有候选资格指示的项的每个SOR进行比较,以提供相等或不相等的相似性指示;并且从具有不相等相似性指示的每个数中移除所述候选资格指示。

此外,根据本发明的优选实施例,每个较大的多比特数具有多个比特聚合,并且该方法还包括针对多比特数的每个所述比特聚合,重复创建、存储、执行、比较以及移除,直到最后一组聚合为止,由此仅向极端数提供候选资格指示。

根据本发明的优选实施例,提供了一种用于查找多个数之中的极值的系统,该系统包括:关联存储器阵列,其用于存储多个数,每个数能够存储在列中;展开表示(SOR)创建器,其用于针对多个数中的每个数创建SOR并且将每个SOR存储在关联存储器阵列的列中;以及极端SOR(ESOR)查找器,其用于使用对存储SOR的比特的、关联存储器阵列的行进行的水平按比特布尔运算来查找极值。

此外,根据本发明的优选实施例,具有值N的数的SOR包括连续的零的序列接着是连续的K个一的序列,或者连续的一的序列接着是连续的K个零的序列,其中K=N+1。

此外,根据本发明的优选实施例,布尔运算是OR运算或AND运算。

更进一步地,根据本发明的优选实施例,该数是较大的多比特数的比特聚合。

另外,根据本发明的优选实施例,第一比特聚合包括多比特数的最高有效比特,并且最后一个比特聚合包括多比特数的最低有效比特。

此外,根据本发明的优选实施例,多比特数表示多个项之中的项。

更进一步地,根据本发明的优选实施例,该系统还包括:存储器阵列的行,其用于存储针对与SOR中的每个SOR存储在同一列中的每个项的初始候选资格指示;以及极端查找器,其用于将ESOR与每个SOR进行比较,并且从与ESOR具有不同值的每个SOR中移除候选资格指示。

附图说明

被视为本发明的主题在说明书的结论部分中特别指出并清楚地要求保护。然而,当结合附图阅读时,通过参考以下

具体实施方式

,可以关于组织和操作方法以及其目的、特征和优点最好地理解本发明,其中:

图1是根据本发明的优选实施例的半字节的展开表示(SOR)的示例性表;

图2是根据本发明的优选实施例构造和操作的存储器设备的示意图;

图3是根据本发明的优选实施例构造和操作的图2的存储器设备的区段的示意图;

图4是根据本发明的优选实施例的存储在图2的存储器设备的区段中的数据的示意图;

图5是根据本发明的优选实施例的形成图2的设备的一部分的极端查找器如何在存储器设备的区段中的行中查找值“1”的存在的示意图;

图6是根据本发明的优选实施例的图5的极端查找器如何向所有SOR通告ESOR的示意图;

图7是根据本发明的优选实施例的图5的极端查找器如何将SOR的比特与ESOR的比特进行比较的示意图;

图8是根据本发明的优选实施例的极端查找器如何检查是否SOR的所有比特等于ESOR的比特的示意图;

图9是示出根据本发明的优选实施例的用于在大数据集中查找极值的、图5的极端查找器的操作的流程图;

图10是在其中搜索最大值的示例性数据集的项的示意图;以及

图11和图12是在图10的示例性数据集上采用图9的流程的结果的示意图。

应当理解,为了说明的简单和清楚,附图中所示的元素不一定按比例绘制。例如,为清楚起见,元素中的一些元素的尺寸可能相对于其他元素被夸大。此外,在认为适当的情况下,可以在附图之间重复附图标记以指示对应或类似的元素。

具体实施方式

在以下具体实施方式中,阐述了许多具体细节以便提供对本发明的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践本发明。在其他实例中,没有详细描述公知的方法、过程和组件,以免模糊本发明。

申请人已经意识到,与先前的方法相比,通过一次并发地对若干比特进行运算(称为“比特聚合”),可以进一步改进在大数据集中查找极值的计算时间。在每个步骤中,一次查看若干比特,而不是如在本领域中已知的方法中那样一次查看一个比特。因此,计算可以与聚合的数量而不是与比特数量成比例。

比特聚合的大小可以是可配置的。例如,十进制数X=229的二进制表示是11100101,这是一个8比特二进制数。8比特二进制数可以分为两个大小为4的比特聚合(即,半字节)。在这种情况下,数X可以由1110和0101表示。

每个半字节可以具有在0和15之间的16个值中的一个:

0000→0×23+0×22+0×21+0×20=0+0+0+0=0 示例1

0101→0×23+1×22+0×21+1×20=0+4+0+1=5 示例2

1111→1×23+1×22+1×21+1×20=8+4+2+1=15 示例3

申请人已经意识到,每个比特聚合可以以特殊一元编码来表示,这可以提供关于哪个值在大数据集中是极端(最大或最低)的快速确定。这种特殊一元编码在本文中称为“展开表示”(SOR)。可能的半字节SOR的优选实施例在现在参考的图1中示出。

表100提供列110中的4比特聚合(半字节)的可能值,以及列120中的每个值的可能SOR。SOR中的比特数量可以等于比特聚合的可能值的数量,并且在表100中,SOR可以由16个比特表示:X15X14X13X12X11X10X9X8X7X6X5X4X3X2X1X0(Xi=0/1)。可以理解,特定计算中的所有SOR的SOR大小可以是相同的。

在本发明的优选实施例中,SOR的结构使得其由连续的零的序列接着是连续的一的序列构成,其中连续的一的序列之间不被零中断,并且连续的零的序列之间不被一中断。值K是1的序列开始的位置,并且其值是比特聚合表示的数之后的数。具体地,如果比特聚合的值是x,则K=x+1。

可以理解,SOR的结构可以使得能够使用以下简单的水平布尔运算(对行的比特)来确定比特聚合的最大值/最低值:例如,用于查找最大值的单个OR运算,用于在具有上文定义的结构的SOR上查找最小值的单个AND运算等。还可以理解,在优选实施例中,更大的SOR可以有更多比特具有值1,提供更大的K,并且更小的SOR有更多比特具有值0。例如,比特聚合0110,0000-0000-0111-1111(K=7)大于比特聚合0011-0000-0000-0000-1111(K=4)。可以理解,不能使用简单的布尔运算来比较原始比特聚合。

用于从半字节创建具有上文定义的结构的SOR的过程由以下等式描述。每个等式描述了通过对半字节的比特Nz执行AND和OR布尔运算来在SOR中创建比特。

X0=1

X1=((N0+N1)+N2)+N3

X2=((N1)+N2)+N3

X3=((N0&N1)+N2)+N3

X4=N2+N3

X5=(((N0+N1)&N2)+N3

X6=((N1)&N2)+N3

X7=((N0&N1)&N2)+N3

X8=N3

X9=((N0+N1)+N2)&N3

X10=(N1+N2)&N3

X11=((N0&N1)+N2)&N3

X12=N2&N3

X13=(((N0+N1)&N2)&N3

X14=((N1)&N2)&N3

X15=((N0&N1)&N2)&N3

其中Xy是SOR 120的比特y并且Nz是半字节的比特z。可以理解,所有项的SOR的创建可以最多采取四个步骤。最复杂的SOR计算可以包括半字节的所有比特,例如,上文描述的X1的计算,其要求半字节的所有比特。SOR的其他比特的计算可以采取三个步骤,如X2的情况,如X4的情况可以采取两个步骤,如X8的情况可以采取一个步骤。

现在参考的图2是存储器设备200的示意图,存储器设备200包括极端查找器210和关联存储器阵列220。极端查找器210还包括标记矢量212、SOR创建器214和ESOR查找器216,标记矢量212可以提供对在存储器阵列220中查找到的所有极值的指示。关联存储器阵列220还可以包括区段230。

关联存储器阵列220可以是任何多用途关联存储器设备,例如,以下中描述的存储器设备:2012年8月7日发布的美国专利第8,238,173号(题为“USING STORAGE CELLS TOPERFORM COMPUTATION(使用存储单元执行计算)”);2015年5月14日公布的美国专利公开第US2015/0131383号(题为“NON-VOLATILE IN-MEMORY COMPUTING DEVICE(非易失性存储器内计算设备)”);2016年8月16日发布的美国专利第9,418,719号(题为“IN-MEMORYCOMPUTATIONAL DEVICE(存储器内计算设备)”)以及2017年1月31日发布的美国专利第9,558,812号(题为“SRAM MULTI-CELL OPERATIONS(SRAM多单元操作)”),这些专利全部转让给本发明的共同受让人并且通过引用方式并入本文。

现在参考的图3示出了关联存储器阵列220的区段230的结构。区段230包括按行和列布置的关联存储器单元,并且整个关联存储器阵列220包括多个区段230。

极端查找器210可以使用上文描述的等式来构建SOR 120,并且可以将SOR 120存储在存储器阵列220中。极端查找器210可以将每个SOR 120存储在存储器阵列220的不同列中,将SOR 120的每个比特存储在不同的区段230中。极端查找器210可以利用每个区段230的附加行来存储计算期间所需的附加数据。

图4-8示出了在对关联存储器阵列220的区段230中存储的数据进行运算时由极端查找器210使用的基本运算。每个运算可以是本文所述的整体方法的一部分。一些运算可以对存储在区段的行中的数据水平地完成;一些运算可以对存储在区段的列中的数据垂直地完成;并且一些运算可以对存储在若干区段的列中的数据垂直地完成。可以理解,水平运算和垂直运算两者都可以对多个区段并发地执行。

现在参考的图4示出了存储在关联存储器阵列220的区段230中的数据。极端查找器210可以将每个SOR的所有比特存储在关联存储器阵列220中的专用列中,将SOR的每个比特存储在区段230中的行B中。例如,16比特SOR可以存储在16个区段的行B中。对于更大的比特聚合,可以使用更大的SOR。

极端查找器210可以将所有SOR的比特j存储在区段j的行B中。在列SOR-0中,极端查找器210可以存储SOR0的比特j,称为Bit-0j。在列SOR-1中,极端查找器210可以存储SOR1的比特j,称为Bit-1j等。通常,极端查找器210可以将所有SOR 230的所有比特x存储在区段x中,存储在同一行B中,存储在不同的列SOR-y中。

图5示出了极端查找器210如何可以在区段中的行B中查找值“1”的存在。极端查找器210可以在存储在每个区段的行B中的所有比特j之间执行水平按比特OR,并且可以将按比特OR的结果存储在区段j的专用列中,称为极端SOR(ESOR)。可以并发地对存储SOR的比特的所有区段执行水平按比特OR。可以理解,当使用不同的SOR结构时,可以应用不同的布尔运算。

可以理解,区段j中的最大可能值是1,并且如果SOR中的至少一个SOR在区段j中具有值1,则对区段j的行B进行按比特OR的结果将是1。ESOR指示在至少一个SOR的比特j中1的存在。类似地,区段j中的最低可能值是0,并且如果SOR中的至少一个SOR在区段j中具有值0,则对区段j的行B进行按比特AND的结果将是0。

图6示意性地示出了极端查找器210如何可以向所有SOR通告ESOR。极端查找器210可以将ESOR的比特j的值ESOR-j写入区段j的行L的所有列中。可以理解,存储ESOR的比特j的行L是与存储SOR的比特j的行B不同的行。可以理解,通告同时对区段j的所有列进行,并且可以对存储SOR的比特的所有区段并发地执行。

图7示意性地示出了极端查找器210如何可以比较SOR和ESOR的比特。极端查找器210可以在SOR m的存储在行B中的每个比特j(Bit-mj)与ESOR的存储在行L中的比特j(ESOR-j)之间执行按比特XNOR运算。XNOR运算的结果可以存储在区段j的行XN中,不同于存储Bit-mj的行B和存储ESOR-j的行L。可以理解,如果比特相等,则XNOR的结果将为1,并且如果比特不同,则XNOR的结果将为0。还可以理解,可以并发地对所有区段执行XNOR运算,并且可以针对每个SOR的每个比特提供比特Bit-mj是等于还是不同于ESOR-j的指示。

图8示意性地示出了极端查找器210如何可以检查SOR的所有比特是否等于ESOR的比特。只有当所有比特相等时,整个SOR才等于整个ESOR。在前面的步骤中,将SOR的每个比特与ESOR的相关比特进行比较。为了确定整个SOR是否等于ESOR,极端查找器210可以在对存储SOR的比特的所有区段进行XNOR运算的结果之间执行按比特AND。AND运算的结果可以提供SOR是否等于ESOR的指示——如果按比特AND的值为0,则SOR不同于ESOR(即,更小),并且如果值为1,则SOR等于ESOR。

图9是描述极端查找器210可以执行以用于在大数据集中查找极值的步骤的流程图900。

在步骤910中,极端查找器210可以将数据集中的所有项分为比特聚合,第一比特聚合具有MSB比特,并且最后一个比特聚合具有LSB比特。极端查找器210还可以将标记矢量的比特初始化为1,指示数据集中的所有项最初都是最大值的候选。

在步骤920中,SOR创建器214可以创建每个项的比特聚合的SOR,如上文详述的,并且可以将每个创建的SOR写入关联存储器阵列220的列中,将SOR的每个比特写入专用区段中,如图4中描述的。

在步骤930中,ESOR查找器216可以通过对存储所有SOR的比特的所有B行并发地执行水平按比特布尔运算来计算最大/最低SOR(ESOR),如图5中描述的。布尔运算可以对SOR的比特中的每个比特并发地计算,并且按比特OR的结果可以是最大或最低SOR(ESOR)。

在步骤940中,极端查找器210可以将ESOR分发给所有SOR,如图6中描述的。极端查找器210可以将ESOR j分发到区段j的不同行的所有列中。可以并发地向所有SOR的所有比特通告ESOR。

在步骤950中,极端查找器210可以如图7中所描述的使用垂直XNOR在每个区段内并且如图8中所描述的使用垂直AND在区段之间将每个SOR与ESOR进行比较。如果在区段之间进行垂直AND的结果为1,则SOR等于ESOR。

在步骤960中,如果在步骤940中执行的垂直AND的结果为0,指示SOR不等于ESOR,则极端查找器210可以从(图2的)标记矢量212中移除候选。为了移除候选,极端查找器210可以将在相关项的标记中的比特的值改变为0。

在步骤970中,极端查找器210可以检查所处理的比特聚合是否为最后一个比特聚合。如果不是最后一个,则极端查找器210可以对下一比特聚合重复步骤920到960。如果处理了最后一个比特聚合,则极端查找器210可以在步骤980中完成该方法,并且所有剩余的候选(标记矢量中具有值1的项)可以是具有最大值的项。

现在参考的图10提供了在其中搜索最大值的简化示例性数据集中的项的表1000。列1005是数据集的项的运行索引以便于解释。列1010提供数据集的项的十进制值:6138,2868,64390,64435,50006和64192。可以理解,该数据集中的最大值是具有值64435的项4。列1020提供每个项的二进制表示,其中将二进制表示分为半字节。

列1030提供每个项的标记的初始值。所有项的标记首先被初始化为1,指示每个项可能潜在地具有最大值并且被初始化为候选。预期在计算结束时,只有最大值的标记将保持为1,而所有其他值的标记将变为0。在该示例中,只有一个项具有最大值,但在另一种情况下,可能有几个项具有最大值。在这种情况下,所有具有最高值的项的标记都将是1。

现在参考的图11和图12提供了对(图10的)表1000的项采用(图9的)流程900的结果。计算的输入和输出由表描述。表1100提供了半字节1的计算细节,表1200提供了半字节2的计算细节,表1300提供了半字节3的计算细节,并且表1400提供了半字节4的计算细节。所有表的结构是相同的。列1110提供半字节的值,列1120提供SOR的值(图9中的流程900的步骤920);项1125、1225、1325和1425提供每个半字节的ESOR的值(步骤930);列1140提供分发的ESOR的值(步骤940)并且列1130提供在SOR与ESOR之间进行比较的结果(步骤950)。列1150提供在开始计算当前半字节之前标记的值,并且列1160提供在完成计算当前半字节之后标记的值。

可以理解,在表1100中针对第一个半字节计算的ESOR 1125的值是1111-1111-1111-1111(在表中所有项之间进行按比特OR的结果)。将ESOR分发到表1100中每个项的列1140。SOR与ESOR之间的比较导致三个SOR与ESOR不同(项1、2和5),项1、2和5随后在对第二个半字节开始之前从标记矢量中被移除。

类似地,在表1200中针对第二个半字节计算的ESOR 1225的值是0000-1111-1111-1111,并且SOR与ESOR之间的比较导致一个SOR不同于ESOR(项6),项6在对第三个半字节开始之前从标记矢量中被移除。表1300中第三个半字节的ESOR 1325的值是0000-1111-1111-1111,并且比较导致在对最后一个半字节开始之前项3从标记矢量中移除。表1400中最后一个半字节的ESOR 1425是0000-0000-0000-1111,它等于项4,项4在数据集中显现为最大项。

可以理解,数据集中的项的大小可以是任何大小,例如,使用大小为4的比特聚合的4比特、8比特、12比特、16比特等,或使用大小为5的比特聚合的5比特、10比特、15比特、20比特等等。可以将SOR的大小和创建SOR的过程调整为比特聚合的实际大小。可以理解,上文描述的最小值/最大值运算的计算时间可以与比特聚合的数量成比例。

可以理解,通过从值15减去半字节的值创建SOR而不是直接从半字节创建SOR,可以采用使用上文定义的SOR的结构和布尔OR的相同过程来在大数据集中查找最小值。在这种情况下,标记矢量可以保持对数据集中最小项的指示。可替代地,可以使用布尔AND运算查找到最低值。

在本发明的替代实施例中,使用相同的SOR结构,可以使用NOT和AND运算的组合查找到最大值。以下布尔运算可以用于查找最大值:对行中比特的所有取反(NOT)值之间的AND运算结果进行NOT运算。

在替代实施例中,SOR的结构可以是连续的一的序列,接着是连续的零的序列。使用此结构,可以使用布尔AND运算查找到最大值。

在本发明的另一替代方案中,SOR可以由提供特定特性的任何其他一元表示来表示。一个特性可以是每个数具有唯一表示。另一特性可以是在较小数的SOR中具有特定值(例如,“1”)的比特是在较大数的SOR中具有相同值的比特的子集,使得较大数和较小数中的比特的值中存在重叠。

可以理解,SOR的结构可以确定为了查找极值所需的布尔运算。在一些结构中,使用布尔OR可以查找最大值,而使用布尔AND可以查找最低值,同时使用其他结构,布尔OR可以查找最低值,而使用布尔AND可以查找最大值,等等。

在本发明的替代实施例中,SOR的值可以为空,指示项不再是候选。

在本发明的优选实施例中,可以并发地执行对不同区段的计算。另外,SOR创建可以与在所有比特j之间进行水平按比特OR并发地执行,从而提供改进的计算时间。

在本发明的替代实施例中,极端查找器210可以仅在数据集的项的子集中查找最小值或最大值。在这种情况下,流程900可以接收仅项的一部分标记有值“1”的矢量,应该从该矢量查找到最小值/最大值作为输入矢量。输入矢量中的初始值“1”可以指示相关的初始候选是最小值/最大值。虽然本文已经说明和描述了本发明的某些特征,但是本领域普通技术人员现在将想到许多修改、替换、改变和等同物。因此,应该理解,所附权利要求旨在覆盖落入本发明的真正精神内的所有这些修改和变化。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:可重新配置数字信号处理(DSP)向量引擎

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类