用以加速空终止字符串操作的方法.pdf

上传人:xia****o6 文档编号:1027368 上传时间:2018-03-26 格式:PDF 页数:18 大小:475.63KB
返回 下载 相关 举报
摘要
申请专利号:

CN200980113582.1

申请日:

2009.02.03

公开号:

CN102007469A

公开日:

2011.04.06

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 7/38公开日:20110406|||公开

IPC分类号:

G06F7/38

主分类号:

G06F7/38

申请人:

阿斯奔收购公司

发明人:

马杨·穆德吉尔

地址:

美国加利福尼亚州

优先权:

2008.02.18 US 61/029,422

专利代理机构:

北京律盟知识产权代理有限责任公司 11287

代理人:

刘国伟

PDF下载: PDF下载
内容摘要

一种方法读取且比较第一与第二寄存器值,每一寄存器值具有至少两个字节的大小。如果出现以下情况,则第三寄存器指示匹配:(1)所述第一寄存器值中的字节等于(或另一选择为,不等于)所述第二寄存器值中的对应字节,或(2)如果所述第一寄存器值中的字节为零。接下来,将第四寄存器值设定为以下各项中的一者:(1)如果所述第一与第二寄存器值中的对应字节相等(或另一选择为,不相等),则为匹配字节的计数,或(2)如果所述第一与第二寄存器值中的所述对应字节不相等(或另一选择为,相等),则为0与n-1之间的范围之外的数。所述值n为等于所述第一与第二寄存器值中的字节数的整数。

权利要求书

1.一种由处理器执行的方法,其包括:读取第一寄存器值,其中所述第一寄存器值包括至少两个字节;读取第二寄存器值,其中所述第二寄存器值包括至少两个字节,其中所述第一寄存器值与所述第二寄存器值两者包括相同的字节数;将所述第一寄存器值的所述字节与所述第二寄存器值的所述字节相比较;如果出现以下情况,则将第三寄存器设定为指示匹配(1)所述第一寄存器值中的字节等于所述第二寄存器值中的对应字节,或(2)如果所述第一寄存器值中的字节为零;及将第四寄存器值设定为(1)如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数;或(2)如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则为包括0与n-1之间的数的值范围之外的数,其中n为对应于所述第一及第二寄存器值中的字节数的整数。2.根据权利要求1所述的方法,其中如果所述处理器为高字节置前,则从最高有效字节到最低有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。3.根据权利要求1所述的方法,其中如果所述处理器为低字节置前,则从最低有效字节到最高有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。4.根据权利要求1所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器。5.根据权利要求1所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,且将所述第三寄存器中的一个位设定为指示所述匹配。6.根据权利要求1所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,且当做出所述第一寄存器值中的字节等于所述第二寄存器值中的对应字节的确定时,将所述第三寄存器设定为第一匹配值,否则当所述第一寄存器值中的字节为零时,将所述第三寄存器设定为第二匹配值。7.根据权利要求1所述的方法,其中如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则将所述第四寄存器值设定为-1。8.根据权利要求1所述的方法,其中同时设定所述第三寄存器及所述第四寄存器值。9.根据权利要求1所述的方法,其中至少两个单独寄存器与所述处理器协作以执行所述方法。10.根据权利要求1所述的方法,其中所述处理器以预定字节边界开始往寄存器中加载。11.根据权利要求1所述的方法,其中将所述第一寄存器值的所述字节仅与所述第二寄存器值的最低字节相比较。12.根据权利要求1所述的方法,其进一步包括:如果不指示匹配,则修改所述第三寄存器。13.根据权利要求12所述的方法,其中:所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,设定所述位,且当不指示所述匹配时,清除所述位。14.根据权利要求12所述的方法,其中:所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,清除所述位,且当指示所述匹配时,设定所述位。15.根据权利要求12所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,设定所述多个位中的一个位,且当不指示所述匹配时,清除所述一个位。16.根据权利要求12所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,清除所述多个位中的一个位,且当不指示所述匹配时,设定所述一个位。17.一种由处理器执行的方法,其包括:读取第一寄存器值,其中所述第一寄存器值包括至少两个字节;读取第二寄存器值,其中所述第二寄存器值包括至少两个字节,其中所述第一寄存器值与所述第二寄存器值两者包括相同的字节数;将所述第一寄存器值的所述字节与所述第二寄存器值的所述字节相比较;如果出现以下情况,则将第三寄存器设定为指示匹配(1)所述第一寄存器值中的字节不等于所述第二寄存器值中的对应字节,或(2)如果所述第一寄存器值中的字节为零;及将第四寄存器值设定为(1)如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数,或(2)如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应字节,则为包括0与n-1之间的数的值范围之外的数,其中n为对应于所述第一及第二寄存器中的任一者中的字节数的整数。18.根据权利要求17所述的方法,其中如果所述处理器是高字节置前,则从最高有效字节到最低有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。19.根据权利要求17所述的方法,其中如果所述处理器是低字节置前,则从最低有效字节到最高有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。20.根据权利要求17所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器。21.根据权利要求17所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,且将所述第三寄存器中的一个位设定为指示所述匹配。22.根据权利要求17所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,且当做出所述第一寄存器值中的字节不等于所述第二寄存器值中的对应字节的确定时,将所述第三寄存器设定为第一匹配值,否则当所述第一寄存器值中的字节为零时,将所述第三寄存器设定为第二匹配值。23.根据权利要求17所述的方法,其中如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节时,将所述第四寄存器值设定为-1。24.根据权利要求17所述的方法,其中同时设定所述第三寄存器及所述第四寄存器值。25.根据权利要求17所述的方法,其中至少两个单独寄存器与所述处理器协作以执行所述方法。26.根据权利要求17所述的方法,其中所述处理器以预定字节边界开始往寄存器中加载。27.根据权利要求17所述的方法,其中将所述第一寄存器值的所述字节仅与所述第二寄存器值的最低字节相比较。28.根据权利要求17所述的方法,其进一步包括:如果不指示匹配,则修改所述第三寄存器。29.根据权利要求28所述的方法,其中:所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,设定所述位,且当不指示所述匹配时,清除所述位。30.根据权利要求28所述的方法,其中:所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,清除所述位,且当指示所述匹配时,设定所述位。31.根据权利要求28所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,设定所述多个位中的一个位,且当不指示所述匹配时,清除所述一个位。32.根据权利要求28所述的方法,其中:所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,清除所述多个位中的一个位,且当不指示所述匹配时,设定所述一个位。

说明书

用以加速空终止字符串操作的方法

相关申请案的交叉参考

此美国专利申请案是首次申请的专利申请案且优先权上不依赖任何其它专利申请案。

技术领域

如所属领域的技术人员应了解,一些编程语言(包含C及C++语言)产生空终止字节串。本发明通过提议一指令族以加速处理标准串函数来利用C及C++编程语言的此特性。

背景技术

如所属领域的技术人员应明了,C及C++编程语言产生为空终止字符的标准串。空终止字节串是其中串的末尾是用0字节指示的串。

当处理串时,某些密钥核的性能可确定整个应用程序的性能。所述函数通常是标准库(具体来说,ISO C标准的章节7.21)中所定义的函数,例如:(1)strlen函数,(2)strcmp函数,(3)strcpy函数及(4)strchr函数。

执行所述函数中的任一者可均需要大量处理器时间。因此,此项技术中需要有助于减少处理时间的方法。

发明内容

本发明提供用以减少某些指令的总处理时间的至少两种方法。

具体来说,本发明至少部分地基于由除其它之外的C及C++编程语言产生的选定字节串的空终止字符。

本发明提议由于空终止字符串而准许加速所述函数的最小指令集。换句话说,本发明的一个方面认识到空终止字符串的存在且利用所述空终止字符串。在这样做时,本发明增加处理速度及效率。

在本发明的一个所提议指令集中,本发明提供包含读取第一及第二寄存器值的方法,所述第一及第二寄存器值两者在长度上至少为两个字节。在此方法中,所述第一与第二寄存器值具有相同字的节数。因此,将所述第一寄存器值的字节与所述第二寄存器值的字节相比较是简单的任务。在比较所述第一与第二寄存器值之后,如果出现以下情况所述方法将第三寄存器设定为指示匹配:(1)所述第一寄存器值中的字节等于所述第二寄存器值中的对应字节,或(2)如果所述第一寄存器值中的字节为零。另外,所述方法将第四寄存器值设定为:(1)如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数,或(2)如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节时,则为包括0与n-1之间的数的值范围之外的数。如应明了,n为对应于所述第一与第二寄存器值中的字节数的整数。

在此方法的替代方案中,本发明还提供其中读取第一及第二寄存器值的方法,所述第一与第二寄存器值两者在长度上至少为两个字节。如在所述第一实例中,预期所述第一与第二寄存器值为相同长度。将所述第一寄存器值的所述字节与所述第二寄存器值的所述字节相比较。如果出现以下情况将第三寄存器设定为指示匹配:(1)所述第一寄存器值中的字节不等于所述第二寄存器值中的对应字节,或(2)所述第一寄存器值中的字节为零。将第四寄存器值设定为(1)如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数,或(2)如果所述第一寄存器值中的字节等于所述第二寄存器值中的所述对应字节,则为包括0与n-1之间的数的值范围之外的数。如前所述,n为对应于所述第一与第二寄存器中的任一者中的字节数的整数。

本发明还提供如果所述处理器是高字节置前,则从最高有效字节到最低有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。

本发明的另一方面提供如果所述处理器为低字节置前,则从最低有效字节到最高有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。

关于所述第三寄存器,本发明的一个方面是将所述第三寄存器提供为具有一个位的条件旗标寄存器。

本发明进一步提供所述第三寄存器为具有多于一个位的条件寄存器。在此实例中,可将所述第三寄存器的数个位中的一个位设定为指示所述匹配。

本发明的又一方面提供所述第三寄存器可以为包括数个位的条件寄存器。在此变化形式中,相依于所述第一寄存器值中的所述字节是等于所述第二寄存器值中的所述对应字节还是所述第一寄存器值中的第一字节为零,所述第三寄存器可保留不同值。

关于所述第四寄存器值,如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则本发明准许将所述值设定为-1。

本发明的另一方面提供同时设定所述第三及第四寄存器值。

本发明的一个进一步方面提供至少两个单独寄存器与所述处理器协作来执行所述方法。

本发明的又一方面预期所述处理器可以预定字节边界开始往寄存器中加载。

在另一变化形式中,将所述第一寄存器值的所述字节仅与所述第二寄存器值的最低字节相比较。

在又一进一步变化形式中,本发明包含如果不指示匹配,则修改所述第三寄存器。

在本发明的另一方面中,所述第三寄存器可以为包含一个位的条件旗标寄存器,当指示所述匹配时可设定所述一个位。另一选择为,当不指示所述匹配时,可清除所述位。

本发明的一个方面提供其中所述第三寄存器为具有一个位的条件旗标寄存器的方法,当指示所述匹配时可清除所述一个位。另一选择为,当指示所述匹配时,可设定所述位。

在本发明的另一方面中,所述第三寄存器可以为具有多个位的条件寄存器。当指示所述匹配时,可设定所述多个位中的一个位,或当不指示所述匹配时,可清除所述位。

在本发明的又一方面中,所述第三寄存器可以为具有数个位的条件寄存器。当指示所述匹配时,可清除所述数个位中的一个位。另一选择为,当不指示所述匹配时,可设定所述位。

从以下论述将明了本发明的又进一步方面。

附图说明

现在将结合随附的图式描述本发明,所述图式中:

图1是本发明方法的第一实施例的第一部分;

图2是图1中所图解说明的方法的第一实施例的第二部分;

图3是本发明方法的第二实施例的第一部分;且

图4是图1中所图解说明的方法的第二实施例的第二部分。

具体实施方式

现在将结合各种所预期实施例描述本发明。所述实施例打算对本发明进行说明且未对本发明的范围加以任何限制。因此,如所属领域的技术人员应了解,存在可在不背离本发明的范围及精神的情形下采用的众多变化形式及等效内容。所述变化形式及等效内容中的每一者也打算由本发明的范围囊括。

出于描述本发明的目的,已进行了数种假设。第一,假设处理器中的指令能够同时设定寄存器及条件旗标或位。第二,假设处理器中的指令能够读取至少2个单独寄存器。第三,假设处理器具有多字节寄存器(例如32位寄存器)。第四,假设处理器可在任何字节边界处开始往寄存器中加载。此第四假设对于实施本发明并不是必须的。然而,此第四假设极大地简化了对本发明的说明,如下文显而易见。

对于本发明,提议两种指令。第一种指令称为ffzbe指令。第二种指令称为ffzbn指令。字母“ffzbe”打算指代“找到首位零或字节相等”。字母“ffzbn”打算指代“找到首位零或字节不相等”。当然,对于所述指令的名字的选择对于本发明并不重要。可选择任何其它名字,此并不背离本发明的范围。

ffzbe指令

ffzbe指令包含以下操作:(1)读取两个寄存器值,RA及RB,(2)写入寄存器值RT及条件位/旗标,(3)相依于处理器是高字节置前还是低字节置前,从最高有效字节(“MSB”)到最低有效字节(“LSB”)或从LSB到MSB检查字节RA及RB,(4)如果RA中的字节的值为零或等于RB的对应字节,则将条件位中的标记或旗标设定为指示匹配,(5)如果第一匹配是相等字节的匹配,则将RT设定为匹配字节的计数,及(6)否则,将RT的值设定为在范围0、...num_bytes_in_register-1之外的值。一个此类选择是-1。

下面在码段#1中阐述针对此指令的伪C。关于码段#1,已进行了数种假设。第一,假设处理器使用条件位且所述指令总是将所述条件位设定/清除为零。第二,假设寄存器宽度为4个字节。第三,假设处理器是高字节置前。在所述假设下,下面呈现码段#1。

码段#1

for(i=0;i<4;i++){

  ba=(ra>>(8*i))&0xff;/*find the i-th byte */

  bb=(rb>>(8*i))&0xff;

  if(ba==bb){

    cbit0=1;

    rt=i;

  }

  else if(ba==0){

    cbit=1;

    rt=-1;

  }

}

借助码段#1,相对直接地找到零终止串的长度(strlen指令/操作)。在伪汇编码中,如下面在码段#2中所详细说明可呈现非优化汇编版本:

码段#2

;;;strlen:takes one argument

;;;   radr:address of string

strlen:

       li     rz,0           ;initialize RB to 0

       li     rlen,0         ;initialize length to  0

loop:

       ld     rval,radr,0   ;load from radr

       ffzbe  rpos,rval,rz  ;check if any byte 0

       jtrue  cb0,found

       add    rlen,rlen,4   ;bump length

       add    radr,radr,4   ;bump address

found:

       add    rlen,rlen,rpos

       add    rlen,rlen,-1  ;subtract one for the 0 byte

       return rlen

如所属领域的技术人员可明了,码段#2的优化实施方案将与上文所详细说明的非优化实例相当不同。除其它之外,预期所述优化实施方案利用更复杂的指令,例如加载并更新指令。此外,预期码段#2的优化版本将不保持长度字段。代替地,预期码段#2的优化版本将依赖原始地址及最后所加载地址之间的差来计算所述长度。

还如所属领域的技术人员可了解,可相当直接地实现找到特定字节在串中的位置(strchr指令/操作)。应注意,如果没有找到字符,则strchr操作返回0。否则,所述操作返回指向所述串中的字符的指针。码段#3提供此操作的一个实例:

码段#3

;;;strchr:takes two argument

;;;    radr:address of string

;;;    rc:  byte being located

          shl   rc2,rc,8

          or    rc2,rc2,rc

          shl   rc4,rc2,16

          or    rc4,rc4,rc2

strchr:

loop:

          ld    rval,radr,0    ;load from radr

          ffzbe rpos,rval,rc4  ;check if any byte 0 or rc

          jtrue cb0,found

          add   radr,radr,4    ;bump address

found:

          cmp    cb1,rpos,-1   ;check if 0 found first

          jfalse cb1,found_byte

          return 0               ;0found first

found_byte:

          add    radr,radr,rpos

          return radr

最后,如所属领域的技术人员可了解,此指令可用于写入有效串拷贝指令(也称为strcpy指令)。下面在码段#4中提供strcpy指令的实例。

码段#4

;;;strcpy:takes two argument

;;;    rdst:  address being written to

;;;    rsrc:  address of string

strcpy:

          li      rz,0

          cpy     rorig,rdst       ;original address of dest

loop:

          ld      rval,rsrc,0     ;load from radr

          ffzbe   rpos,rval,rz    ;check if any byte 0or rc

          jtrue   cb0,found

          st      rval,rdst,0     ;copy value

          add     radr,radr,4     ;bump addresses

          add     rdst,rdst,4

found:

          stb     rval,rdst,0

          cmpe    cb1,rpos,0

          jtrue   done

          shr     rval,rval,8

          stb     rval,rdst,1

          cmpe    cb1,rpos,1

          jtrue   done

          shr     rval,rval,8

          stb     rval,rdst,2

          cmpe    cb1,rpos,2

          jtrue   done

          shr     rval,rval,8

          stb     rval,rdst,3

done:

          return  rorig

如可期望,码段#4可以数种不同方式优化。尽管此处未提供优化的细节,但应注意所述码可尤其在标签“found”与“done”之间(其中拷贝所述串的最后数个字节)进行优化。

ffzbn指令

ffzbn指令包含以下操作:(1)读取两个寄存器值,RA及RB,(2)写入寄存器值RT及条件位/旗标,(3)相依于处理器是高字节置前还是低字节置前,从最高有效字节(“MSB”)到最低有效字节(“LSB”)或从LSB到MSB检查RA及RB的字节,(4)如果RA中的字节的值为零或不等于RB的对应字节,则将条件位或旗标中的标记设定为指示匹配,(5)如果第一匹配是不相等字节的匹配,则将RT设定为匹配字节的计数,及(6)否则,将RT的值设定为在范围0、...num_bytes_in_register-1之外的值。一个此类选择将是-1。

可如下面在码段#5中所阐述写入针对此指令的伪C码。码段#5是基于数种假设。第一,假设处理器使用条件位。第二,假设指令总是将所述条件位设定/清除为零。第三,假设寄存器宽度为4个字节。第四,假设处理器为高字节置前。在所述四个假设下,呈现码段#5作为本发明的一个实例。

码段#5

for(i=0;i<4;i++){

  ba=(ra>>(8*i))&0xff;/*find the i-th byte*/

  bb=(rb>>(8*i))&0xff;

  if(ba !=bb){

    cbit0=1;

    rt=i;

  }

  else if(ba==0){

    cbit=1;

    rt=-1;

  }

}

码段#5中所呈现的指令可用于写入有效串比较指令,也称为“strcmp”。下面,将此指令呈现为码段#6。

码段#6

;;;strcmp:takes two argument

;;;    rad0:  address of first string

;;;    rad1:  address of second string

strcmp:

loop:

          ld      rv0,rad0,0       ;load from strings

          ld      rv1,rad1,0

          ffzbn   rpos,rval,rz     ;check for 0or !=byte

          jtrue   cb0,found

          add     rad0,rad0,4      ;bump addresses

          add     rad1,rad1,4

found:

          cmpe    cb1,rpos,-1

          jtrue   equal

          mul     rpos8,rpos,8     ;number of bits

        shl    rv0,rv0,rpos8

        shl    rv1,rv1,rpos8

        and    rv0,rv0,0xff

        and    rv1,rv1,0xff

        sub    rdif,rv0,rv1

        return rdif

equal:

        return 0

码段#6并非经优化写入。所属领域的技术人员应明了优化且因此本文并不详细说明。

额外信息

参照ffzbe指令及ffzbn指令,存在预期作为本发明的一部分的数种变化形式。

针对所述指令两者所预期的一个变化形式避免对照RB的个别字节的比较。在此变化形式中,仅对照RB的最低字节作出比较。此特定变化形式(至少对于ffzbe指令)准许在不需要在函数的起初(或开始)进行拷贝的情形下实施strchr指令。如所属领域的技术人员可了解,此减少处理时间且增加处理效率。

另一所预期变化形式是关于条件位/旗标在所述旗标/位不需要设定时的处置。在此变化形式中,存在数种所预期选项。在一个选项中,每当执行ffzbe指令或ffzbn指令时设定或清除所述旗标/位。在第二选项中,如上文所规定当(1)遇到零字节或(2)当遇到相等及/或不相等字节时设定条件旗标/位。在此选项中,如果不满足所述条件,则不改动条件旗标。

当处理器使用用信号表示多个条件的条件旗标时,预期又一变化形式。条件包含但不限于(1)大于、(2)小于、(3)等于或这三个条件的组合。多个旗标的存在准许指令通过设定不同旗标来在零字节匹配情况与相等/不相等匹配情况之间进行区分。此外,根据上文所提供的伪C说明,ffzbn指令也可比较第一不相等字节并相依于ba>bb或ba<bb设定大于/小于旗标。

在现有技术中可存在类似于本发明的所述方面的方面。最接近的实例或许是Power PC 440的dlmbz指令。此指令搜索通过级联第一字节为0的两个寄存器所形成的8字节值。可认为此指令具有ffzbe指令的功能性,其中rb=0,由此准许将所述指令用于strcpy及strlen。然而,除其它缺点之外,dlmbz指令没有加速函数(例如strcmp及strchr),如所属领域的技术人员应明了。

如前文已明了,本发明呈现各种不同实施例及变化形式,其总结如下并结合图式进行论述。

本发明呈现可由处理器执行的所执行方法10。在图1及2中图解说明方法10。

方法10开始于12处。在14处,方法10读取在长度上为至少两个字节的第一寄存器值。在16处,方法10读取在长度上也为至少两个字节的第二寄存器值。方法10预期第一寄存器值与第二寄存器值将均为相同长度,此促进在18处的下一操作。在18处,方法10将第一寄存器值的字节与第二寄存器值的字节相比较。在20处,如果满足两个条件中的至少一者,则将第三寄存器设定为指示匹配。首先,如果第一寄存器值中的字节等于第二寄存器值中的对应字节,则第三寄存器将指示匹配。第二,如果第一寄存器值中的字节为零,则第三寄存器将指示匹配。参考编号22指示图1与图2之间的连接符A。

方法10在图2中继续。在24处,方法10继续进行到相依于两个条件中的一者设定第四寄存器值。第一,如果第一寄存器值中的字节等于第二寄存器值中的对应字节,则将第四寄存器值设定为匹配字节的计数。第二,如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则将第四寄存器值设定为在包括0与n-1之间的数的值范围之外的数。对于方法10,n是对应于第一及第二寄存器值中的字节数的整数。方法10在26处结束。

在方法10的一个变化形式中,如果处理器是高字节置前,则从最高有效字节到最低有效字节比较第一寄存器值与第二寄存器值的字节。在另一变化形式中,如果处理器是低字节置前,则从最低有效字节到最高有效字节比较第一寄存器值与第二寄存器值的字节。

关于第三寄存器,本发明的一个实施例涉及为具有一个位的条件旗标寄存器的第三寄存器。还预期其它变化形式。举例来说,第三寄存器可以为具有多个位的条件寄存器。在此实例中,可将第三寄存器的位中的一个位设定为指示匹配。还预期第三寄存器可以为包括多个位的条件寄存器。在此变化形式中,相依于第一寄存器值中的字节是等于第二寄存器值中的对应字节还是第一寄存器值中的第一字节为零,所述第三寄存器可保留不同值。

关于第四寄存器值,预期如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则可将第四寄存器值设定为-1。值-1明显地落在从0到n-1的值范围之外。还预期其它变化形式归属于本发明的范围,因为-1不是可选择的唯一值。

在本发明的一个所预期变化形式中,可同时设定第三寄存器及第四寄存器值。

在又一变化形式中,预期至少两个单独寄存器可与处理器协作以执行所述方法。

在方法10中,预期处理器可以预定字节边界开始往寄存器中加载。

在另一变化形式中,将第一寄存器值的字节仅与第二寄存器值的最低字节相比较。

在又一进一步变化形式中,方法10可包含额外操作。举例而言,方法10可包含如果没有指示匹配则修改第三寄存器。

在本发明的另一实施例中,第三寄存器可以为包含一个位的条件旗标寄存器。在此实施例中,当指示匹配时,可设定所述位。另一选择为,当不指示匹配时,可清除所述位。

本发明的方法10也可操作以使得第三寄存器是具有一个位的条件旗标寄存器。当指示匹配时,可清除所述位。另一选择为,当指示匹配时,可设定所述位。

在方法10的另一所预期变化形式中,第三寄存器可以为具有多个位的条件寄存器。当指示匹配时,可设定所述多个位中的一个位。另外,当不指示匹配时,可清除所述一个位。

第三寄存器还可以是具有多个位的条件寄存器。在此实施例中,当指示匹配时,可清除所述多个位中的一个位,或当不指示匹配时,可设定所述一个位。

参照图3及4,其描述第二方法30。方法30可在处理器上执行。

第二方法30在32处开始。在34处,方法30读取在长度上至少为两个字节的第一寄存器值。在36处,方法30读取在长度上至少也为两个字节的第二寄存器值。方法30预期第一寄存器值及第二寄存器值将均为相同长度,此促进在38处的下一操作。在38处,方法30将第一寄存器值的字节与第二寄存器值的字节相比较。在40处,如果满足两个条件中的至少一者,则将第三寄存器设定为指示匹配。首先,如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则第三寄存器将指示匹配。第二,如果第一寄存器值中的字节为零,则第三寄存器将指示匹配。参考编号42指示图3与图4之间的连接符B。

方法30在图4中继续,在44处,方法30继续进行到相依于两个条件中的一者设定第四寄存器值。第一,如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则将第四寄存器值设定为匹配字节的计数。第二,如果第一寄存器值中的字节等于第二寄存器值中的对应字节,则将第四寄存器值设定为包括0与n-1之间的数的值范围之外的数。对于方法10,n是对应于第一及第二寄存器值中的字节数的整数。方法30在46处结束。

在方法30的一个变化形式中,如果处理器是高字节置前,则从最高有效字节到最低有效字节比较第一寄存器值与第二寄存器值的字节。在另一变化形式中,如果处理器是低字节置前,则从最低有效字节到最高有效字节比较第一寄存器值与第二寄存器值的字节。

关于方法30中的第三寄存器,所述第三寄存器可以为具有一个位的条件旗标寄存器。还预期其它变化形式。举例来说,第三寄存器可以为具有多个位的条件寄存器。在此实例中,可将第三寄存器的所述位中的一个位设定为指示匹配。同样,预期所述第三寄存器可以为具有多个位的条件寄存器。在此变化形式中,相依于第一寄存器值中的字节是等于第二寄存器值中的对应字节还是第一寄存器值中的第一字节为零,第三寄存器可保留不同值。

关于第四寄存器值,预期如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则可将所述第四寄存器值设定为-1。值-1明显地落在从0到n-1的值范围之外。还预期其它变化形式归属于本发明的范围,因为-1不是可选择的唯一值。

在方法30的一个所预期变化形式中,可同时设定第三寄存器及第四寄存器值。

在又一变化形式中,预期至少两个单独寄存器可与处理器协作以执行所述方法。

在方法30中,预期处理器可以预定字节边界开始往寄存器中加载。

在方法30的另一变化形式中,将第一寄存器值的字节仅与第二寄存器值的最低字节相比较。

在又一进一步变化形式中,方法30可包含额外操作。举例来说,方法30可包含如果不指示匹配则修改第三寄存器。

在方法30的另一实施例中,第三寄存器可以为包含一个位的条件旗标寄存器。在此实施例中,当指示匹配时可设定所述位。另一选择为,当不指示匹配时,可清除所述位。

本发明的方法30也可操作以使得第三寄存器为具有一个位的条件旗标寄存器。当指示匹配时,可清除所述位。当指示匹配时,可设定所述位。

在方法30的另一所预期变化形式中,第三寄存器可以为具有多个位的条件寄存器。当指示匹配时,可设定所述多个位中的一个位。当不指示匹配时,可清除所述一个位。

另一选择为,第三寄存器可以为具有多个位的条件寄存器。在此实施例中,当指示匹配时可清除所述多个位中的一个位且当不指示匹配时可设定所述一个位。

如从前文论述及从本发明图式应明了,本发明并不打算仅限于本文所述实施例。相反,如所属领域的技术人员应明了,可在不背离本发明范围的情形下采用众多额外实施例、变化形式及等效内容。

用以加速空终止字符串操作的方法.pdf_第1页
第1页 / 共18页
用以加速空终止字符串操作的方法.pdf_第2页
第2页 / 共18页
用以加速空终止字符串操作的方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《用以加速空终止字符串操作的方法.pdf》由会员分享,可在线阅读,更多相关《用以加速空终止字符串操作的方法.pdf(18页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102007469A43申请公布日20110406CN102007469ACN102007469A21申请号200980113582122申请日2009020361/029,42220080218USG06F7/3820060171申请人阿斯奔收购公司地址美国加利福尼亚州72发明人马杨穆德吉尔74专利代理机构北京律盟知识产权代理有限责任公司11287代理人刘国伟54发明名称用以加速空终止字符串操作的方法57摘要一种方法读取且比较第一与第二寄存器值,每一寄存器值具有至少两个字节的大小。如果出现以下情况,则第三寄存器指示匹配1所述第一寄存器值中的字节等于或另一选择为,不等于所述第。

2、二寄存器值中的对应字节,或2如果所述第一寄存器值中的字节为零。接下来,将第四寄存器值设定为以下各项中的一者1如果所述第一与第二寄存器值中的对应字节相等或另一选择为,不相等,则为匹配字节的计数,或2如果所述第一与第二寄存器值中的所述对应字节不相等或另一选择为,相等,则为0与N1之间的范围之外的数。所述值N为等于所述第一与第二寄存器值中的字节数的整数。30优先权数据85PCT申请进入国家阶段日2010101886PCT申请的申请数据PCT/US2009/0329872009020387PCT申请的公布数据WO2009/105332EN2009082751INTCL19中华人民共和国国家知识产权局1。

3、2发明专利申请权利要求书3页说明书10页附图4页CN102007483A1/3页21一种由处理器执行的方法,其包括读取第一寄存器值,其中所述第一寄存器值包括至少两个字节;读取第二寄存器值,其中所述第二寄存器值包括至少两个字节,其中所述第一寄存器值与所述第二寄存器值两者包括相同的字节数;将所述第一寄存器值的所述字节与所述第二寄存器值的所述字节相比较;如果出现以下情况,则将第三寄存器设定为指示匹配1所述第一寄存器值中的字节等于所述第二寄存器值中的对应字节,或2如果所述第一寄存器值中的字节为零;及将第四寄存器值设定为1如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应字节,则为匹配字节。

4、的计数;或2如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则为包括0与N1之间的数的值范围之外的数,其中N为对应于所述第一及第二寄存器值中的字节数的整数。2根据权利要求1所述的方法,其中如果所述处理器为高字节置前,则从最高有效字节到最低有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。3根据权利要求1所述的方法,其中如果所述处理器为低字节置前,则从最低有效字节到最高有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。4根据权利要求1所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器。5根据权利要求1所述的方法,其中所述第三寄存器为包括多个位的条件。

5、寄存器,且将所述第三寄存器中的一个位设定为指示所述匹配。6根据权利要求1所述的方法,其中所述第三寄存器为包括多个位的条件寄存器,且当做出所述第一寄存器值中的字节等于所述第二寄存器值中的对应字节的确定时,将所述第三寄存器设定为第一匹配值,否则当所述第一寄存器值中的字节为零时,将所述第三寄存器设定为第二匹配值。7根据权利要求1所述的方法,其中如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则将所述第四寄存器值设定为1。8根据权利要求1所述的方法,其中同时设定所述第三寄存器及所述第四寄存器值。9根据权利要求1所述的方法,其中至少两个单独寄存器与所述处理器协作以执行所述方法。1。

6、0根据权利要求1所述的方法,其中所述处理器以预定字节边界开始往寄存器中加载。11根据权利要求1所述的方法,其中将所述第一寄存器值的所述字节仅与所述第二寄存器值的最低字节相比较。12根据权利要求1所述的方法,其进一步包括如果不指示匹配,则修改所述第三寄存器。权利要求书CN102007469ACN102007483A2/3页313根据权利要求12所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,设定所述位,且当不指示所述匹配时,清除所述位。14根据权利要求12所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,清除所述位,且当指示所述匹配时,设。

7、定所述位。15根据权利要求12所述的方法,其中所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,设定所述多个位中的一个位,且当不指示所述匹配时,清除所述一个位。16根据权利要求12所述的方法,其中所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,清除所述多个位中的一个位,且当不指示所述匹配时,设定所述一个位。17一种由处理器执行的方法,其包括读取第一寄存器值,其中所述第一寄存器值包括至少两个字节;读取第二寄存器值,其中所述第二寄存器值包括至少两个字节,其中所述第一寄存器值与所述第二寄存器值两者包括相同的字节数;将所述第一寄存器值的所述字节与所述第二寄存器值的所述字节相比较;如果。

8、出现以下情况,则将第三寄存器设定为指示匹配1所述第一寄存器值中的字节不等于所述第二寄存器值中的对应字节,或2如果所述第一寄存器值中的字节为零;及将第四寄存器值设定为1如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数,或2如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应字节,则为包括0与N1之间的数的值范围之外的数,其中N为对应于所述第一及第二寄存器中的任一者中的字节数的整数。18根据权利要求17所述的方法,其中如果所述处理器是高字节置前,则从最高有效字节到最低有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。19根据权利要求17。

9、所述的方法,其中如果所述处理器是低字节置前,则从最低有效字节到最高有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。20根据权利要求17所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器。21根据权利要求17所述的方法,其中所述第三寄存器为包括多个位的条件寄存器,且将所述第三寄存器中的一个位设定为指示所述匹配。权利要求书CN102007469ACN102007483A3/3页422根据权利要求17所述的方法,其中所述第三寄存器为包括多个位的条件寄存器,且当做出所述第一寄存器值中的字节不等于所述第二寄存器值中的对应字节的确定时,将所述第三寄存器设定为第一匹配值,否则当所述第一寄存。

10、器值中的字节为零时,将所述第三寄存器设定为第二匹配值。23根据权利要求17所述的方法,其中如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节时,将所述第四寄存器值设定为1。24根据权利要求17所述的方法,其中同时设定所述第三寄存器及所述第四寄存器值。25根据权利要求17所述的方法,其中至少两个单独寄存器与所述处理器协作以执行所述方法。26根据权利要求17所述的方法,其中所述处理器以预定字节边界开始往寄存器中加载。27根据权利要求17所述的方法,其中将所述第一寄存器值的所述字节仅与所述第二寄存器值的最低字节相比较。28根据权利要求17所述的方法,其进一步包括如果不指示匹配,则。

11、修改所述第三寄存器。29根据权利要求28所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,设定所述位,且当不指示所述匹配时,清除所述位。30根据权利要求28所述的方法,其中所述第三寄存器为包括一个位的条件旗标寄存器,当指示所述匹配时,清除所述位,且当指示所述匹配时,设定所述位。31根据权利要求28所述的方法,其中所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,设定所述多个位中的一个位,且当不指示所述匹配时,清除所述一个位。32根据权利要求28所述的方法,其中所述第三寄存器为包括多个位的条件寄存器,当指示所述匹配时,清除所述多个位中的一个位,且当不指示所述匹。

12、配时,设定所述一个位。权利要求书CN102007469ACN102007483A1/10页5用以加速空终止字符串操作的方法0001相关申请案的交叉参考0002此美国专利申请案是首次申请的专利申请案且优先权上不依赖任何其它专利申请案。技术领域0003如所属领域的技术人员应了解,一些编程语言包含C及C语言产生空终止字节串。本发明通过提议一指令族以加速处理标准串函数来利用C及C编程语言的此特性。背景技术0004如所属领域的技术人员应明了,C及C编程语言产生为空终止字符的标准串。空终止字节串是其中串的末尾是用0字节指示的串。0005当处理串时,某些密钥核的性能可确定整个应用程序的性能。所述函数通常是标。

13、准库具体来说,ISOC标准的章节721中所定义的函数,例如1STRLEN函数,2STRCMP函数,3STRCPY函数及4STRCHR函数。0006执行所述函数中的任一者可均需要大量处理器时间。因此,此项技术中需要有助于减少处理时间的方法。发明内容0007本发明提供用以减少某些指令的总处理时间的至少两种方法。0008具体来说,本发明至少部分地基于由除其它之外的C及C编程语言产生的选定字节串的空终止字符。0009本发明提议由于空终止字符串而准许加速所述函数的最小指令集。换句话说,本发明的一个方面认识到空终止字符串的存在且利用所述空终止字符串。在这样做时,本发明增加处理速度及效率。0010在本发明的。

14、一个所提议指令集中,本发明提供包含读取第一及第二寄存器值的方法,所述第一及第二寄存器值两者在长度上至少为两个字节。在此方法中,所述第一与第二寄存器值具有相同字的节数。因此,将所述第一寄存器值的字节与所述第二寄存器值的字节相比较是简单的任务。在比较所述第一与第二寄存器值之后,如果出现以下情况所述方法将第三寄存器设定为指示匹配1所述第一寄存器值中的字节等于所述第二寄存器值中的对应字节,或2如果所述第一寄存器值中的字节为零。另外,所述方法将第四寄存器值设定为1如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数,或2如果所述第一寄存器值中的所述字节不等于所述第二寄。

15、存器值中的所述对应字节时,则为包括0与N1之间的数的值范围之外的数。如应明了,N为对应于所述第一与第二寄存器值中的字节数的整数。0011在此方法的替代方案中,本发明还提供其中读取第一及第二寄存器值的方法,所说明书CN102007469ACN102007483A2/10页6述第一与第二寄存器值两者在长度上至少为两个字节。如在所述第一实例中,预期所述第一与第二寄存器值为相同长度。将所述第一寄存器值的所述字节与所述第二寄存器值的所述字节相比较。如果出现以下情况将第三寄存器设定为指示匹配1所述第一寄存器值中的字节不等于所述第二寄存器值中的对应字节,或2所述第一寄存器值中的字节为零。将第四寄存器值设定为。

16、1如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数,或2如果所述第一寄存器值中的字节等于所述第二寄存器值中的所述对应字节,则为包括0与N1之间的数的值范围之外的数。如前所述,N为对应于所述第一与第二寄存器中的任一者中的字节数的整数。0012本发明还提供如果所述处理器是高字节置前,则从最高有效字节到最低有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。0013本发明的另一方面提供如果所述处理器为低字节置前,则从最低有效字节到最高有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。0014关于所述第三寄存器,本发明的一个方面是将所述第三寄存器。

17、提供为具有一个位的条件旗标寄存器。0015本发明进一步提供所述第三寄存器为具有多于一个位的条件寄存器。在此实例中,可将所述第三寄存器的数个位中的一个位设定为指示所述匹配。0016本发明的又一方面提供所述第三寄存器可以为包括数个位的条件寄存器。在此变化形式中,相依于所述第一寄存器值中的所述字节是等于所述第二寄存器值中的所述对应字节还是所述第一寄存器值中的第一字节为零,所述第三寄存器可保留不同值。0017关于所述第四寄存器值,如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则本发明准许将所述值设定为1。0018本发明的另一方面提供同时设定所述第三及第四寄存器值。0019本发。

18、明的一个进一步方面提供至少两个单独寄存器与所述处理器协作来执行所述方法。0020本发明的又一方面预期所述处理器可以预定字节边界开始往寄存器中加载。0021在另一变化形式中,将所述第一寄存器值的所述字节仅与所述第二寄存器值的最低字节相比较。0022在又一进一步变化形式中,本发明包含如果不指示匹配,则修改所述第三寄存器。0023在本发明的另一方面中,所述第三寄存器可以为包含一个位的条件旗标寄存器,当指示所述匹配时可设定所述一个位。另一选择为,当不指示所述匹配时,可清除所述位。0024本发明的一个方面提供其中所述第三寄存器为具有一个位的条件旗标寄存器的方法,当指示所述匹配时可清除所述一个位。另一选择。

19、为,当指示所述匹配时,可设定所述位。0025在本发明的另一方面中,所述第三寄存器可以为具有多个位的条件寄存器。当指示所述匹配时,可设定所述多个位中的一个位,或当不指示所述匹配时,可清除所述位。0026在本发明的又一方面中,所述第三寄存器可以为具有数个位的条件寄存器。当指示所述匹配时,可清除所述数个位中的一个位。另一选择为,当不指示所述匹配时,可设定所述位。0027从以下论述将明了本发明的又进一步方面。说明书CN102007469ACN102007483A3/10页7附图说明0028现在将结合随附的图式描述本发明,所述图式中0029图1是本发明方法的第一实施例的第一部分;0030图2是图1中所图。

20、解说明的方法的第一实施例的第二部分;0031图3是本发明方法的第二实施例的第一部分;且0032图4是图1中所图解说明的方法的第二实施例的第二部分。具体实施方式0033现在将结合各种所预期实施例描述本发明。所述实施例打算对本发明进行说明且未对本发明的范围加以任何限制。因此,如所属领域的技术人员应了解,存在可在不背离本发明的范围及精神的情形下采用的众多变化形式及等效内容。所述变化形式及等效内容中的每一者也打算由本发明的范围囊括。0034出于描述本发明的目的,已进行了数种假设。第一,假设处理器中的指令能够同时设定寄存器及条件旗标或位。第二,假设处理器中的指令能够读取至少2个单独寄存器。第三,假设处理。

21、器具有多字节寄存器例如32位寄存器。第四,假设处理器可在任何字节边界处开始往寄存器中加载。此第四假设对于实施本发明并不是必须的。然而,此第四假设极大地简化了对本发明的说明,如下文显而易见。0035对于本发明,提议两种指令。第一种指令称为FFZBE指令。第二种指令称为FFZBN指令。字母“FFZBE”打算指代“找到首位零或字节相等”。字母“FFZBN”打算指代“找到首位零或字节不相等”。当然,对于所述指令的名字的选择对于本发明并不重要。可选择任何其它名字,此并不背离本发明的范围。0036FFZBE指令0037FFZBE指令包含以下操作1读取两个寄存器值,RA及RB,2写入寄存器值RT及条件位/旗。

22、标,3相依于处理器是高字节置前还是低字节置前,从最高有效字节“MSB”到最低有效字节“LSB”或从LSB到MSB检查字节RA及RB,4如果RA中的字节的值为零或等于RB的对应字节,则将条件位中的标记或旗标设定为指示匹配,5如果第一匹配是相等字节的匹配,则将RT设定为匹配字节的计数,及6否则,将RT的值设定为在范围0、NUM_BYTES_IN_REGISTER1之外的值。一个此类选择是1。0038下面在码段1中阐述针对此指令的伪C。关于码段1,已进行了数种假设。第一,假设处理器使用条件位且所述指令总是将所述条件位设定/清除为零。第二,假设寄存器宽度为4个字节。第三,假设处理器是高字节置前。在所述。

23、假设下,下面呈现码段1。0039码段10040FORI0;I4;I0041BARA8I0XFF;/FINDTHEITHBYTE/0042BBRB8I0XFF;0043IFBABB0044CBIT01;0045RTI;说明书CN102007469ACN102007483A4/10页800460047ELSEIFBA00048CBIT1;0049RT1;005000510052借助码段1,相对直接地找到零终止串的长度STRLEN指令/操作。在伪汇编码中,如下面在码段2中所详细说明可呈现非优化汇编版本0053码段20054;STRLENTAKESONEARGUMENT0055;RADRADDRESS。

24、OFSTRING0056STRLEN0057LIRZ,0;INITIALIZERBTO00058LIRLEN,0;INITIALIZELENGTHTO00059LOOP0060LDRVAL,RADR,0;LOADFROMRADR0061FFZBERPOS,RVAL,RZ;CHECKIFANYBYTE00062JTRUECB0,FOUND0063ADDRLEN,RLEN,4;BUMPLENGTH0064ADDRADR,RADR,4;BUMPADDRESS0065FOUND0066ADDRLEN,RLEN,RPOS0067ADDRLEN,RLEN,1;SUBTRACTONEFORTHE0BYTE0。

25、068RETURNRLEN0069如所属领域的技术人员可明了,码段2的优化实施方案将与上文所详细说明的非优化实例相当不同。除其它之外,预期所述优化实施方案利用更复杂的指令,例如加载并更新指令。此外,预期码段2的优化版本将不保持长度字段。代替地,预期码段2的优化版本将依赖原始地址及最后所加载地址之间的差来计算所述长度。0070还如所属领域的技术人员可了解,可相当直接地实现找到特定字节在串中的位置STRCHR指令/操作。应注意,如果没有找到字符,则STRCHR操作返回0。否则,所述操作返回指向所述串中的字符的指针。码段3提供此操作的一个实例0071码段30072;STRCHRTAKESTWOARG。

26、UMENT0073;RADRADDRESSOFSTRING0074;RCBYTEBEINGLOCATED0075SHLRC2,RC,80076ORRC2,RC2,RC0077SHLRC4,RC2,160078ORRC4,RC4,RC2说明书CN102007469ACN102007483A5/10页90079STRCHR0080LOOP0081LDRVAL,RADR,0;LOADFROMRADR0082FFZBERPOS,RVAL,RC4;CHECKIFANYBYTE0ORRC0083JTRUECB0,FOUND0084ADDRADR,RADR,4;BUMPADDRESS0085FOUND008。

27、6CMPCB1,RPOS,1;CHECKIF0FOUNDFIRST0087JFALSECB1,FOUND_BYTE0088RETURN0;0FOUNDFIRST0089FOUND_BYTE0090ADDRADR,RADR,RPOS0091RETURNRADR0092最后,如所属领域的技术人员可了解,此指令可用于写入有效串拷贝指令也称为STRCPY指令。下面在码段4中提供STRCPY指令的实例。0093码段40094;STRCPYTAKESTWOARGUMENT0095;RDSTADDRESSBEINGWRITTENTO0096;RSRCADDRESSOFSTRING0097STRCPY0098。

28、LIRZ,00099CPYRORIG,RDST;ORIGINALADDRESSOFDEST0100LOOP0101LDRVAL,RSRC,0;LOADFROMRADR0102FFZBERPOS,RVAL,RZ;CHECKIFANYBYTE0ORRC0103JTRUECB0,FOUND0104STRVAL,RDST,0;COPYVALUE0105ADDRADR,RADR,4;BUMPADDRESSES0106ADDRDST,RDST,40107FOUND0108STBRVAL,RDST,00109CMPECB1,RPOS,00110JTRUEDONE0111SHRRVAL,RVAL,80112S。

29、TBRVAL,RDST,10113CMPECB1,RPOS,10114JTRUEDONE0115SHRRVAL,RVAL,80116STBRVAL,RDST,2说明书CN102007469ACN102007483A6/10页100117CMPECB1,RPOS,20118JTRUEDONE0119SHRRVAL,RVAL,80120STBRVAL,RDST,30121DONE0122RETURNRORIG0123如可期望,码段4可以数种不同方式优化。尽管此处未提供优化的细节,但应注意所述码可尤其在标签“FOUND”与“DONE”之间其中拷贝所述串的最后数个字节进行优化。0124FFZBN指令0。

30、125FFZBN指令包含以下操作1读取两个寄存器值,RA及RB,2写入寄存器值RT及条件位/旗标,3相依于处理器是高字节置前还是低字节置前,从最高有效字节“MSB”到最低有效字节“LSB”或从LSB到MSB检查RA及RB的字节,4如果RA中的字节的值为零或不等于RB的对应字节,则将条件位或旗标中的标记设定为指示匹配,5如果第一匹配是不相等字节的匹配,则将RT设定为匹配字节的计数,及6否则,将RT的值设定为在范围0、NUM_BYTES_IN_REGISTER1之外的值。一个此类选择将是1。0126可如下面在码段5中所阐述写入针对此指令的伪C码。码段5是基于数种假设。第一,假设处理器使用条件位。第。

31、二,假设指令总是将所述条件位设定/清除为零。第三,假设寄存器宽度为4个字节。第四,假设处理器为高字节置前。在所述四个假设下,呈现码段5作为本发明的一个实例。0127码段50128FORI0;I4;I0129BARA8I0XFF;/FINDTHEITHBYTE/0130BBRB8I0XFF;0131IFBABB0132CBIT01;0133RTI;01340135ELSEIFBA00136CBIT1;0137RT1;013801390140码段5中所呈现的指令可用于写入有效串比较指令,也称为“STRCMP”。下面,将此指令呈现为码段6。0141码段60142;STRCMPTAKESTWOARGU。

32、MENT0143;RAD0ADDRESSOFFIRSTSTRING0144;RAD1ADDRESSOFSECONDSTRING说明书CN102007469ACN102007483A7/10页110145STRCMP0146LOOP0147LDRV0,RAD0,0;LOADFROMSTRINGS0148LDRV1,RAD1,00149FFZBNRPOS,RVAL,RZ;CHECKFOR0ORBYTE0150JTRUECB0,FOUND0151ADDRAD0,RAD0,4;BUMPADDRESSES0152ADDRAD1,RAD1,40153FOUND0154CMPECB1,RPOS,10155J。

33、TRUEEQUAL0156MULRPOS8,RPOS,8;NUMBEROFBITS0157SHLRV0,RV0,RPOS80158SHLRV1,RV1,RPOS80159ANDRV0,RV0,0XFF0160ANDRV1,RV1,0XFF0161SUBRDIF,RV0,RV10162RETURNRDIF0163EQUAL0164RETURN00165码段6并非经优化写入。所属领域的技术人员应明了优化且因此本文并不详细说明。0166额外信息0167参照FFZBE指令及FFZBN指令,存在预期作为本发明的一部分的数种变化形式。0168针对所述指令两者所预期的一个变化形式避免对照RB的个别字节的比较。

34、。在此变化形式中,仅对照RB的最低字节作出比较。此特定变化形式至少对于FFZBE指令准许在不需要在函数的起初或开始进行拷贝的情形下实施STRCHR指令。如所属领域的技术人员可了解,此减少处理时间且增加处理效率。0169另一所预期变化形式是关于条件位/旗标在所述旗标/位不需要设定时的处置。在此变化形式中,存在数种所预期选项。在一个选项中,每当执行FFZBE指令或FFZBN指令时设定或清除所述旗标/位。在第二选项中,如上文所规定当1遇到零字节或2当遇到相等及/或不相等字节时设定条件旗标/位。在此选项中,如果不满足所述条件,则不改动条件旗标。0170当处理器使用用信号表示多个条件的条件旗标时,预期又。

35、一变化形式。条件包含但不限于1大于、2小于、3等于或这三个条件的组合。多个旗标的存在准许指令通过设定不同旗标来在零字节匹配情况与相等/不相等匹配情况之间进行区分。此外,根据上文所提供的伪C说明,FFZBN指令也可比较第一不相等字节并相依于BABB或BABB设定大于/小于旗标。0171在现有技术中可存在类似于本发明的所述方面的方面。最接近的实例或许是说明书CN102007469ACN102007483A8/10页12POWERPC440的DLMBZ指令。此指令搜索通过级联第一字节为0的两个寄存器所形成的8字节值。可认为此指令具有FFZBE指令的功能性,其中RB0,由此准许将所述指令用于STRCP。

36、Y及STRLEN。然而,除其它缺点之外,DLMBZ指令没有加速函数例如STRCMP及STRCHR,如所属领域的技术人员应明了。0172如前文已明了,本发明呈现各种不同实施例及变化形式,其总结如下并结合图式进行论述。0173本发明呈现可由处理器执行的所执行方法10。在图1及2中图解说明方法10。0174方法10开始于12处。在14处,方法10读取在长度上为至少两个字节的第一寄存器值。在16处,方法10读取在长度上也为至少两个字节的第二寄存器值。方法10预期第一寄存器值与第二寄存器值将均为相同长度,此促进在18处的下一操作。在18处,方法10将第一寄存器值的字节与第二寄存器值的字节相比较。在20处。

37、,如果满足两个条件中的至少一者,则将第三寄存器设定为指示匹配。首先,如果第一寄存器值中的字节等于第二寄存器值中的对应字节,则第三寄存器将指示匹配。第二,如果第一寄存器值中的字节为零,则第三寄存器将指示匹配。参考编号22指示图1与图2之间的连接符A。0175方法10在图2中继续。在24处,方法10继续进行到相依于两个条件中的一者设定第四寄存器值。第一,如果第一寄存器值中的字节等于第二寄存器值中的对应字节,则将第四寄存器值设定为匹配字节的计数。第二,如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则将第四寄存器值设定为在包括0与N1之间的数的值范围之外的数。对于方法10,N是对应于第一及第。

38、二寄存器值中的字节数的整数。方法10在26处结束。0176在方法10的一个变化形式中,如果处理器是高字节置前,则从最高有效字节到最低有效字节比较第一寄存器值与第二寄存器值的字节。在另一变化形式中,如果处理器是低字节置前,则从最低有效字节到最高有效字节比较第一寄存器值与第二寄存器值的字节。0177关于第三寄存器,本发明的一个实施例涉及为具有一个位的条件旗标寄存器的第三寄存器。还预期其它变化形式。举例来说,第三寄存器可以为具有多个位的条件寄存器。在此实例中,可将第三寄存器的位中的一个位设定为指示匹配。还预期第三寄存器可以为包括多个位的条件寄存器。在此变化形式中,相依于第一寄存器值中的字节是等于第二。

39、寄存器值中的对应字节还是第一寄存器值中的第一字节为零,所述第三寄存器可保留不同值。0178关于第四寄存器值,预期如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则可将第四寄存器值设定为1。值1明显地落在从0到N1的值范围之外。还预期其它变化形式归属于本发明的范围,因为1不是可选择的唯一值。0179在本发明的一个所预期变化形式中,可同时设定第三寄存器及第四寄存器值。0180在又一变化形式中,预期至少两个单独寄存器可与处理器协作以执行所述方法。0181在方法10中,预期处理器可以预定字节边界开始往寄存器中加载。0182在另一变化形式中,将第一寄存器值的字节仅与第二寄存器值的最低字节相比较。。

40、0183在又一进一步变化形式中,方法10可包含额外操作。举例而言,方法10可包含如果没有指示匹配则修改第三寄存器。说明书CN102007469ACN102007483A9/10页130184在本发明的另一实施例中,第三寄存器可以为包含一个位的条件旗标寄存器。在此实施例中,当指示匹配时,可设定所述位。另一选择为,当不指示匹配时,可清除所述位。0185本发明的方法10也可操作以使得第三寄存器是具有一个位的条件旗标寄存器。当指示匹配时,可清除所述位。另一选择为,当指示匹配时,可设定所述位。0186在方法10的另一所预期变化形式中,第三寄存器可以为具有多个位的条件寄存器。当指示匹配时,可设定所述多个位。

41、中的一个位。另外,当不指示匹配时,可清除所述一个位。0187第三寄存器还可以是具有多个位的条件寄存器。在此实施例中,当指示匹配时,可清除所述多个位中的一个位,或当不指示匹配时,可设定所述一个位。0188参照图3及4,其描述第二方法30。方法30可在处理器上执行。0189第二方法30在32处开始。在34处,方法30读取在长度上至少为两个字节的第一寄存器值。在36处,方法30读取在长度上至少也为两个字节的第二寄存器值。方法30预期第一寄存器值及第二寄存器值将均为相同长度,此促进在38处的下一操作。在38处,方法30将第一寄存器值的字节与第二寄存器值的字节相比较。在40处,如果满足两个条件中的至少一。

42、者,则将第三寄存器设定为指示匹配。首先,如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则第三寄存器将指示匹配。第二,如果第一寄存器值中的字节为零,则第三寄存器将指示匹配。参考编号42指示图3与图4之间的连接符B。0190方法30在图4中继续,在44处,方法30继续进行到相依于两个条件中的一者设定第四寄存器值。第一,如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则将第四寄存器值设定为匹配字节的计数。第二,如果第一寄存器值中的字节等于第二寄存器值中的对应字节,则将第四寄存器值设定为包括0与N1之间的数的值范围之外的数。对于方法10,N是对应于第一及第二寄存器值中的字节数的整数。。

43、方法30在46处结束。0191在方法30的一个变化形式中,如果处理器是高字节置前,则从最高有效字节到最低有效字节比较第一寄存器值与第二寄存器值的字节。在另一变化形式中,如果处理器是低字节置前,则从最低有效字节到最高有效字节比较第一寄存器值与第二寄存器值的字节。0192关于方法30中的第三寄存器,所述第三寄存器可以为具有一个位的条件旗标寄存器。还预期其它变化形式。举例来说,第三寄存器可以为具有多个位的条件寄存器。在此实例中,可将第三寄存器的所述位中的一个位设定为指示匹配。同样,预期所述第三寄存器可以为具有多个位的条件寄存器。在此变化形式中,相依于第一寄存器值中的字节是等于第二寄存器值中的对应字节。

44、还是第一寄存器值中的第一字节为零,第三寄存器可保留不同值。0193关于第四寄存器值,预期如果第一寄存器值中的字节不等于第二寄存器值中的对应字节,则可将所述第四寄存器值设定为1。值1明显地落在从0到N1的值范围之外。还预期其它变化形式归属于本发明的范围,因为1不是可选择的唯一值。0194在方法30的一个所预期变化形式中,可同时设定第三寄存器及第四寄存器值。0195在又一变化形式中,预期至少两个单独寄存器可与处理器协作以执行所述方法。0196在方法30中,预期处理器可以预定字节边界开始往寄存器中加载。0197在方法30的另一变化形式中,将第一寄存器值的字节仅与第二寄存器值的最低说明书CN10200。

45、7469ACN102007483A10/10页14字节相比较。0198在又一进一步变化形式中,方法30可包含额外操作。举例来说,方法30可包含如果不指示匹配则修改第三寄存器。0199在方法30的另一实施例中,第三寄存器可以为包含一个位的条件旗标寄存器。在此实施例中,当指示匹配时可设定所述位。另一选择为,当不指示匹配时,可清除所述位。0200本发明的方法30也可操作以使得第三寄存器为具有一个位的条件旗标寄存器。当指示匹配时,可清除所述位。当指示匹配时,可设定所述位。0201在方法30的另一所预期变化形式中,第三寄存器可以为具有多个位的条件寄存器。当指示匹配时,可设定所述多个位中的一个位。当不指示。

46、匹配时,可清除所述一个位。0202另一选择为,第三寄存器可以为具有多个位的条件寄存器。在此实施例中,当指示匹配时可清除所述多个位中的一个位且当不指示匹配时可设定所述一个位。0203如从前文论述及从本发明图式应明了,本发明并不打算仅限于本文所述实施例。相反,如所属领域的技术人员应明了,可在不背离本发明范围的情形下采用众多额外实施例、变化形式及等效内容。说明书CN102007469ACN102007483A1/4页15图1说明书附图CN102007469ACN102007483A2/4页16图2说明书附图CN102007469ACN102007483A3/4页17图3说明书附图CN102007469ACN102007483A4/4页18图4说明书附图CN102007469A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1