执行串匹配的装置和方法转让专利
申请号 : CN201480008772.8
文献号 : CN104995597B
文献日 : 2018-03-13
发明人 : H.桑特里 , M.阿兹米
申请人 : 英特尔公司
摘要 :
权利要求 :
1.一种执行串匹配的装置,包括:
处理器元件;以及
逻辑,用以:
接收包括第一串元素的型式,以用在串匹配操作中;
在处理器元件的第一矢量寄存器中实例化测试位掩码,所述第一矢量寄存器包括多个分道;
将第一矢量寄存器的多个分道的最高有效位(MSB)位置处的位值拷贝到第一矢量掩码,作为矢量值;
位移位矢量值作为标量值;
位移位第一矢量寄存器;
采用第一矢量掩码的矢量值,以选择性地填充处理器元件的第二矢量寄存器的分道的最低有效位(LSB)位置;以及在按位逻辑或运算中将第二矢量寄存器组合到第一矢量寄存器中。
2.根据权利要求1所述的装置,所述逻辑用以接收包括第二串元素的序列,以用在串匹配操作中,所述串匹配操作标识序列内型式的出现。
3.根据权利要求2所述的装置,包括显示器,所述逻辑用以视觉地呈现是否在序列内发现型式的指示。
4.根据权利要求2所述的装置,所述逻辑用以向计算设备传输对是否在序列内发现型式进行指示的结果数据,从所述计算设备经由网络而接收型式和序列中的至少一个。
5.根据权利要求1所述的装置,处理器元件基于单指令多数据(SIMD)架构。
6.根据权利要求1所述的装置,所述逻辑用以:在按位逻辑与运算中组合第一矢量寄存器与充当MSB掩码的第三矢量寄存器,以将第一矢量寄存器的多个分道的MSB位位置处的位值拷贝到第一矢量掩码;
采用矢量值,以用1选择性地填充第二矢量寄存器的分道的位;以及在按位逻辑与运算中组合第二矢量寄存器与充当LSB掩码的第四矢量寄存器,以选择性地填充第二矢量寄存器的分道的LSB位位置。
7.根据权利要求1所述的装置,所述逻辑用以:计算存储测试位掩码所需的第一矢量寄存器的分道的数量,所述测试位掩码具有等于第一串的元素数量的位长度;
采用第二矢量掩码,以选择性填充对于存储测试位掩码所需的第一矢量寄存器的所述数量的分道;以及右移位所述数量的分道的最高有效分道,以将跨所述数量的分道的全部而填充的位数调整成等于测试位掩码的位长度。
8.根据权利要求7所述的装置,所述逻辑用以用1选择性地填充第一矢量寄存器的所述数量的分道的所有位。
9.根据权利要求1所述的装置,所述逻辑用以:在处理器元件的第三矢量寄存器中初始化指示元素出现于的第一串内的位置的位掩码;
在按位逻辑与运算中组合第三矢量寄存器与第一矢量寄存器;以及确定测试位掩码的MSB位处的位值,以确定是否在序列内发现型式。
10.一种执行串匹配的装置,包括:
处理器元件;以及
逻辑,用以:
接收包括第一串元素的型式,以用在串匹配操作中;
计算存储测试位掩码所需的处理器元件的第一矢量寄存器的分道的数量,所述测试位掩码具有等于第一串的元素数量的位长度;
采用第一矢量掩码,以选择性填充对于存储测试位掩码所需的第一矢量寄存器的所述数量的分道;以及右移位所述数量的分道的最高有效分道,以将跨所述数量的分道的全部而填充的位数调整成等于测试位掩码的位长度。
11.根据权利要求10所述的装置,所述逻辑用以用1选择性地填充第一矢量寄存器的所述数量的分道的所有位。
12.根据权利要求10所述的装置,所述逻辑用以:接收包括第二串元素的序列,以用在串匹配操作中,所述串匹配操作标识在序列内型式的出现;
在处理器元件的第三矢量寄存器中初始化指示元素出现于的第一串内的位置的位掩码;
在按位逻辑与运算中组合第三矢量寄存器与第一矢量寄存器;以及确定测试位掩码的最高有效位(MSB)处的位值,以确定是否在序列内发现型式。
13.根据权利要求12所述的装置,包括显示器,所述逻辑用以视觉地呈现是否在序列内发现型式的指示。
14.根据权利要求12所述的装置,所述逻辑用以向计算设备传输对是否在序列内发现型式进行指示的结果数据,从所述计算设备经由网络而接收型式和序列中的至少一个。
15.根据权利要求10所述的装置,所述逻辑用以:将第一矢量寄存器的多个分道的MSB位位置处的位值拷贝到第二矢量掩码,作为矢量值;位移位矢量值作为标量值;
位移位第一矢量寄存器;
采用第二矢量掩码的矢量值,以选择性地填充处理器元件的第二矢量寄存器的分道的LSB位位置;以及在按位逻辑或运算中将第二矢量寄存器组合到第一矢量寄存器中。
16.根据权利要求15所述的装置,所述逻辑用以:在按位逻辑与运算中组合第一矢量寄存器与充当MSB掩码的第三矢量寄存器,以将第一矢量寄存器的所述数量的分道的MSB位位置处的位值拷贝到第二矢量掩码;
采用矢量值,以用1选择性地填充第二矢量寄存器的分道的位;以及在按位逻辑与运算中组合第二矢量寄存器与充当LSB掩码的第四矢量寄存器,以选择性地填充第二矢量寄存器的分道的LSB位位置。
17.一种执行串匹配的计算机实现的方法,包括:接收包括第一串元素的型式以及包括第二串元素的序列以用在串匹配操作中,以确定型式是否存在于序列内;
在处理器元件的第一矢量寄存器中实例化测试位掩码,所述第一矢量寄存器包括多个分道;将第一矢量寄存器的多个分道的最高有效位(MSB)位置处的位值拷贝到第一矢量掩码,作为矢量值;
位移位矢量值作为标量值;
位移位第一矢量寄存器;
采用第一矢量掩码的矢量值,以选择性地填充处理器元件的第二矢量寄存器的分道的最低有效位(LSB)位位置;以及将第二矢量寄存器向第一矢量寄存器中进行“或”运算。
18.根据权利要求17所述的计算机实现的方法,第一和第二串包括文本或DNA序列中之一的串。
19.根据权利要求17所述的计算机实现的方法,包括:从控制装置或网络中的至少一个接收信号,所述信号传送型式和序列中的至少一个。
20.根据权利要求17所述的计算机实现的方法,包括:在显示器上视觉地呈现是否在序列内发现型式的指示。
21.根据权利要求17所述的计算机实现的方法,包括:向计算设备传输对是否在序列内发现型式进行指示的结果数据,从所述计算设备经由网络而接收型式和序列中的至少一个。
22.根据权利要求17所述的计算机实现的方法,包括:在串匹配操作中采用后向非确定性DAWG匹配(BNDM)算法。
23.根据权利要求17所述的计算机实现的方法,包括:在处理器元件的第三矢量寄存器中初始化指示元素出现于的第一串内的位置的位掩码;
将第三矢量寄存器与第一矢量寄存器进行“与”运算;以及确定测试位掩码的MSB位处的位值,以确定是否在序列内发现型式。
24.包括指令的至少一个机器可读介质,所述指令在由计算设备执行时使得计算设备执行权利要求17-23中任一项的方法。
说明书 :
执行串匹配的装置和方法
技术领域
背景技术
置处特定数据值的出现。这些位并行变型中的许多实现相当大的效率,其中型式的长度(即组成型式的一维阵列中的位置的数量)小于或等于处理器的一个或多个寄存器中位的数
量。在型式的长度大于处理器的寄存器中位的数量的情况下仍然可以使用这些位并行变
型,但是这导致需要在存储器中创建数据结构,以提供更宽的处理器寄存器的等效物。
得能够引进具有128位、256位和512位寄存器的处理器,因而潜在地以相当大的效率而适应日益更大的型式。然而,考虑到数值数据的典型片段往往需要不多于64位来被表示,更大宽度的寄存器倾向于被细分为64位宽度或更少的两个或更多个分道(lane),以使得能够并排
保持多个数据值。这样的处理器的指令集还利用这样的指令被扩充:所述指令使得能够并
行地同时执行那些并排的值上的按位逻辑、算术和其它指令。这样的寄存器和指令往往分
别被称为“矢量寄存器”和“矢量指令”。此外,实现具有矢量指令的矢量寄存器的处理器架构被称为SIMD(单指令多数据)架构。细分这样的宽寄存器的方式和实现支持其使用的指令
集的方式的一个副产物是仅仅为位的移位操作提供支持的倾向,其中在这些寄存器之一内
的分道的一端或两端处的位值丢失。这一个实现细节在支持更长的型式中呈现对于使用这
样的非常宽的寄存器的全宽度的阻碍。是关于这些和其它考虑而需要本文所述的实施例的
发明内容
存器的分道的最低有效位(LSB)位置;以及在按位逻辑或运算中将第二矢量寄存器组合到
第一矢量寄存器中。
附图说明
具体实施方式
个或多个宽的位掩码的矢量寄存器的分道之间不进位(carry)位值。
丢失的技术可以包括:通过按位操作将MSB位的位置处的位值的拷贝保存为矢量掩码
(vector mask)中的矢量值,作为标量值而对矢量值进行位的移位。现在经移位的矢量值然后用于控制充当位进位掩码的另一个矢量寄存器的LSB位的填充,并且在已经对测试位掩
码进行了位的移位以还原以其它方式缺失的位值之后,位进位掩码与存储了测试位掩码的
矢量寄存器进行“或”运算。
道位移位到右边以调整填充值(被预想为全1,但可以是不同的填充值)的总体长度,以匹配测试位掩码型式的位长度。不同的位并行串匹配算法用不同程度的频率来移位和/或重新
初始化测试位掩码型式。然而,二者足够频繁地发生,以使得位并行匹配算法的执行的效率可以通过使用本文所述的技术而显著增强。
将其工作的实质最有效地传达给本领域其他技术人员。过程在这里并且一般被设想为导致
期望的结果的操作的自相一致序列。这些操作是需要物理量的物理操纵的那些操作。通常,虽然不是必要地,这些量采取能够被存储、传递、组合、比较和以其它方式操纵的电学、磁性或光学信号的形式。主要由于常见使用的原因,将这些信号称为位、值、元素、符号、字符、项、数字等等有时证明是方便的。然而,应当注意的是:所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于那些量的方便的标签。
写的计算机程序而被选择性地激活或配置的通用数字计算机,和/或包括为了所需目的而
特别地构造的装置。各种实施例还涉及用于执行这些操作的装置或系统。这些装置可以为
了所需目的而被特别地构造,或者可以合并通用计算机。用于各种各样的这些机器的所需
结构将从给出的描述中显现。
公知的结构和设备,以使得便于其描述。意图是覆盖权利要求的范围内的所有修改、等同物和替代方案。
提供型式和/或序列。这些计算设备100和300中的每一个可以是各种类型的计算设备中的
任一个,包括而不限于:台式计算机系统、数据录入终端、膝上型计算机、上网本计算机、超级本计算机、平板计算机、手持式个人数据助理、智能电话、数码相机、移动设备、合并到服装中的身体佩带的计算设备、集成到车辆中的计算设备、服务器、服务器集群、服务器农场等。
数据。然而,这些计算设备中的一个或多个可以交换其它不同的和完全无关的数据。在各种实施例中,网络999可以是可能限于在单个建筑物或其它相对有限的区域内扩展的单个网
络、可能扩展相当大距离的连接的网络的组合,和/或可以包括因特网。因而,网络999可以基于可以通过其而交换信号的各种通信技术(或其组合)中的任一个,包括而不限于:采用电学和/或光学传导的线缆敷设的有线技术,以及采用红外、射频或其它形式的无线传输的无线技术。还应当注意的是:可以替代地在这些计算设备中的两个多个之间经由可移除存
储装置(例如基于FLASH(闪速)存储器技术的固态存储装置、光盘介质等)交换这样的数据。
环境。换句话说,处理器元件250和存储装置260定义与至少由处理器元件150和存储装置
160定义的操作环境基本上分离的操作环境的部分。控制器200内的该分离的操作环境使得
能够在大大降低的被可以由处理器元件150执行的其它不太值得信任的软件损害的风险的
情况下执行位并行串匹配算法。这可以被视为是重要的,其中位并行匹配算法由处理器元
件250执行,作为加密、验证或其它安全功能的部分。存储装置260内序列531、型式532和结果数据539中的一个或多个的存储帮助进一步确保这些中没有一个通过被变更以击败安全
措施或出于某种其它目的而遭损害。
为的目的。结果数据539包括是否在序列531内和/或在序列531内的(一个或多个)什么位置处发现型式532的指示。
539。数据531、532和/或539的这些片段的交换可以通过网络999。这样的交换可以由采用由控制装置320和显示器380组成的用户接口的交互设备300的操作者产生,以指示对于信息
的所期望的搜索,使得型式532可以表示由该操作者指定的搜索项。可替代地,这样的交换可以由认证过程产生,使得序列531和/或型式532中的一个或另一个可以各自是公共或私
有密钥、将用密钥数字签名的消息、通过使用密钥而对消息签名所创建的数字签名等的至
少一部分。如加密和数字签名验证领域的技术人员将容易地认识到:串匹配经常用于执行
这样的安全功能。
中的一个或两个。此外,搜索设备100可以在显示器180上视觉呈现位并行串匹配的结果的
指示。序列531和型式532中的一个或二者的这样的供应和/或结果数据539的这样的呈现可
以起于在可能需要供应密码、指纹扫描、面部的图像捕获或其它安全相关的数据(其变成用于位并行串匹配的序列531或型式532之一)的过程中搜索设备100的操作者登录到搜索设
备100中。
寄存器,并且处理器元件150的矢量指令集包括一个或多个位移位指令,其中不越过相邻分道之间而进位位。控制例程140合并指令,所述指令在由处理器元件150执行时使得处理
器元件150克服该位进位缺乏,如将被更详细地解释的。
存器来执行位并行串匹配,并且其中处理器元件250的矢量指令集包括一个或多个位移位
指令,其中不越过相邻分道之间而进位位。因而,在该变型中,是控制例程240合并指令,所述指令在由处理器元件250执行时使得处理器元件250克服该位进位缺乏。可以采用该变
型,其中位并行串匹配被执行为加密验证和/或其它安全相关的目的的部分。
Radeon™图形处理器;Analog Devices® Sharc®或TigerSharc™数字信号处理器;ARM®
应用、嵌入式或安全处理器;IBM®和/或Motorola® DragonBall®或PowerPC®处理器;
IBM和/或Sony® Cell(单元)处理器;Nvidia® GeForce®,Quadro®,Tesla™,Ion™或
PureVideo™图形处理器;Texas Instruments® DaVinci™数字信号视频处理器;或Intel
® Celeron®,Core(2) Duo®,Core(2) Quad®,Core i3®,Core i5®,Core i7®,Atom
®,Itanium®,Pentium®,Xeon®或XScale®处理器。此外,这些处理器元件中的一个或多
个可以包括多核处理器(无论多个核共存于相同的还是分离的管芯上)和/或多个物理上分离的处理器通过其而以某种方式链接的某个其它种类的多处理器架构。
是或可以不是可移除的机器可读存储介质的技术。因而,这些存储装置中的每一个可以包
括多种类型(或类型的组合)的存储设备中的任一个,包括而不限于:只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDR-DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、聚合物存储器(例如铁电聚合物存储器)、奥氏存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡、一个或多个单独的铁磁盘驱动器或者被组织成一个或多个阵列的多个存储设备(例如被组织成独立磁盘阵列的冗余阵列或
者RAID阵列的多个铁磁盘驱动器)。应当注意的是:虽然这些存储装置中每一个被描绘为单个块,但这些中的一个或多个可以包括可以基于不同存储技术的多个存储设备。因而,例
如,这些描绘的存储装置中每一个的一个或多个可以表示以下的组合:程序和/或数据可以通过其而在某种形式的机器可读存储介质上被存储和传送的光学驱动器或闪速存储器卡
读取器,用以在相对延长的时段内本地存储程序和/或数据的铁磁盘驱动器,以及使得能够相对快地访问程序和/或数据的一个或多个易失性固态存储器设备(例如SRAM或DRAM)。还应当注意的是:这些存储装置中的每一个可以由基于同样存储技术的多个存储组件组成,
但是其可以由于使用中的专门化而被分离地维护(例如,一些DRAM设备被用作主存储装置,而其它DRAM设备被用作图形控制器的不同的帧缓冲器)。
接口中的每一个包括提供至少一些必需功能性以使能这样的耦合的电路。然而,该接口还
可以用由处理器元件150、250和350中对应的处理器元件执行的指令序列来至少部分地实现(例如以实现协议栈或其它特征)。在网络999的一个或多个部分采用电学和/或光学传导的线缆敷设的情况下,接口190可以采用符合各种行业标准中任一个的信令和/或协议,
所述行业标准包括而不限于:RS-232C、RS-422、USB、以太网(IEEE-802.3)或IEEE-1394。可替代地或另外,在网络999的一个或多个部分需要使用无线信号传输的情况下,接口190可
以采用符合各种行业标准中任一个的信令和/或协议,所述行业标准包括而不限于:IEEE
802.11a、802.11b、802.11g、802.16、802.20(通常被称为“移动宽带无线接入”);蓝牙;
ZigBee;或者蜂窝无线电话服务,诸如GSM与通用分组无线电服务(GSM/GPRS)、CDMA/1xRTT、用于全球演进的增强型数据速率(EDGE)、仅演进数据/优化的(EV-DO)、用于数据和语音的演进(EV-DV)、高速下行链路分组接入(HSDPA)、高速上行链路分组接入(HSUPA)、4G LTE等。
应当注意的是:虽然接口190和390中的每一个被描绘为单个块,但这些中的一个或多个可
以包括可以基于不同信令技术的多个接口。这可能是实情,尤其是在这些接口中的一个或
多个将计算设备100和300中对应的计算设备耦合到各自采用不同的通信技术的多于一个
网络的情况下。
“NFA”的BNDM使用)。已经发现不同串匹配算法对于具有不同的长度和特性的序列和型式的不同组合是相对高效的,并且已经发现BNDM在这些的相对宽的范围上是高效的。
的位移位(bit-shifting)技术,以使得能够实现诸如BNDM之类的位并行串匹配算法的性能方面的改进。因而,BNDM的方面的该描绘不应被理解为将本文讨论的位移位技术的使用
仅仅限制到BNDM或任何其它特定的位并行串匹配算法。
“向后”的方向上朝着那些元素中最前面的一个行进。
论和描绘的内容限制到任何特定的方向。因而,本文中的特定方向的这样的讨论和描绘不
应被理解为如此限制可以应用本文讨论的技术的方式。
配算法完全超出本公开的范围。
531和型式532的元素可以是任何类型的数据,包括但不限于:DNA序列、文本、数值数据等。
向前(向右)移动。更明确地,始于窗口511的最后端(最右位置)中的元素“a”,在型式532中发现对元素“a”的匹配。然后,在窗口511内沿着序列531向后移动(从右向左),元素“b”也被发现在型式532中具有匹配,然而,沿着序列531再次向后移动到元素“c”揭示了在型式532内的任何地方都没有对于元素“c”的匹配(如通过在型式532的元素位置中的五个之上的划掉所指示的)。在型式532内发现“a”和“b”但没有“c”的情况下,从窗口511内进一步读取元素以用于与型式532内的元素比较被视为是不必要的,因为现在清楚:在窗口511和型式532内的元素之间不可能存在完全匹配(因而,型式532内的其它元素可能是什么无关紧要)。
511如在元素方面测量的全长度向前移动则发现完全匹配的可能性。
目向前(向右)移动。再次在窗口511的最后端(最右位置)处开始,并且在窗口511内沿着序列531向后(向左)移动,元素“a”,然后“b”,然后“c”,然后“d”,然后“e”,然后“f”,然后“g”被读取并且被发现全部存在于型式532内并以该相同的次序(也是向后行进)。发现这一个完全匹配的事实被记录(以及其沿着序列531的长度的位置)为结果数据539的部分。然后,窗口511沿着序列531按等于窗口511在元素方面的大小的元素数目向前(向右)移动,作为搜索这样的匹配的另一实例的部分。
“dehumidifier”。为简洁起见,描绘针对“humid”的实例的本搜索的执行的仅仅一部分,以便更清楚地示出位移位的使用。
按位进行“与”或者“或”运算(这取决于算法)。此外,在用于匹配的这些测试的许多测试之间,对测试位掩码D进行位移位。如将更详细解释的,正是测试位掩码D的位移位潜在地遭遇困难,其中在采用SIMD架构的处理器的矢量寄存器内实例化测试位掩码D。
少一个。因此,考虑到文本串“humid”由五个元素组成,其中没有任何一个重复,在位掩码B的集合中存在至少五个位掩码。这些位掩码B通过其相应的元素索引,使得对于文本串
“humid”,位掩码B的集合包括位掩码B(d)、B(h)、B(i)、B(m)和B(u)。在这些位掩码B的每一个内,以对它们相应的元素出现在型式532中何处进行指示的方式将位设置为0或1。
因而如所描绘的,读取的第一个元素是在窗口511最后端处的“m”。
5b中所图示,文本串“humid”这次在窗口511内,并且因而将发现与型式532的文本串
“humid”的匹配。在标识该匹配中,测试位掩码D经受与位掩码B(d)、B(i)、B(m)、B(u)和B(h)(以该次序)的五个“与”运算,导致在每个“与”之后的测试位掩码D的非零值。而且,在这五个“与”运算之间,测试位掩码D被位移位四次。在这五个“与”运算的情况下,索引j从5一路往下递减到0,这指示窗口511内的所有元素已被读取并用在这样的测试中。因而,当测试位掩码D的MSB在五个“与”运算结束时被设置为1时,具有0值的索引j指示已经发现匹配。
生,测试位掩码D至全1的初始化也是这样。因此,测试位掩码D的这样的位移位是这样的算法的执行的重要部分。
例集合。在实际实践中,预想的是:本文讨论的技术将应用到宽度上128、256、512或更多位的矢量寄存器,其具有各自在宽度上是16、32或64或可能更多位的分道。因此,本文中所描绘的矢量寄存器和分道的有限宽度不应被理解为将本文所述的技术的应用限制到这样的
小的位宽。
(disjunction)运算,其中两个操作数输入位掩码可以被描述为被“或”在一起或“在按位逻辑或运算中组合”。
这样的矢量掩码是SIMD架构中的常见特征,作为控制矢量寄存器中的哪些分道将被包括在
特定的按位、算术或其它运算中的方式。在该情形下,型式532(“because of you”)内的元素的数量为14,并且从此中计算出仅仅需要两个分道552a和552b来持有测试位掩码D的对
应的14位的长度。因而,矢量位掩码553被设置为0011,以使得用全1填充分道被限制到分道
552a-b。矢量寄存器551的这两个分道然后用全1填充。还计算出测试位掩码D的14位的长度占据分道552b的除了两个最高有效位之外的全部(即分道552b的所有位位置,除了位位置7和6)。作为响应,矢量掩码553被设置成将矢量寄存器551上的向右位移位操作的使用限制到分道552b。然后矢量寄存器551的分道552b被向右进行位移位两次,导致0填充矢量寄
存器551的分道552b中的位位置7和6。
矢量寄存器。作为对重复刚才在图6a中描述和描绘的初始化技术的节省时间和节省功率的
替代方案,每当测试位掩码D要被重新初始化为该相同状态时,测试位掩码D的该相同的初
始化的状态然后可以从该其它矢量寄存器拷贝回到矢量寄存器551中。
量寄存器内实例化每个位掩码B。
(图6b)成的位值相同的位值。
假定矢量寄存器551是遭受该限制的SIMD的实现方式,则矢量寄存器551向左的位移位将导
致没有被进位到分道552b的LSB位位置(位位置0)的分道552a的MSB位置(位位置7)处的1。
“与”运算(按位逻辑与运算)的结果是分道552a中的非零值以及矢量寄存器556的其它分道
552b-d中的零值。从矢量寄存器556的分道552a-d中的零和非零值(其指示在其四位内的那些分道中的每一个的零或非零状态)的该组合中创建4位矢量进位掩码557。矢量进位掩码
557的该4位矢量值然后被转换成标量值,以使能在其四个位之间向左位移位,并且然后转
换回4位矢量值。
“与”运算,在所述LSB掩码中仅仅在其分道552a-d的每一个中的LSB位被设置为1,并且该“与”运算(按位逻辑与运算)的结果被存储回矢量寄存器556中。结果,矢量寄存器556现在充当进位掩码,从矢量寄存器551的分道552a的MSB位位置进位位值1。
的位位置5时,分道552a的位位置7(MSB位位置)中的位值1不被进位到分道552b的位位置0(LSB位位置)使得其被丢失。然而,矢量寄存器551然后与充当用于该否则丢失的位值的进位掩码的矢量寄存器556进行“或”运算,并且该“或”运算(按位逻辑或运算)的结果被存储回矢量寄存器551中,从而用该否则丢失的位值填充矢量寄存器551的分道552b的位位置
0(LSB位位置)。
位的缺乏,相同的技术可以用于克服在矢量寄存器的向右位移位操作中从LSB位位置向右
到相邻分道中MSB位的位值进位的缺乏。可能在实现移位-或(shift-OR)位并行串匹配算法中遇到具有这样的在分道之间缺乏位进位的矢量寄存器的这样的向右位移位。在这样的替
代的、向右位移位的情形下,在图6c-e中所描绘的内容中的许多将不变,除了矢量进位掩码
557内的矢量值将向右位移位,而在图6c中被转换为标量值,并且在图6e中矢量寄存器551
将向右位移位。
其中通过控制例程140或240的执行来使得处理器元件150或250中对应的处理器元件执行
前述功能。如将由本领域技术人员认识到的:这些控制例程中的每一个(包括组成其每一个的组件)被选为在被选为实现这些处理器元件中对应的处理器元件的无论什么类型的一个
或多个处理器上操作。
个的各种其它组件中任一个的支持,无论是硬件还是软件组件。
150或250中对应的一个可执行以实例化和初始化测试位掩码D和位掩码B的集合中的每一
个位掩码。如已经描述的,用等于型式532内元素数量的位长度来实例化测试位掩码D和所
有位掩码B。初始化组件用指示型式532内的其相关联的元素的(一个或多个)位置的位值来
填充位掩码B中的每一个。通过用1填充测试位掩码D的位,初始化组件542还循环地准备测
试位掩码D,用于在窗口511和型式532内的元素之间的匹配测试中使用。在这样做中,初始化组件542可以采用SIMD特征来选择性填充在其内用1实例化测试位掩码D的矢量寄存器的
分道,继之以如已经描述的那样选择性地位移位那些分道中的最高有效的,以实现测试位
掩码D的所意图长度的1的序列。初始化组件542可以以此方式初始化该矢量寄存器,仅仅一次,并且然后将其初始化的状态拷贝到另一个矢量寄存器,以用于通过简单地从该其它矢
量寄存器中拷贝回该初始化的状态而在以后使用于重新初始化中。
寄存器551内测试位掩码D的移位。如已经描述的,在MSB位位置处的位值被存储在充当进位掩码的第二矢量寄存器556中(通过与MSB掩码的“与”运算),并且形成矢量进位掩码557,其指示第二矢量寄存器的分道中的零和非零值。矢量进位掩码557的矢量值然后被转换成标
量值,被位移位,并且然后被转换回矢量值。矢量进位掩码557然后用于选择用1填充第二矢量寄存器556中的哪些分道,并且然后与LSB掩码进行“与”运算,使得第二矢量寄存器556被使得仅仅在用1填充了的分道中的LSB位位置处具有1。位移位第一矢量寄存器551,其中
位的预期丢失发生在没有SIMD限制的话位进位就将会以其它方式发生的任何地方,并且第
一和第二矢量寄存器551和556进行“或”运算,使得否则缺失的进位位在其位移位之后被添加到第一矢量寄存器551,并且测试位掩码D是完整的,如它应当是的那样。
示的存储。
量。正如已经解释的,在执行按位操作以针对型式(例如型式532)的元素和移位窗口(例如窗口511)内序列(例如序列531)的部分之间的匹配进行测试中,各种不同的位并行串匹配算法利用测试位掩码(照惯例被指明为“D”)。
1。然而,应当注意的是:其它实施例是可能的,其中这些分道的填充需要用全0来清除它们。
量。如已经讨论的,可以通过再次使用矢量位掩码来实现特定分道的这样的选择性移位。
SIMD架构的处理器元件的部分。如已经描述的,这是通过“与”运算(按位逻辑与运算)来完成的,其中在仍另一个矢量寄存器中的MSB掩码用于有效地仅仅滤过存储了测试位掩码D的
矢量寄存器的分道的MSB位。
LSB位位置处。
1)。在2290处,通过将存储了测试位掩码D的矢量寄存器与所述另一矢量寄存器进行“或”运算,还原那些丢失的位值。
成作为对于将这些计算设备的这样的组件与该示例性处理构架的组件相互关联的帮助。
备之间。此外,组件可以通过各种类型的通信介质通信地耦合到彼此,以协调操作。协调可以涉及信息的单向或双向交换。例如,组件可以以通过通信介质被传送的信号的形式来传
送信息。信息可以实现为被分配给一个或多个信号线的信号。每个消息可以是串行或者基
本上并行地传输的一个信号或多个信号。
些和/或其它组件中的哪些)。在处理器元件950通过耦合装置955如此耦合的情况下,处理器元件950能够执行以上针对计算设备100和/或控制器200详细描述的任务中的各种任务。
耦合装置955可以用信号通过其而被光学和/或电气传送的各种技术或技术组合中的任一
个来实现。此外,耦合装置955的至少部分可以采用符合多种行业标准中任一个的定时和/
或协议,所述行业标准包括而不限于:加速图形端口(AGP)、CardBus(卡总线)、扩展的行业标准架构(E-ISA)、微通道架构(MCA)、NuBus、外围组件互连(扩展的)(PCI-X)、PCI 快速(PCI-E)、个人计算机存储卡国际协会(PCMCIA)总线、HyperTransport™QuickPath(快速路径)等等。
使用,其中一种类型提供使得能够由处理器元件950更快操纵数据的相对快的读和写能力
(但是可能使用恒定需要电力的“易失性”技术),而另一种类型提供非易失性存储的相对高密度(但是很可能提供相对慢的读和写能力)。
不同的接口耦合到其不同的存储设备。通过示例的方式,在易失性存储装置961存在并且基于RAM技术的情况下,易失性存储装置961可以通过存储控制器965a通信地耦合到耦合装置
955,存储控制器965a向易失性存储装置961提供适当的接口,所述易失性存储装置961或许采用行和列寻址,并且其中存储控制器965a可以执行行刷新和/或其它维护任务以帮助保
持在易失性存储装置961内存储的信息。通过另一个示例的方式,在非易失性存储装置962
存在并且包括一个或多个铁磁和/或固态盘驱动器的情况下,非易失性存储装置962可以通
过存储控制器965b通信地耦合到耦合装置955,存储控制器965b向非易失性存储装置962提
供适当的接口,所述非易失性存储装置962或许采用信息块和/或圆柱体和扇区的寻址。通
过仍另一个示例的方式,在可移除介质存储装置963存在并且包括一个或多个光学和/或固态盘驱动器(其采用可移除机器可读存储介质969的一个或多个片段)的情况下,可移除介质存储装置963可以通过存储控制器965c通信地耦合到耦合装置955,存储控制器965c向
可移除介质存储装置963提供适当的接口,所述可移除介质存储装置963或许采用信息块的
寻址,并且其中存储控制器965c可以以特定于延长机器可读存储介质969的寿命的方式来
协调读、擦除和写操作。
执行的指令序列的例程,这取决于每一个所基于的技术。通过示例的方式,在非易失性存储装置962包括基于铁磁的盘驱动器(例如所谓的“硬驱动器”)的情况下,每个这样的盘驱动器典型地采用一个或多个旋转盘(platter),磁响应颗粒的涂层被沉积在所述旋转盘上并且以各种图案被磁性定向,以用类似于诸如软盘之类的可移除存储介质的方式存储诸如指令序列之类的信息。通过另一个示例的方式,非易失性存储装置962可以由固态存储设备的存储体组成,以用类似于紧凑型闪速卡的方式存储诸如指令序列之类的信息。再次,在不同的时间、在计算设备中采用不同类型的存储设备来存储可执行的例程和/或数据是常见
的。因而,包括将由处理器元件950执行的指令序列的例程最初可以被存储在计算机可读存储介质969上,并且可移除介质存储装置963随后可以用于将该例程拷贝到非易失性存储装
置962以用于不需要机器可读存储介质969的持续存在的较长期存储,和/或拷贝到易失性
存储装置961以使得能够在执行该例程时由处理器元件950更快地访问。
的任一个。再次,各种形式的有线或无线信令中的一个或二者可以用于使得处理器元件950能够与输入/输出设备(例如描绘的示例键盘920或打印机925)和/或其它计算设备交互,这可能通过网络(例如网络999)或网络的互连集。承认往往必须由任一个计算设备支持的多个类型的信令和/或协议的往往极大地不同的特性,接口990被描绘为包括多个不同的接口
控制器995a、995b和995c。接口控制器995a可以采用各种类型的有线数字串行接口或射频
无线接口中的任一个,以从诸如描绘的键盘920之类的用户输入设备接收串行传输的消息。
接口控制器995b可以采用各种基于线缆敷设的或无线的信令、定时和/或协议中的任一个,以通过描绘的网络999(或许是包括一个或多个链路的网络,更小的网络,或者或许是因特网)访问其它计算设备。接口995c可以采用各种导电线缆敷设中的任一个,从而使得能够使用串行或者并行的信号传输来向描绘的打印机925传送数据。可以通过接口990的一个或
多个接口控制器通信地耦合的设备的其它示例包括而不限于:麦克风、遥控装置、触笔、读卡器、指纹读取器、虚拟现实交互手套、图形输入平板、操纵杆、其它键盘、视网膜扫描仪、触摸屏的触摸输入组件、跟踪球、各种传感器、激光打印机、喷墨打印机、机械机器人、铣床等。
中往往需要的稍微专门化的附加处理以及所使用的基于线缆敷设的接口的稍微专门化的
性质往往使得供应不同显示接口是合期望的。在显示器980的通信耦合中可以由显示接口
985采用的有线和/或无线信令技术可以利用符合各种行业标准中任一个的信令和/或协
议,所述行业标准包括而不限于各种模拟视频接口、数字视频接口(DVI)、DisplayPort(显示端口)等中的任一个。
述的更多的特征。相反,如以下权利要求所反映的,发明主题在于少于单个公开的实施例的所有特征。因而以下权利要求据此被合并到具体实施方式中,其中每个权利要求独立地作
为分离的实施例。在所附权利要求中,术语“包括”和“其中”分别被用作相应的术语“包括有”和“在其中”的简明话语等同物。此外,术语“第一”、“第二”、“第三”等等仅仅用作标签,并不意图在其对象上强加数字要求。
能的。因此,新颖的架构旨在涵盖落入所附权利要求的精神和范围内的所有这样的变更、修改和变型。详细的公开现在转向提供关于另外的实施例的示例。下面提供的示例并不旨在
是限制性的。
量寄存器,采用第一矢量掩码的矢量值以选择性地填充处理器元件的第二矢量寄存器的分
道的最低有效位(LSB)位置,并且在按位逻辑或运算中将第二矢量寄存器组合到第一矢量寄存器中。
个。
处的位值拷贝到第一矢量掩码,采用矢量值以用1选择性地填充第二矢量寄存器的分道的
位,并且在按位逻辑与运算中组合第二矢量寄存器与充当LSB掩码的第四矢量寄存器以选
择性地填充第二矢量寄存器的分道的LSB位位置。
二矢量掩码以选择性填充对于存储测试位掩码所需的第一矢量寄存器的所述数量的分道,
并且右移位所述数量的分道的最高有效分道以将跨所述数量的分道的全部而填充的位数
调整成等于测试位掩码的位长度。
量寄存器与第一矢量寄存器,并且确定测试位掩码的MSB位处的位值,以确定是否在序列内发现型式。
码以选择性填充对于存储测试位掩码所需的第一矢量寄存器的所述数量的分道,并且右移
位所述数量的分道的最高有效分道以将跨所述数量的分道的全部而填充的位数调整成等
于测试位掩码的位长度。
量寄存器中初始化指示元素所出现于的第一串内的位置的位掩码,在按位逻辑与运算中组
合第三矢量寄存器与第一矢量寄存器,并且确定测试位掩码的最高有效位(MSB)处的位值以确定是否在序列内发现型式。
一个。
寄存器的分道的LSB位位置,并且在按位逻辑或运算中将第二矢量寄存器组合到第一矢量
寄存器中。
MSB位位置处的位值拷贝到第二矢量掩码,采用矢量值以用1选择性地填充第二矢量寄存器
的分道的位,并且在按位逻辑与运算中组合第二矢量寄存器与充当LSB掩码的第四矢量寄
存器以选择性地填充第二矢量寄存器的分道的LSB位位置。
件的第一矢量寄存器中实例化测试位掩码,所述第一矢量寄存器包括多个分道,将第一矢
量寄存器的多个分道的最高有效位(MSB)位置处的位值拷贝到第一矢量掩码作为矢量值,作为标量值而位移位矢量值,位移位第一矢量寄存器,采用第一矢量掩码的矢量值以选择
性地填充处理器元件的第二矢量寄存器的分道的最低有效位(LSB)位位置,并且将第二矢量寄存器向第一矢量寄存器中进行“或”运算。
中的至少一个。
与第一矢量寄存器进行“与”运算,并且确定测试位掩码的MSB位处的位值以确定是否在序列内发现型式。
中,以确定型式是否存在于序列内,在计算设备的处理器元件的第一矢量寄存器中实例化
测试位掩码,所述第一矢量寄存器包括多个分道,将第一矢量寄存器的多个分道的最高有
效位(MSB)位位置处的位值拷贝到第一矢量掩码作为矢量值,作为标量值而位移位矢量值,位移位第一矢量寄存器,采用第一矢量掩码的矢量值以选择性地填充处理器元件的第二矢
量寄存器的分道的最低有效位(LSB)位位置,并且在按位逻辑或运算中将第二矢量寄存器组合到第一矢量寄存器中。
个。
型式。
逻辑与运算中组合第三矢量寄存器与第一矢量寄存器,并且确定测试位掩码的MSB位处的
位值以确定是否在序列内发现型式。
计算设备的处理器元件的第一矢量寄存器中实例化测试位掩码,所述第一矢量寄存器包括
多个分道,将第一矢量寄存器的多个分道的最高有效位(MSB)位位置处的位值拷贝到第一矢量掩码作为矢量值,作为标量值而位移位矢量值,位移位第一矢量寄存器,采用第一矢量掩码的矢量值以选择性地填充处理器元件的第二矢量寄存器的分道的最低有效位(LSB)位位置,并且在按位逻辑或运算中将第二矢量寄存器组合到第一矢量寄存器中。
个。
型式。
逻辑与运算中组合第三矢量寄存器与第一矢量寄存器,并且确定测试位掩码的MSB位处的
位值,以确定是否在序列内发现型式。