CN101256479A - 识别矢量中的有效位的方法和系统 - Google Patents
识别矢量中的有效位的方法和系统 Download PDFInfo
- Publication number
- CN101256479A CN101256479A CNA2008100740871A CN200810074087A CN101256479A CN 101256479 A CN101256479 A CN 101256479A CN A2008100740871 A CNA2008100740871 A CN A2008100740871A CN 200810074087 A CN200810074087 A CN 200810074087A CN 101256479 A CN101256479 A CN 101256479A
- Authority
- CN
- China
- Prior art keywords
- power
- group
- pointer
- bit
- interior
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
Abstract
提供了用于识别矢量中的有效位的方法、信息处理系统和计算机可读介质。此方法包括接收与位的矢量相关的指针。该指针与位的矢量中的当前位相关联。将位的矢量划分成二的数学乘方组,该二的数学乘方是二的任意非负整数乘方。确定一个或多个当前组,它们是包含当前位的二的乘方组。分析所述一个或多个二的乘方的当前组。在包含所有空位在内的一个或多个当前组中识别最大的二的乘方组。设置指针以指向在所识别的、包含所有空位在内的最大的二的乘方组中的末位后的一位。
Description
技术领域
本发明一般涉及信息电子器件领域,更具体地,涉及识别矢量中的有效位。
背景技术
在需要基于多个位的矢量来规定一组动作并且一次只能进行一个动作的系统中,存在这样的问题:在保持合理的同时移动(walking)矢量以确定应采取哪些动作。一个解决方案是,将矢量的全部位加1并校验每个位是否是打开的或关闭的(on or off)。这是一个简单的解决方案,但是具有在2n的列表中找到有效位的最差情况的时间,其中2n是列表的长度。另一个解决方案是使用优先权解码器找到矢量中的有效位。如果存在有效位,则该方案识别每个周期(cycle)中的有效位,但是需要许多资源而且不合理。另外,还会防碍在优先权树中较低的位。另一个解决方案是实行循环判优(round-robinarbiter),但是随着矢量的增长这个解决方案变得太大难以实行。
因此,需要克服如上所述的现有技术的问题。
发明内容
简要地,根据本发明,公开了用于识别矢量中的有效位的方法、信息处理系统和计算机可读介质。该方法包括接收与位的矢量关联的指针。该指针与位的矢量中的当前位关联。将位的矢量分组为二的数学乘方组,该二的数学乘方是二的任意非负整数乘方。确定一个或多个当前组,所述一个或多个当前组是包含当前位的二的数学乘方组。响应于接收指针,分析二的乘方的一个或多个当前组。响应于分析,在包括所有空位的一个或多个当前组中,识别最大的二的乘方组。设置指针以指向在所识别的包含所有空位的最大的二的乘方组中的末位后的位。
在另一个实施例中,公开了用于识别矢量中的有效位的信息处理系统。该信息处理系统包括存储器和与存储器通信耦接的处理器。该信息处理系统还包括与存储器和处理器通信耦接的电路。该电路适用于接收与位的矢量关联的指针。该指针与位矢量中的当前位相关联。将位矢量分组为二的数学乘方组,该二的数学乘方是二的任意非负整数乘方。确定一个或多个当前组,所述一个或多个当前组是包含当前位的二的数学乘方组。响应于接收指针,分析二的乘方的一个或多个当前组。响应于分析,在包括所有空位的一个或多个当前组中,识别最大的二的乘方组。设置指针以指向在所识别的包含所有空位的最大的二的乘方组中的末位后的位。
在另一个实施例中,公开了用于识别矢量中有效位的计算机可读介质。该计算机可读介质包括用于接收与位的矢量相关联的指针的指令。该指针与位的矢量中的当前位相关联。将位的矢量分组为二的数学乘方组,该二的数学乘方是二的任意非负整数乘方。确定一个或多个当前组,所述一个或多个当前组是包含当前位的二的数学乘方组。响应于接收指针,分析一个或多个当前的二的乘方组。响应于分析,在包含所有空位的一个或多个当前组中,识别最大的二的乘方组。设置指针以指向在所识别的包含所有空位的最大的二的乘方组中的末位后的位。
本发明的一个优点在于,大大减少了找到矢量中的有效位的时间。例如,可以连续地对半再分矢量,并可以分析得到的每个部分,以确定是否有任何位是有效的。换句话说,本发明使得进入矢量中的指针移动过尽可能大的区域,比如二进制搜索型方法中的矢量大小为2n-1的区域。与以前讨论的方法相比较,本发明在能够以更少的资源实现的同时,还极大地减少了搜索时间。本发明的另一个优点是,它提供了合理的搜索方法。换句话说,不再反复搜索已经搜索过的位,直到快速稀疏列表走步器(“FSLW”)围绕一周为止。
附图说明
附图用于进一步图示本发明的各个实施例并说明全部根据本发明的本发明的各种原理和优点,其中在各个视图中,图中相同的参考标号表示同样的或功能相似的元件,并且将这些图与下面的详细描述一起并入说明书中并形成说明书的一部分。
图1是根据本发明的实施例的快速稀疏列表走步器(“FSLW”)电路的示意图。
图2是图示根据本发明的实施例示出了8位矢量的一个例子的方框图。
图3是示出根据本发明的实施例在由图1的FSLW对分之后的图2的8位矢量的方框图。
图4是示出根据本发明的实施例在由图1的FSLW进一步对分后图3中的8位矢量的每一半的方框图。
图5是根据本发明的实施例的图1的FSLW的时序图。
图6是根据本发明的实施例的另一快速稀疏列表走步器(“FSLW”)电路的示意图。
图7是根据本发明的实施例的图6的FSLW的时序图。
图8是根据本发明的实施例的另一快速稀疏列表走步器(“FSLW”)电路的示意图。
图9是根据本发明的实施例的图8的FSLW的时序图。
图10是图示根据本发明的实施例的信息处理系统的方框图。
图11是图示根据本发明的实施例的使用图1的FSLW来搜索有效位的过程的可操作流程图。
具体实施方式
如所要求,在此公开本发明的详细实施例;但是,应当理解,所公开的实施例仅仅是本发明的范例,可以用各种形式使之具体化。因此,在此公开的具体结构和功能细节不应被认为是限制性的,而只是作为权利要求的基础和作为用于教授本领域技术人员以变化地将本发明应用于实质上任何适当的详细结构中的典型基础。此外,在此所用的术语和短语也不是意要限制,而是用于提供本发明的可理解的描述。
将在此使用的术语“一个(a)”或“一个(an)”定义为一个或一个以上。将在此使用的术语多个定义为两个或多于两个。将在此使用的术语另一个定义为至少是第二个或更多。将在此使用的术语包括和/或具有定义为包含(即开放语言)。将在此使用的术语耦接的(coupled)定义为“连接的(connected)”,但不必是直接地连接,并且不必机械地连接。将在此使用的程序、软件应用等术语定义为被设计用于在计算机系统上执行的指令序列。程序、计算机程序或软件应用可以包括子程序(subroutine)、功能、过程、对象方法、对象实施、可执行的应用、小应用(applet)、小服务(servlet)、源代码、对象代码、共用库/动态装载库和/或被设计用于在计算机系统上执行的其它指令序列。
快速稀疏列表走步器(Fast Sparse List Walker)
图1示出了快速稀疏列表走步器(FSLW)电路100的示意图。在一个实施例中,FSLW电路100存在于连网设备中。然而,这仅仅是一个例子而不是限制。FSLW电路100通过将矢量连续再分为二的乘方组(groups of powers oftwo)来识别矢量中的有效位。例如,在一个实施例中,FSLW电路100使用当前的指针位置和一套二进制平分电路来找到下一个有效位。与N2相比,这将电路系统的复杂度降低到了N阶,并以Log2(N)倍的阶数找到矢量中的下一个有效位。这可以与用线性搜索发现的N阶相比。
在一个实施例中,FSLW电路100确定它能够跳过的最大的二的乘方组,即没有任何有效位的最大组。本发明的一个优点是,可以以快速并有效的方式来识别矢量中的有效位。应当注意,下面的讨论使用在确定需要确认(acknowledgment)的网络端点和节点的上下文背景中的FSLW电路100。然而,这仅仅是可应用于本发明的一个例子,并非是限制。在一个实施例中,矢量可以是一个空间阵列。
图1示出了一套二进制平分电路102,该电路102包括或(OR)门的第一级104和或门的第二级106。将一个或多个源108与或门的第一级104耦接。例如,图1示出了源108,其提供被输入到或门的第一级104中的8位,其中,四个或门110、112、114、116中的每一个接收一个二位输入。FSLW电路100可以同时从一个或多个源108接收数据。应当注意,在整个讨论中,将来自源108的8位输入称作8位矢量。图2示出了8位矢量的一个例子。图2示出了8位矢量202,其中位2和位5是有效的。在一个例子中,FSLW电路100识别这样的有效位:这些有效位指示与有效位关联的端点需要将确认发送给它们。
在第一级104中的每个或门110、112、114、116接收其每个输入并对这些输入一起进行或运算(OR’s them together)。在或门的第二级106中的第一或门118接收来自第一或门110的输出和第二或门112的输出作为输入。在第二级106中的第二或门120接收来自第三或门114的输出和第四或门116的输出作为输入。在第二级106中的或门118、120接收它们的输入并对这些输入一起进行或运算。或门的每个级104、106平分矢量。换句话说,或门的第二级106将8位矢量分成两半,第一半包括位0到3,并且第二半包括位4到7。例如,图3示出了在由或门的第二级106将它平分得到了前半部302和后半部304后的8位矢量202。或门的第一级104进一步平分每个半部分。例如,图4示出了在对第一和第二半部分302、304再次平分所得到的第一个四分之一402、第二个四分之一404、第三个四分之一406和第四个四分之一408后的8位矢量202。
当由二进制平分电路102创建了矢量的每个半部、四分之一等时,由FSLW100分析该半部,以确定当前的二的乘方组中是否操作任何有效位,该二的乘方组是矢量的当前的一半、四分之一等。因此,在FSLW电路100中提供了两个多路复用器(“MUX”)122、124。第一个MUX 122接收来自或门的第一级104中的四个或门110、112、114、116的输出。第二个MUX 124接收来自第二级106中的或门118、120的每个的输出。指针源126向多路复用器122、124的每个提供被用作选择器的3位指针。该指针表明在矢量202中搜索的当前位置。使用指针的MSB(最高有效位),对或门的每个级104、106多路复用,并选择或树(OR tree)的正确部分。
例如,如果矢量202的前第一半部302不包括任何有效位,则FSLW电路100可以直接跳到在第二半部304中的位4。然而,如果第一半部302包括一个或多个有效位,则FSLW电路100分析第一半部302的当前四分之一402或404,以识别有效位。指针提供了防止对一个位的使用比其它位更多的合理的查找方法。换句话说,如果已经访问了矢量中的一位,则在访问或跳过其余位之前不再访问该位。例如,如果FSLW电路100确定位0到3不是有效的,则FSLW电路100直接跳到位4。然而,假设在FSLW电路100跳到位4之后,位2变为有效的。FSLW电路100使用指针来确定已经访问了位2,并且直到已经访问或跳过位4到7之后FSLW才返回到位2。
图5示出了如上所述的合理方面平分方法。在时间周期1502,指针位于位0。FSLW电路100的平分电路102将矢量平分为分别包括位0到3和位4到7的两个组。由于指针当前位于位0上,因此FSLW电路100分析包括位0到3的第一半部。FSLW电路100确定在第一半部中没有有效位,因此,就更新指针以指向位4。因此,在时间周期2504中,指针现在位于位4,并且FSLW电路100开始分析矢量的第二半部。由此可见,这极大地减少了搜索时间,这是因为FSLW电路100不必分析每个位,相反,FSLW电路100查看(look at)在二的乘方位的组。换句话说,如上所述,没有本发明,FSLW电路100将会查看位0、位1、位2和位3,与时间周期2相比较,这将在时间周期5时FSLW电路100使指针指向位4。
在时间周期2504,FSLW电路100分析矢量的第二半部并确定其包括有效位。因此,FSLW电路100查看第二半部的当前四分之一位4到位5,并确定当前四分之一没有任何有效位。因此,在时间周期3506,指针指向位6,其中,FSLW电路100分析矢量的第二半部并确定它包含有效位,然后分析包含位6和7的第二个四分之一。位6是有效的。在连网的例子中,有效位表明与该位关联的端点需要被发送至其处的确认。图5还示出,在时间周期3506,位1已经变为有效的。但是,FSLW电路100提供了合理的搜索方法,因此在访问全部剩余的位之前,不再访问位1。由于位6和7包含有效位,因此,在时间周期4508,FSLW电路100将指针设置到位7。FSLW确定位4到位7不包含有效位,因此,在时间周期5510,FSLW电路100将指针设置到位0。由此可见,在现有方法之上,极大地减少了用于识别有效位的搜索时间,并且指针提供了合理的搜索方法。
回到图1,将每个MUX 122、124的输出用于给指针加1。在优先权解码器132的第二输入端口128上接收第一多路复用器122的输出。在优先权解码器132的第一输入端口130上反转并接收第二多路复用器124的输出。将优先权解码器的第三输入端口134设置为1。还使用三个加法器136、138、140用于将指针加1以指向正确的位。第一加法器136将指针的第一MSB加1并将其余的位归零。第二加法器138将指针的前两个MSB加1,并将其余的位归零。第三加法器给整个指针加1。接收优先权解码器132的第一输出142和第一加法器136的输出,作为第一与(AND)门148上的输入。接收优先权解码器132的第二输出144和第二加法器138的输出,作为第二与门150上的输入。接收优先权解码器132的第三输出146和第三加法器140的输出,作为第三与门152上的输入。对这些输入一起进行与运算,并接收与门148、150、152中的每个得到的输出,作为三输入或门154上的输入。对这些输入一起进行或运算,并接收得到的输出,作为在指针源126上的输入。三输入或门154的输出是由FSLW电路100使用的下一个指针。例如,在图5中,在时间周期2504,指针指向位4。在接收相关的输入之后,在时间周期3506,指针将FSLW电路100的电路156加1使得该指针加1,以指向位6。
找到非空矢量中的有效位的最差情况时间(the worst case time)是2(n-1),其中列表长度是2n。在本发明的另一个实施例中,本发明通过移动指针所位于的矢量中的当前位置来减少最差情况时间。这样将最差情况时间降到2(n-1)-1。然而,实际时间可能更好,这是因为除非矢量是空的,否则FSLW电路100总是停在矢量中的一个有效位上。当FSLW电路100停在一个有效位上时,除非将这个位掩蔽起来,否则可以在下一个周期仅将指针加1。
图6示出了根据本发明的另一个实施例的FSLW电路600的示意图。图6的FSLW电路600通过移动指针所在的矢量中的当前位置来减少2(n-1)的最差情况时间。例如,图7示出了屏蔽(mask off)当前的指针位置用于提供更快的搜索方法的例子。在时间周期1702,指针正指向位0。FSLW电路600确定包含位0到3的矢量的第一半部至少包括一个有效位。因此,FSLW电路600查看包含位0和1的第一半部的第一个四分之一。FSLW电路600将指针加1以指向位1。位1是有效的。在连网例子中,将确认发送给与位1关联的端点。在下一个时间周期,即周期3706,FSLW电路600屏蔽位1,以便将指针加1以指向位4。由此可见,这提供了比以上参考图5中的FSLW电路100所述的方法更快的搜索方法。在与图7相同的例子中,FSLW电路100在时间周期3706将指针加1,以便指向位2。然而,由于FSLW电路600屏蔽了当前指针位置,因此,可以将指针增加到下半部分的开始,在此例中是位4。
在时间周期3706,FSLW电路600确定矢量的第二半部至少包括一个有效位,并因此查看第二半部的第一个四分之一。FSLW电路600确定第二半部的第一个四分之一包含有效位,并在时间周期4708将指针加1以指向位5。在时间周期4708,FSLW电路600将屏蔽施加于位5。FSLW电路600确定第二半部包含效位,并且确定第二半部的第一个四分之一包含有效位,并在时间周期5710给指针加1以指向位6。图7还示出位4已变为有效的。然而,由于FSLW电路600提供了合理的搜索方法,因此在访问或跳过所有剩余的位之前,不再访问位4。在时间周期5710,FSLW电路600查看后半部分,并确定存在有效位,并查看后半部分的第二个四分之一,并确定不存在有效位。
回到图6,除了屏蔽电路664以外,FSLW电路600的示意图和所讨论的图1的FSLW电路100的示意图相同。接收从数据源608提供的8位输入,作为与门658上的输入。接收来自指针源626的指针数据,作为解码器660上的输入。由非门662来反转解码器660的输出,其中接收非门662的输出作为与门658上的输入。接收与门658的8位输出的每个位,作为或门的第一级604中的四个或门610、612、614、616的输入。如上关于图7所述,在识别有效位时,屏蔽电路664屏蔽指针的当前位置。
在另一个实施例中,提供了另一个FSLW电路800,它进一步减少了用于识别矢量中有效位的搜索时间。图8的FSLW电路800屏蔽掉在矢量的当前半部分中的当前指针位置之前和包括当前指针位置在内的所有位。将相同的屏蔽应用于矢量的另半部分,但是,由于所检查的最大的分组(grouping)是矢量的一半,因此,非当前半部分是“不受关心”的一半。如果其余的不是有效的,则由于不管在指针前的矢量中的是什么,都能够跳过指针当前所在的矢量的整个一半,因此,将查找时间降低到N。例如,图9示出了使用图8的FSLW电路800来搜索有效位的例子。图9的时间周期相应对应于图7的时间周期。例如,图9的时间周期4908对应于图7的时间周期4708。
在时间周期4908,指针正指向位5。FSLW电路800确定位5是有效位并将屏蔽施加到位5的当前指针位置和当前半部分中的先前位上。因此,与图7所示的位6相比较,在时间周期5910,FSLW电路800设置指针以指向位0。在时间周期5910,FSLW电路800屏蔽位0,并确定在前半部分中没有有效位存在。因此,在时间周期6910,FSLW电路800设置指针以指向位4上的第二半部分。由此可见,,FSLW电路800的所述方法提供了比关于图6的FSLW电路600所讨论的方法甚至更快的搜索。
回到图8,除了屏蔽电路864以外,FSLW电路800的示意图与对于图1的FSLW电路800所描述的示意图相同。接收从数据源808提供的8位输入的第一半部(位0到3),作为第一与门858上的输入。接收8位输入的第二半部(位4到7),作为第二与门860上的输入。接收来自指针源826的指针数据,作为解码器862上的输入。解码器862输出4位信号,在该4位信号中,接收第一位和第二位作为到第一或门866的输入。第二或门868接收第三位作为输入,并接收第一或门866的输出作为输入。
第三或门870接收解码器输出的第四位作为输入,并接收第二或门868的输出作为输入。使用解码器输出的第一位和三个或门866、868、870的输出作为向屏蔽电路864的第一与门858和第二与门860的4位输入。每个与门858、860提供一个4位输出,该4位输出被用作向平分电路802的第一级804中的四个或门810、812、814、816的输入。
示范性的信息处理系统
图10是图示信息处理系统1000的详细视图的方框图。在一个实施例中,信息处理系统1000是基于适合于实施本发明的示范实施例的适当配置的处理系统的。任何适当配置的处理系统都能够类似地用作本发明的实施例的信息处理系统1000,例如,个人计算机、工作站等。
信息处理系统1000包括计算机1002。计算机1002具有处理器1004,该处理器1004与主存储器1006(例如,易失性存储器)、非易失性存储器接口1008、终端接口1010、网络适配器硬件1012、FSLW电路100通信连接。系统总线1014将这些系统组件相互连接。非易失性存储器接口1008用于将诸如数据存储器1016的海量存储设备与信息处理系统1000连接。一种特定类型的数据存储设备是计算机可读介质,比如CD驱动器,它可以用来向CD或DVD 1018或软盘(未示出)存储数据或从其读取数据。另一种类型的数据存储设备是被配置用于支持例如NTFS类型文件系统操作的数据存储设备。
在一个实施例中,信息处理系统1000利用常规的虚拟寻址机制使得程序运作为就像它们访问的是大的、单个的存储实体,在此称为计算机系统存储器,而不是多个较小的存储实体,比如主存储器1006和数据存储设备1016。注意,在此使用术语“计算机系统存储器”一般指信息处理系统1000的整个虚拟存储器。
尽管只示出了计算机1002的一个CPU 1004,但是同样可以有效地使用具有多个CPU的计算机系统。本发明的实施例并入了每个都包括分开的、完全编程的微处理器在内的接口,这些微处理器用来从CPU 1004进行卸载处理。终端接口1010用于将一个或多个终端1020与计算机1002直接相连,以提供到计算机1002的用户接口。能够作为非智能的或完全可编程的工作站的这些终端1020用于使得系统管理员和用户与瘦客户端通信。终端1020还能够由与计算机1002相连的并由终端接口硬件控制的用户接口和外围设备组成,其中终端接口硬件被包括在终端I/F 1010中,该终端I/F包括视频适配器和键盘、定位设备等的接口。
根据一个实施例,可以将操作系统包括在主存储器1006中,并且该操作系统是适合的多任务操作系统,比如Linux、UNJX、Windows XP、WindowsServer操作系统。本发明的实施例能够使用任何其它合适的操作系统、或核心程序、或其它适合的控制软件。本发明的某些实施例利用诸如面向对象的框架机制之类的体系结构,该体系结构使得在位于客户端中的任何处理器上执行操作系统的组件(未示出)的指令。网络适配器硬件1012用于向网络1022提供接口。本发明的实施例能够适用于与包括当今的模拟和/或数字技术在内的任何数据通信连接一起工作,或通过未来的连网机制来工作。应当注意,即使作为分开的硬件组件示出FSLW电路100,它也能够存在于诸如网络硬件适配器1012之类的其它硬件组件中。
尽管在全功能的计算机系统的上下文中描述了本发明的示范性的实施例,但是,本领域技术人员将认识到,能够通过例如软盘1018的软盘、CD-ROM或其它形式的可记录的介质,或通过任何类型的电子传输机制作为程序产品来传播来分发这些实施例。
搜索有效位的示范过程
图11是示出了搜索矢量中有效位的示范过程的可操作的流程图。图11的可操作流程图在步骤1102开始,并直接前进到步骤1104。在步骤1104,将计数器初始化为n-1。仅出于图示目的,对于图11的讨论,n等于4。因此,i初始等于3。在步骤1106,接收2n位的矢量x以及与该2n位的矢量x相关联的的n位指针p。因此,使用n=4的例子,矢量x包括16位,并且指针p包括4位。在步骤1108,可以应用可选的屏蔽,例如,屏蔽x(p)和屏蔽x(p(0)2n-1∶p)。屏蔽x(p)移动指针所在的列表中的当前位置。屏蔽x(p(0)2n-1∶p)屏蔽掉在当前半部分中的当前位置之前并包括当前位置在内的所有的条目(entries)。在步骤1110,确定指针位置S=p(0∶n-1-i)。
因此,对于n=4和i=3的例子,S=P(0∶0)。在步骤1112,FSLW 100确定是否i==0。如果确定的结果是肯定的,则在步骤1118,将指针设置为p′(0∶n-1-i)=S+1。如上所述,可以使用三个加法器136、138、140来将指针加1以指向正确的位。第一加法器136将指针的第一MSB加1,并将其余的位归零。第二加法器138将指针的前两个MSB加1,并将其余的位归零。第三加法器140将整个指针加1。然后,在步骤1120,控制流程退出。
如果在步骤1112的确定结果是否定的,则在步骤1114,FSLW100就确定在由x(s2i∶(s+1)2i-1)表示的二的乘方的当前组中是否有有效位。在n=4和i=3的当前例子中,如果例如p=0,则x(s2i∶(s+1)2i- 1)=x(0∶7)。换句话说,已经创建了两组位,第一组包括位0到7,并且第二组包括位8-15。因此,随着n=4和i=3的步骤,如果例如p=0,则步骤1114查看包含位0到7的组。在步骤1112,FSLW100确定是否i==0。如果确定的结果是肯定的,则控制流继续到步骤1118。如果在步骤1114的判断结果是否定的,则控制前进到上述的步骤1118。如果在步骤1114的判断结果是肯定的,则在步骤1116,将计数器减1,因此i=i-1。由于i之前在3上,所以,在当前的例子中i=2。控制流回到步骤1110,在此,对i=2重复以上过程。
非限制性的例子
上述的电路是集成电路芯片设计的部分。用图形计算机编程语言来创建芯片设计,并将其存储在计算机存储介质中(比如盘、磁带、物理硬驱或诸如存储器存取网络中的虚拟硬盘驱动)。如果设计人员不制作芯片或不制作用于制造芯片的光刻掩模,则设计人员就通过物理手段(例如,通过提供存储设计的存储介质的拷贝)或电子地(例如,通过互联网)直接或间接地将得到的设计发送给这样的实体。然后,将所存储的设计转换成用于光刻掩模的制造的适当格式(例如,GDSII),该格式通常包括要在晶片上形成的正讨论的芯片设计的多个拷贝。利用光刻掩模来定义要刻蚀或要处理的晶片的区域(和/或其上的层)。
在集成电路芯片的制造中使用上述的方法。
制造者可以以未加工的晶片形式(即,作为具有多个未封装的芯片的单个晶片)作为裸芯片或以封装的形式来分发所得到的集成电路芯片。在后一种情况下,在单芯片封装(比如将引线固定在母板上的塑料载体或其它较高级的载体)或多芯片封装(比如具有任一或两个表面互连或隐埋互连的陶瓷载体)中安装芯片。在任一情况下,然后将此芯片与其它芯片、离散的电路元件和/或其它的信号处理器件相互集成,作为(a)诸如母板的中间制品或(b)最终制品的部分。最终制品可以是包括了集成电路芯片的任何制品,其范围从玩具和其它低端应用到具有显示器、键盘或其它输入设备以及中央处理器的高级计算机制品。
如本领域技术人员将了解的,可以以硬件或软件或硬件和软件的组合来产生本发明。但是,在一个实施例中,以软件实现本发明。根据结合优选实施例所揭示的发明原理,可在单个计算机系统中产生该系统或方法,在此,所述的单个计算机系统具有分离的元件或装置,用于进行所述的或权利要求提出的各个功能或步骤,或者具有一个或多个组合了所揭示的或权利要求提出的任何功能或步骤的实施结合起来性能的元件或装置,或者将该系统或方法安排在通过如本领域普通技术人员所了解的任何适当的手段互连的分布式计算机系统中。
如本领域普通技术人员将了解的,根据结合优选实施例所揭示的发明原理,本发明和发明的原理不限于任何具体种类的计算机系统,而且可以和被安排用于进行所述的功能和所述的方法和步骤的任何通用的计算机一起使用。本发明并不限于任何特定的计算机程序或逻辑或语言或指令,而是可以用如本领域的普通技术人员将了解的任何这样适合的计算机程序、逻辑或语言或指令来实践。
虽然已经公开了本发明的具体实施例,但是,本领域普通技术人员将理解,不脱离本发明的主旨和范围,可以对这些具体实施例做出修改。因此,本发明的范围并不限于这些具体实施例,并且意要所附的权利要求覆盖在本发明的范围内的任何的和所有的这样的应用、修改和实施例。
Claims (20)
1.一种用于识别矢量中有效位的方法,该方法包括:
接收与位矢量相关联的指针,其中,所述指针与所述位矢量中的当前位相关联;
将所述位矢量分组成为二的数学乘方组,该二的数学乘方是二的任意非负整数乘方;
确定一个或多个当前组,所述一个或多个当前组是包含所述当前位在内的二的数学乘方组;
响应于接收所述指针,分析所述二的乘方的一个或多个当前组;
响应于所述分析,在包含所有空位在内的一个或多个当前组中,识别最大的二的乘方组;以及
设置所述指针以指向在所识别的、包含所有空位在内的最大的二的乘方组中的末位后的位。
2.如权利要求1所述的方法,其中,所接收的指针是被设置到在所述所识别的、包含所有空位在内的最大的二的乘方组中的末位后的位的指针。
3.如权利要求1所述的方法,还包括:
从数据源接收所述位矢量。
4.如权利要求1所述的方法,其中,所述分组还包括:
将所述位矢量至少划分为第一位组和第二位组。
5.如权利要求4所述的方法,其中,所述分析还包括:
从所述第一位组和第二位组确定包括与所述指针关联的当前位在内的组。
6.如权利要求5所述的方法,其中,所述设置指针还包括:
确定所述组包含所有空位;以及
响应于确定所述组包含所有空位,将所述指针设置到来自所述第一位组和第二位组的、不包含与所述指针相关联的当前位的组的第一位。
7.如权利要求5所述的方法,其中,所述分析还包括:
确定所述组至少包含一个有效位;
将所述组划分为一列随后的二的乘方组;以及
在所述一列随后的二的乘方组中,识别包括与所述指针相关联的当前位在内的随后的二的乘方组。
8.如权利要求7所述的方法,其中,所述设置指针还包括:
分析所述随后的二的乘方组;
基于所述分析,确定包含与所述指针相关联的当前位在内的当前的二的乘方组至少包括一个有效位;以及
响应于所述确定,将所述指针设置到在与所述指针相关联的当前位之后的位。
9.如权利要求1所述的方法,还包括:
设置所述指针以指向另一个二的乘方组中的一位;
屏蔽与所述指针相关联的当前位;
识别包含所有空位在内的二的乘方的最大当前组;以及
响应于识别包含所有空位在内的二的乘方的最大当前组,设置所述指针以指向在所述包含所有的空位在内的二的乘方的最大当前组中的末位后的下一位。
10.如权利要求1所述的方法,还包括:
设置所述指针以指向另一个二的乘方组中的一位;
屏蔽与所述指针相关联的当前位以及在所述位矢量的当前半部中的当前位之前的所有位;
识别包含所有空位在内的二的乘方的最大当前组;以及
响应于识别包含所有空位在内的二的乘方的最大当前组,设置所述指针以指向在所述包含所有空位在内的二的乘方的最大当前组中的末位后的下一位。
11.一种用于识别矢量中的有效位的信息处理系统,该信息处理系统包括:
存储器;
与所述存储器通信耦接的处理器;以及
与所述存储器和所述处理器通信耦接的电路,其中,所述电路适用于:
接收与位的矢量相关联的指针,其中,所述指针与所述位矢量中的当前位相关联;
将所述位矢量分组成为二的数学乘方组,该二的数学乘方是二的任意非负整数乘方;
确定一个或多个当前组,所述一个或多个当前组是包含所述当前位在内的二的数学乘方组;
响应于接收所述指针,分析所述二的乘方的一个或多个当前组;
响应于所述分析,在所述包含所有空位在内的一个或多个当前组中,识别最大的二的乘方组;以及
设置所述指针以指向在所识别的、包含所有空位在内的最大的二的乘方组中的末位后的位。
12.如权利要求11所述的信息处理系统,其中,所述分组还包括:
将所述位矢量至少划分为第一位组和第二位组。
13.如权利要求11所述的信息处理系统,其中,所接收的所述指针是被设置到在所识别的、包含所有空位在内的最大的二的乘方组中的末位后的位的指针。
14.如权利要求12所述的信息处理系统,其中,所述分析还包括:
从所述第一位组和第二位组确定包括与所述指针关联的当前位在内的组。
15.如权利要求11所述的信息处理系统,其中,所述电路还适用于:
设置所述指针以指向另一个二的乘方组中的一位;
屏蔽与所述指针相关联的当前位;
识别包含所有空位在内的二的乘方的最大当前组;以及
响应于识别包含所有空位在内的二的乘方的最大当前组,设置所述指针以指向在所述包含所有空位在内的二的乘方的最大当前组中的末位后的下一位。
16.如权利要求11所述的信息处理系统,其中,所述电路还适用于:
设置所述指针以指向另一个二的乘方组中的一位;
屏蔽与所述指针相关联的当前位以及在所述位矢量的当前半部中的当前位之前的所有位;
识别包含所有空位在内的二的乘方的最大当前组;以及
响应于识别包含所有空位在内的二的乘方的最大当前组,设置所述指针以指向在所述包含所有空位在内的二的乘方的最大当前组中的末位后的下一位。
17.一种用于识别矢量中的有效位的计算机可读介质,所述计算机可读介质包括用于如下的指令:
接收与位矢量相关联的指针,其中,所述指针与所述位矢量中的当前位相关联;
将所述位矢量分组成为二的数学乘方组,该二的数学乘方是二的任意非负整数乘方;
确定一个或多个当前组,所述一个或多个当前组是包含所述当前位在内的二的数学乘方组;
响应于接收所述指针,分析所述二的乘方的一个或多个当前组;
响应于所述分析,在所述包含所有空位在内的一个或多个当前组中,识别最大的二的乘方组;以及
设置所述指针以指向在所识别的、包含所有空位在内的最大的二的乘方组中的末位后的一位。
18.如权利要求17所述的计算机可读介质,其中,用于所述分组的所述指令还包括用于以下的指令:
将所述位矢量至少划分为第一位组和第二位组。
19.如权利要求17所述的计算机可读介质,还包括用于以下的指令:
设置所述指针以指向另一个二的乘方组中的一位;
屏蔽与所述指针相关联的当前位;
识别包含所有空位在内的二的乘方的最大当前组;以及
响应于识别包含所有空位在内的二的乘方的最大当前组,设置所述指针以指向在所述包含所有空位在内的二的乘方的最大当前组中的末位后的下一位。
20.如权利要求17所述的计算机可读介质,还包括用于以下的指令:
设置所述指针以指向另一个二的乘方组中的一位;
屏蔽与所述指针相关联的当前位以及在所述位矢量的当前半部中的当前位之前的所有位;
识别包含所有空位在内的二的乘方的最大当前组;以及
响应于识别包含所有空位在内的二的乘方的最大当前组,设置所述指针以指向在所述包含所有空位在内的二的乘方的最大当前组中的末位后的下一位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/679,282 | 2007-02-27 | ||
US11/679,282 US7743231B2 (en) | 2007-02-27 | 2007-02-27 | Fast sparse list walker |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101256479A true CN101256479A (zh) | 2008-09-03 |
Family
ID=39717266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100740871A Pending CN101256479A (zh) | 2007-02-27 | 2008-02-21 | 识别矢量中的有效位的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7743231B2 (zh) |
CN (1) | CN101256479A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101964635A (zh) * | 2010-10-27 | 2011-02-02 | 中国科学院上海应用物理研究所 | 数字信号的自动增益控制方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9501276B2 (en) | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
WO2020172290A1 (en) * | 2019-02-19 | 2020-08-27 | Marcroft Kyle Mitchell | Systems, methods, and devices for the sorting of digital lists |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
US5649181A (en) * | 1993-04-16 | 1997-07-15 | Sybase, Inc. | Method and apparatus for indexing database columns with bit vectors |
US5852821A (en) * | 1993-04-16 | 1998-12-22 | Sybase, Inc. | High-speed data base query method and apparatus |
US6269363B1 (en) * | 1994-01-24 | 2001-07-31 | Yossi Matias | Method of accessing data using approximate data structures by relaxing the operations that define same |
US5727200A (en) * | 1994-03-07 | 1998-03-10 | Nippon Steel Corporation | Parallel merge sorting apparatus with an accelerated section |
US5497354A (en) * | 1994-06-02 | 1996-03-05 | Intel Corporation | Bit map addressing schemes for flash memory |
US5532693A (en) | 1994-06-13 | 1996-07-02 | Advanced Hardware Architectures | Adaptive data compression system with systolic string matching logic |
US5742797A (en) | 1995-08-11 | 1998-04-21 | International Business Machines Corporation | Dynamic off-screen display memory manager |
GB9721659D0 (en) | 1997-10-14 | 1997-12-10 | Philips Electronics Nv | Space-limited marking structure for tracing garbage collectors |
KR100269325B1 (ko) | 1997-11-11 | 2000-10-16 | 윤종용 | 정보기록장치의 불량 어드레스 검색방법 및 이를 제어하는 프로세서 |
JP2001222537A (ja) | 2000-02-07 | 2001-08-17 | Mitsubishi Electric Corp | 一致データ検索装置 |
US6681224B2 (en) | 2000-07-31 | 2004-01-20 | Fujitsu Limited | Method and device for sorting data, and a computer product |
US6678807B2 (en) * | 2000-12-21 | 2004-01-13 | Intel Corporation | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
US7451143B2 (en) * | 2002-08-28 | 2008-11-11 | Cisco Technology, Inc. | Programmable rule processing apparatus for conducting high speed contextual searches and characterizations of patterns in data |
US7464254B2 (en) * | 2003-01-09 | 2008-12-09 | Cisco Technology, Inc. | Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data |
-
2007
- 2007-02-27 US US11/679,282 patent/US7743231B2/en not_active Expired - Fee Related
-
2008
- 2008-02-21 CN CNA2008100740871A patent/CN101256479A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101964635A (zh) * | 2010-10-27 | 2011-02-02 | 中国科学院上海应用物理研究所 | 数字信号的自动增益控制方法 |
CN101964635B (zh) * | 2010-10-27 | 2013-01-16 | 中国科学院上海应用物理研究所 | 数字信号的自动增益控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US7743231B2 (en) | 2010-06-22 |
US20080209183A1 (en) | 2008-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200334533A1 (en) | Methods and systems for data analysis in a state machine | |
US10217026B1 (en) | Computer architecture for emulating an asynchronous correlithm object processing system | |
US10210428B1 (en) | Computer architecture for emulating master-slave controllers for a correlithm object processing system | |
US9817678B2 (en) | Methods and systems for detection in a state machine | |
US8680888B2 (en) | Methods and systems for routing in a state machine | |
KR101840905B1 (ko) | 상태 기계 격자에서의 카운터 동작 | |
KR20150037937A (ko) | 상태 기계 엔진에 의해 수신된 데이터를 핸들링하기 위한 방법들 및 시스템들 | |
TW201723811A (zh) | 於指令集架構中排序資料及合併經排序資料之技術 | |
CN113392603B (zh) | 门级电路的rtl代码生成方法、装置和电子设备 | |
CN101256479A (zh) | 识别矢量中的有效位的方法和系统 | |
CN104166539A (zh) | 并行原子递增 | |
EP3992865A1 (en) | Accelerated loading of unstructured sparse data in machine learning architectures | |
US20190163505A1 (en) | Computer architecture for emulating a synchronous correlithm object processing system | |
US20190164058A1 (en) | Computer architecture for emulating digital delay lines in a correlithm object processing system | |
Komatsu et al. | Architecture of an asynchronous FPGA for handshake-component-based design | |
Kim | Energy-Efficient Accelerator Design for Emerging Applications | |
US20190163507A1 (en) | Computer architecture for emulating parallel processing in a correlithm object processing system | |
CN111915014A (zh) | 人工智能指令的处理方法及装置、板卡、主板和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080903 |