字符串比较指令优化的中央处理单元以及其操作方法与流程

文档序号:11949458阅读:269来源:国知局
字符串比较指令优化的中央处理单元以及其操作方法与流程

本发明涉及中央处理单元(CPU)的字符比较指令优化。



背景技术:

中央处理单元的指令集设计必须在硬件成本以及执行效率之间权衡。如何以低成本硬件在中央处理单元内供应高效指令集为本技术领域重要课题。以X86指令集中的字符串比较指令为例,这些指令加速对XML文本的字符串操作、存储校验等,其大幅优化文本处理,从而提升了办公性能。然而在传统的中央处理单元中,字符串比较指令需要译码为上百条微运算(或微操作或“μops”),中央处理单元的执行单元须执行完这上百条的微运算才能完成该字符串比较指令,执行效率低下。



技术实现要素:

根据本发明一种实施方式所实现的中央处理单元提供字符串比较指令,且包括字符串缓存器、移位寄存器以及逻辑运算单元。该字符串缓存器以多个缓存单元储存第一字符串的多个数据单元。该移位寄存器令载入的第二字符串的多个数据单元在该移位寄存器的多个缓存单元间逐步移位。所述比较器将该字符串缓存器的所述缓存单元的内容与该移位寄存器的所述缓存单元的内容进行比较。该逻辑运算单元用于根据所述比较器的输出对应该字符串比较指令要求的比较模式运算该第一字符串以及该第二字符串的比较结果。

根据本发明一种实施方式所实现的一种中央处理单元操作方法以中央处理单元执行字符串比较指令,包括:以该中央处理单元的字符串缓存器的多个缓存单元储存第一字符串的多个数据单元;令第二字符串的多个数据单元在该中央处理单元的移位寄存器的多个缓存单元间逐步移位;将该字符串缓存器的所述缓存单元的内容与该移位寄存器的所述缓存单元的内容进行比较;以及根据上述比较的结果,对应该字符串比较指令要求的比较模式,运算该第一字符串以及该第二字符串的比较结果。

移位寄存器的设计使得中央处理单元得以在少数时钟周期内完成字符串比较指令。

下文特举实施例,并配合所附图示,详细说明本发明内容。

附图说明

图1图解根据本发明一种实施方式所实现的中央处理单元100;

图2以流程图显示根据本发明中央处理单元的微架构,字符串比较指令可转换为三个中央处理单元微运算(包括:字符串有效长度辨识微运算202;比较操作微运算204;以及比较结果产生微运算206)依序进行;以及

图3依序图解该移位寄存器104内容。

具体实施方式

以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照申请权利要求书来界定。

图1图解根据本发明一种实施方式所实现的中央处理单元100,执行字符串比较指令并包括:字符串缓存器102、移位寄存器104、多个多工器Mux1~Mux7、多个比较器cmp0~cmp7、零值比较器Zero_cmp、以及逻辑运算单元106。

字符串缓存器102以多个缓存单元储存第一字符串SRC1的多个数据单元(例如图1中编号0至7,但本发明并不限于8个数据单元)。移位寄存器104则可有两种输入,一为零值ZERO,一为第二字符串SRC2。载入该移位寄存器104的数据的多个数据单元(例如图1中编号0至7,但本发明并不限于8个数据单元)会在该移位寄存器104的多个缓存单元间逐步移位。所述多工器Mux1~Mux7耦接在该移位寄存器104以及所述比较器cmp0~cmp7之间,在第一模式以及第二模式间切换。所述多工器Mux1~Mux7在该第一模式时,所述比较器cmp0~cmp7是分别将该字符串缓存器102的各个缓存单元的内容与该移位寄存器104的该最低位缓存单元(图1中为储存标号’0’数据单元的该缓存单元)的内容进行比较。所述多工器Mux1~Mux7在该第二模式时,所述比较器cmp0~cmp7是分别将该字符串缓存器102的各个缓存单元的内容与该移位寄存器104的各个缓存单元的内容一对一进行比较。

该字符串比较指令所要求的比较模式可为:逐个相等比较模式(Equal Any)、逐个大小比较模式(Ranges)、子字符串比较模式(Equal Ordered)以及全相等比较模式(Equal Each),分别对第一字符SRC1以及第二字源SRC2有不同的比较操作。为实现之,除了字符串缓存器102缓存第一字符SRC1外,填入该移位寄存器104的是该第二字符串SRC2。

所述多工器Mux1~Mux7的该第一模式操作可用于满足上述逐个相等比较模式(Equal Any)及逐个大小比较模式(Ranges)。比较器cmp0~cmp7将该字符串缓存器102的所述缓存单元的内容(第一字符串SRC1编号’0’至’7’的数据单元)反复于多个时钟周期中与该移位寄存器104的该最低位缓存单元的内容比较。在连续的8个时钟周期中,该移位寄存器104的该最低位缓存单元的内容循序为编号’0’数据单元、编号’1’数据单元、编号’2’数据单元、编号’3’数据单元、编号’4’数据单元、编号’5’数据单元、编号’6’数据单元、以及编号’7’数据单元。该字符串比较指令要求的比较模式为上述逐个相等比较模式(Equal Any)时,该逻辑运算单元106根据所述比较器cmp0~cmp7的输出运算该第二字符串SRC2的所述数据单元(编号’0’至’7’)中任一个与该第一字符串SRC1的所述数据单元(编号’0’至’7’)中任一个的比较结果。该字符串比较指令要求的比较模式为上述逐个大小比较模式(Ranges)时,该逻辑运算单元106根据所述比较器cmp0~cmp7的输出判断该第二字符串SRC2的所述数据单元(编号’0’至’7’)中任一个如何相对至该第一字符串SRC1的所述数据单元(编号’0’至’7’)所界定的范围,例如比较第二字符串SRC2编号’0’的数据单元是否落入第一字符串SRC1编号’0’与编号’1’的数据单元之间的范围,如是则输出命中(hit)信号,如否则再判断其是否落入第一字符串SRC1编号’1’与编号’2’的数据单元之间的范围…直至找到命中的范围或者比较完所有的范围;然后移位寄存器104移位,取第二字符串SRC2编号’1’的数据单元再进行上述比较…以此类推直至第二字符串SRC2编号’7’的数据单元完成上述比较。

所述多工器Mux1~Mux7的该第二模式操作可用于满足上述全相等比较模式(Equal Each)以及子字符串比较模式(Equal Ordered)。在单一时钟周期,比较器cmp0~cmp7将该字符串缓存器102的所述缓存单元的内容(第一字符串SRC1编号’0’至’7’的数据单元)与该移位寄存器104的所述缓存单元的内容(第一字符串SRC1编号’0’至’7’的数据单元)一对一比较(即,第一字符串SRC1的编号’0’数据单元与第二字符串SRC2的编号’0’数据单元比较,第一字符串SRC1的编号’1’数据单元与第二字符串SRC2的编号’1’数据单元比较,以此类推至第一字符串SRC1的编号’7’数据单元与第二字符串SRC2的编号’7’数据单元比较)。该字符串比较指令要求的比较模式为上述全相等比较模式(Equal Each)时,该逻辑运算单元106根据所述比较器cmp0~cmp7的输出运算该第一字符串SRC1以及该第二字符串SRC2对应位者是否相等的比较结果。该字符串比较指令要求的比较模式为上述子字符串比较模式(Equal Ordered)时,该逻辑运算单元106根据所述比较器cmp0~cmp7的输出判断出该第一字符串SRC1以及该第二字符串SRC2之间相同的子字符串,具体而言,在该子字符串比较模式下,在第1个时钟周期,比较器cmp0~cmp7将该第一字符串SRC1的内容(编号’0’至’7’的数据单元)与该移位寄存器104中第二字符串SRC2的内容(编号’0’至’7’的数据单元)一对一比较,看是否命中;在第2个时钟周期,该移位寄存器104向右移位,比较器cmp0~cmp7将该第一字符串SRC1的内容(编号’0’至’7’的数据单元)与该移位寄存器104中第二字符串SRC2的内容(编号’1’至’7’的数据单元)一对一比较….,以此类推直到在第8个时钟周期,比较器cmp0~cmp7将该第一字符串SRC1的内容(编号’0’至’7’的数据单元)与该移位寄存器104中第二字符串SRC2的内容(仅剩编号至’7’的数据单元)比较。

整理之,逻辑运算单元106包括根据所述比较器cmp0~cmp7的输出对应该字符串比较指令要求的比较模式运算该第一字符串SRC1以及该第二字符串SRC2的比较结果。

由于在执行字符串比较指令时,首先要辨识比较指令的操作数(即所比较的第一字符串SRC1和第二字符串SRC2)的有效长度,以便于对逻辑运算单元106的输出进行处理,对于无效位置的数据单元所对应的输出则直接丢弃。现有技术需要额外进行零值比较器,硬件成本较高,而本发明一实施例还可复用执行字符串比较指令的多个比较器cmp0~cmp7来进行第一字符串SRC1或第二字符串SRC2的有效长度辨识。详言之,所述多工器Mux1~Mux7的该第二模式操作还可复用于第一字符串SRC1的有效长度辨识。为实现之,字符串缓存器102缓存第一字符SRC1,且填入该移位寄存器104的是零值。单一时钟周期中,比较器cmp0~cmp7将该字符串缓存器102的所述缓存单元的内容(第一字符串SRC1编号’0’至’7’的数据单元)与都为零值的八个数据单元一对一比较。据此,该逻辑运算单元106辨识出该第一字符串SRC1的有效长度。至于第二字符串SRC2有效长度辨识,图1所示实施方式是以该零值比较器Zero_cmp将该第二字符串SRC2与零值比较。据此,该逻辑运算单元106根据该零值比较器Zero_cmp的输出辨识出该第二字符串SRC2的有效长度。以上第一字符串SRC1以及第二字符串SRC2的有效长度可安排在同一时钟周期获得,且安排在该字符串比较指令的初始化阶段。在其它实施例中,也可将比较器cmp0~cmp7复用于第二字符串SRC2的有效长度辨识。为实现之,移位寄存器104缓存第二字符SRC2,且填入字符串缓存器102的是零值。单一时钟周期中,比较器cmp0~cmp7将移位寄存器104(此时不移位)的所述缓存单元的内容与都为零值的八个数据单元一对一比较。据此,该逻辑运算单元106在一个时钟周期辨识出该第二字符串SRC2的有效长度。此实施例中,第一字符串SRC1有效长度辨识则是在同一时钟周期以另一零值比较器将该第一字符串SRC1与零值比较。

图1所示的中央处理单元100的设计属于中央处理单元的执行单元(execution unit)内的硬件架构设计,例如特别地为执行单元中执行字符串比较指令的单指令多数据(Single Instruction Multiple Data,SIMD)执行单元的硬件架构设计。现有技术中,要执行字符串比较指令的大量比较操作(包括辨识字符串有效长度时与零值的比较操作,及两个字符串的复数基本单元之间的两两比较操作)需要复用执行单元中的整形单元(IU)中的比较器来实现,占用硬件资源多;并且一个字符串比较指令需要译码为多达上百条的微运算(或微操作或“μops”)通过多个时钟周期才能完成,这些微运算分别实现辨识有效长度、缓存、比较、移位以及比较结果生成等操作。而本发明采用上述执行单元的微架构后,则可仅需3条的微运算就可实现该字符串比较指令,这3条微运算包括:字符串有效长度辨识μop、比较操作μop以及比较结果生成μop(后面图2详细描述),占用较少硬件资源的同时又缩短了字符串比较指令的执行周期。该执行单元架构通用该字符串比较指令所要求的所有比较模式(包括逐个相等比较模式(Equal Any)、逐个大小比较模式(Ranges)、全相等比较模式(Equal Each)以及子字符串比较模式(Equal Ordered)),还在时钟周期中达到第一字符串SRC1以及第二字符串SRC2的有效长度辨识。相较于不涉及流水线(pipeline)设计的传统字符串比较指令,本发明如此流水线设计显著加快字符串比较指令的执行速度。此外,上述数据单元的大小可弹性设计,例如:为1位、2位(1字符)、4位(2字符)、8位(4字符)、16位(8字符)…等,端取决于流水线复杂度以及时钟周期消耗之间如何权衡。该字符串比较指令,举例而言为SSE4.2指令集中新加入的字符串比较指令,例如SSEPCMPxSTRx指令,其例如包括PCMPESTRI,PCMPESTRM,PCMPISTRI,PCMPISTRM指令等对应不同比较模式的字符串比较指令。

图2以流程图显示根据本发明的中央处理单元的微架构字符串比较指令可转换为三个中央处理单元(CPU)微运算(μops):字符串有效长度辨识微运算202;比较操作微运算204;以及比较结果产生微运算206依序进行。上述于时钟周期实现的第一字符串SRC1以及第二字符串SRC2的有效长度辨识即对应该字符串有效长度辨识微运算202,此时多工器Mux1~Mux7操作在该第二模式、且填入该移位寄存器104的是零值(或者填入该字符串缓存器102的是零值)。比较操作微运算204和比较结果产生微运算206执行时,填入该移位寄存器104的则是第二字符串SRC2(或者填入该字符串缓存器102的是第一字符串SRC1),至于多工器Mux1~Mux7则是视该字符串比较指令要求的比较模式在该第一或该第二模式操作。逻辑运算单元106的动作则是对应该比较结果产生微运算206。

图3依序图解该移位寄存器104内容。字符串有效长度辨识微运算202执行时,对应标号302,该移位寄存器104储存的是零值。比较操作微运算204执行时,对应标号304~318,八个时钟周期中,填入该移位寄存器104的第二字符串SRC2的标号’0’~标号’7’的数据单元循序移位;移位寄存器104最低位缓存单元的内容依序是编号’0’、’1’、’2’、’3’、’4’、’5’、’6’以及’7’。

本发明另一种实施方式还实现一种中央处理单元操作方法,对应图1,以中央处理单元100执行字符串比较指令,包括:以该中央处理单元100的字符串缓存器102的多个缓存单元储存第一字符串SRC1的多个数据单元(编号’0’至’7’);令第二字符串SRC2的多个数据单元(编号’0’至’7’)在该中央处理单元100的移位寄存器104的多个缓存单元间逐步移位;将该字符串缓存器102的所述缓存单元的内容与该移位寄存器104的所述缓存单元的内容进行比较;以及根据前述比较的结果,对应该字符串比较指令要求的比较模式,运算该第一字符串SRC1以及该第二字符串SRC2的比较结果。

在其他实施方式中,多工器Mux1~Mux7不使用。微架构单纯为该字符串比较指令所要求的逐个相等比较模式(Equal Any)或逐个大小比较模式(Ranges)使用,或者单纯为该字符串比较指令所要求的全相等比较模式(Equal Each)或子字符串比较模式(Equal Ordered)使用。

虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟悉此项技艺者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视权利要求书所界定的为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1