《向量串范围比较.pdf》由会员分享,可在线阅读,更多相关《向量串范围比较.pdf(54页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104169868 A (43)申请公布日 2014.11.26 CN 104169868 A (21)申请号 201380014268.4 (22)申请日 2013.03.07 13/421,560 2012.03.15 US G06F 9/30(2006.01) (71)申请人 国际商业机器公司 地址 美国纽约阿芒克 (72)发明人 J.D. 布拉德伯里 E.M. 施瓦茨 T. 斯雷格 (74)专利代理机构 北京市柳沈律师事务所 11105 代理人 邸万奎 (54) 发明名称 向量串范围比较 (57) 摘要 促进字符数据的处理。提供基于控制集比较 向量的每个元素与。
2、值的范围以确定是否存在匹配 的 “向量串范围比较” 指令。与匹配元素或者表示 匹配元素的掩码相关联的索引存储在目标向量寄 存器中。另外, 相同的指令 (“向量串范围比较” 指令 ) 也在选定向量中搜索空元素 ( 也称为零元 素 )。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.09.15 (86)PCT国际申请的申请数据 PCT/EP2013/054614 2013.03.07 (87)PCT国际申请的公布数据 WO2013/135558 EN 2013.09.19 (51)Int.Cl. 权利要求书 2 页 说明书 34 页 附图 15 页 按照条约第 19 条修改的。
3、权利要求书 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书34页 附图15页 按照条约第19条修改的权利要求书2页 (10)申请公布号 CN 104169868 A CN 104169868 A 1/2 页 2 1. 一种用于在中央处理单元中执行机器指令的方法, 该计方法包含以下步骤 : 由处理器获得用于执行的机器指令, 该机器指令根据计算机架构定义以用于计算机执 行, 该机器指令包含 : 至少一个操作码字段, 其提供操作码, 该操作码识别 “向量串范围比较” 操作 ; 扩展字段, 在指明一个或者多个寄存器时使用 ; 第一寄存器字段, 与扩展字段的第。
4、一部分组合, 以指明第一寄存器, 第一寄存器包括第 一操作数 ; 第二寄存器字段, 与扩展字段的第二部分组合, 以指明第二寄存器, 第二寄存器包括第 二操作数 ; 第三寄存器字段, 与扩展字段的第三部分组合, 以指明第三寄存器, 第三寄存器包括第 三操作数 ; 第四寄存器字段, 与扩展字段的第四部分组合, 以指明第四寄存器, 第四寄存器包括第 四操作数 ; 掩码字段, 该掩码字段包括要在执行机器指令期间使用的一个或者多个控制 ; 以及 执行该机器指令, 该执行包括 : 使用由第四操作数以编程方式提供的一个或者多个控制, 比较第二操作数的元素与第 三操作数的一个或者多个值, 以确定是否存在由第三。
5、操作数的一个或者多个值和第四操作 数的一个或者多个控制定义的匹配 ; 以及 基于该比较将结果提供在第一操作数中。 2. 如权利要求 1 所述的方法, 其中该方法还包括 : 确定掩码字段是否包括设定用以指示搜索零元素的零元素控制 ; 基于包括设定用以指示搜索零元素的零元素控制的掩码字段, 在第二操作数中搜索零 元素。 3. 如权利要求 1 所述的方法, 其中第三操作数的一个或者多个值包括第三操作数中的 一对值。 4. 如权利要求 3 所述的方法, 其中第三操作数包括多对值, 并且该方法还包括比较第 二操作数的元素与多对值的每对值。 5. 如权利要求 4 所述的方法, 其中该比较包括比较第二操作数。
6、的每个元素与多对值的 每对值。 6. 如权利要求 1 所述的方法, 其中一个或者多个控制包括大于、 小于或者等于中的至 少一个。 7. 如权利要求 1 所述的方法, 其中掩码字段包括结果类型, 该结果类型定义该结果如 何提供在第一操作数中。 8. 如权利要求 7 所述的方法, 其中 基于具有第一值的结果类型, 该结果放置在第一操作数的一个选定位置 ; 以及 基于具有第二值的结果类型, 放置在第一操作数中的该结果是依赖于比较指示元素的 真或假的掩码。 9. 如权利要求 8 所述的方法, 其中该方法还包括对于第二操作数的多个元素重复该比 较, 并且其中, 放置在一个选定位置的结果包括范围内的第一元。
7、素的第一字节或者不匹配 权 利 要 求 书 CN 104169868 A 2 2/2 页 3 的指示之一。 10. 如权利要求 1 所述的方法, 其中掩码字段包括条件码设定控制, 并且其中, 该方法 还包括 : 确定是否设定条件码设定控制 ; 以及 基于被设定的条件码设定控制, 设定条件码用于执行机器指令。 11. 如权利要求 4 所述的方法, 其中设定条件码包括以下之一 : 设定条件码为指示检测到零元素在比任何比较更低的索引元素中的值 ; 设定条件码为指示比较被寻找的值 ; 以及 设定条件码为指示没有比较被寻找的值。 12. 如权利要求 1 所述的方法, 执行包括在执行时确定比较的方向, 其。
8、中, 该方向是自 左向右或者自右向左之一, 并且该确定包括由机器指令存取方向控制以确定该方向。 13. 一种包含适配用于实施根据任一前述方法权利要求的方法的所有步骤的构件的系 统。 14. 一种计算机程序, 包括用于当在计算机系统上执行所述计算机程序时实施根据任 一前述方法权利要求的方法的所有步骤的指令。 权 利 要 求 书 CN 104169868 A 3 1/34 页 4 向量串范围比较 技术领域 0001 本发明的一个方面总的涉及文本处理, 并且尤其涉及促进与字符数据相关联的处 理。 背景技术 0002 文本处理经常需要比较字符数据, 包括但不限于比较字符数据串的比较。 典型地, 用以比。
9、较字符数据的指令一次比较数据的单一字节。 0003 另外, 文本处理经常需要其他类型的字符数据处理, 包括寻找终止点 ( 例如, 字符 的末尾 )、 确定字符数据的长度、 寻找特定字符等。用以执行这些类型的处理的当前指令倾 向于效率低下。 发明内容 0004 经由提供用于执行机器指令的计算机程序产品来克服现有技术的缺点并提供优 势。该计算机程序产品包括计算机可读存储介质, 其可由处理电路读取且存储用于由该处 理电路执行以用于执行方法的指令。该方法包括 ( 例如 ) : 由处理器获得用于执行的机器 指令, 该机器指令根据计算机架构定义以用于计算机执行, 该机器指令包含 : 至少一个操作 码字段,。
10、 其提供操作码, 该操作码识别 “向量串范围比较” 操作 ; 扩展字段, 在指明一个或者 多个寄存器时使用 ; 第一寄存器字段, 与扩展字段的第一部分组合, 以指明第一寄存器, 第 一寄存器包括第一操作数 ; 第二寄存器字段, 与扩展字段的第二部分组合, 以指明第二寄存 器, 第二寄存器包括第二操作数 ; 第三寄存器字段, 与扩展字段的第三部分组合, 以指明第 三寄存器, 第三寄存器包括第三操作数 ; 第四寄存器字段, 与扩展字段的第四部分组合, 以 指明第四寄存器, 第四寄存器包括第四操作数 ; 掩码字段, 该掩码字段包括要在执行机器指 令期间使用的一个或者多个控制 ; 以及执行该机器指令,。
11、 该执行包括 : 使用由第四操作数 以编程方式提供的一个或者多个控制, 比较第二操作数的元素与第三操作数的一个或者多 个值, 以确定是否存在由第三操作数的一个或者多个值和第四操作数的一个或者多个控制 定义的匹配 ; 以及基于该比较将结果提供在第一操作数中。 0005 本文中也描述和主张关于本发明的一个或多个方面的方法和系统。另外, 本文中 也描述且可主张关于本发明的一个或多个方面的服务。 0006 经由本发明的技术实现额外特征和优势。 本发明的其他实施例和方面在本文中得 以详细描述且被视为所主张的本发明的一部分。 附图说明 0007 在说明书的结论处的权利要求中作为实例具体指出并且明显主张本发。
12、明的一个 或者多个方面。 依据结合附图的以下详细描述, 本发明的前面和其他目的、 特征和优点显而 易见, 在附图中 : 0008 图 1 描绘并入且使用本发明的一个或者多个方面的计算环境的实例 ; 说 明 书 CN 104169868 A 4 2/34 页 5 0009 图 2A 描绘并入且使用本发明的一个或者多个方面的计算环境的另一实例 ; 0010 图 2B 描绘根据本发明的一个方面的图 2A 的存储器的进一步细节 ; 0011 图 3 描绘根据本发明的一个方面的 “串范围比较” 指令的格式的实施例 ; 0012 图 4 描绘根据本发明的一个方面的与 “串范围比较” 指令相关联的逻辑 ; 。
13、0013 图 5 描绘根据本发明的一个方面的使用 “向量串范围比较” 指令的一个实例 ; 0014 图 6 描绘根据本发明的一个方面的使用 “向量串范围比较” 指令的一个实施例的 多个向量 ; 0015 图 7 描绘根据本发明的一个方面的寄存器文件的一个实例 ; 0016 图 8 描绘并入本发明的一个或多个方面的计算机程序产品的一个实施例 ; 0017 图 9 描绘并入且使用本发明一个或多个方面的主机计算机系统的一个实施例 ; 0018 图 10 描绘并入且使用本发明一个或多个方面的计算机系统的另一实例 ; 0019 图 11 描绘并入且使用本发明一个或多个方面的包含计算机网络的计算机系统的 。
14、另一实例 ; 0020 图 12 描绘并入且使用本发明一个或多个方面的计算机系统的各种元件的一个实 施例 ; 0021 图 13A 描绘并入且使用本发明一个或多个方面的图 12 的计算机系统的执行单元 的一个实施例 ; 0022 图 13B 描绘并入且使用本发明一个或多个实施例的图 12 的计算机系统的分支单 元的一个实施例 ; 0023 图 13C 描绘并入且使用本发明一个或多个实施例的图 12 的计算机系统的载入 / 存储单元的一个实施例 ; 以及 0024 图 14 描绘并入且使用本发明一个或多个方面的仿真主机计算机系统的一个实施 例。 具体实施方式 0025 根据本发明的一个方面, 提。
15、供用于促进字符数据的处理的能力, 包括但不限于任 何语言中的字母字符 ; 数字 ; 标点符号 ; 和 / 或其他符号。字符数据可为或可不为数据的 串。 标准与字符数据相关联, 标准的实例包括(但不限于) : ASCII(美国信息交换标准码) ; Unicode, 包括 ( 但不限于 )UTF(Unicode 变换格式 )8 ; UTF 16 ; 等。 0026 在一个实例中, 提供比较向量寄存器的每个元素与值的范围以确定是否存在匹配 的 “向量串范围比较” 指令。如本文使用, 值的范围可以是一个或者多个值。例如, 该范围 可以包括一个值, 所以针对该值 ( 例如, 是 H A) 做出比较, 或。
16、者该比较可以包括多个值, 其中, 基于多个值做出比较 ( 例如, 是 AHZ)。 0027 如本文描述, 向量寄存器 ( 也被称作向量 ) 的元素长度为一个、 两个或四个字节 ; 并且向量操作数 ( 例如 ) 为具有多个元素的 SIMD( 单指令多数据 ) 操作数。在其他实施例 中, 元素可以是其他大小的 ; 且向量操作数不需要为 SIMD, 和 / 或可包括一个元素。 0028 在另一实施例中, 同一指令 (“向量串范围比较” 指令 ) 也在选定向量中搜索空元 素 ( 也称为零元素 ( 例如, 该元素包含所有零 )。空或者零元素指示字符数据的终止 ; 例 如, 数据的特定串的末尾。 说 明 。
17、书 CN 104169868 A 5 3/34 页 6 0029 参看图 1 描述并入且使用本发明的一个或多个方面的计算环境的一个实施例。计 算环境 100 包括 ( 例如 ) 经由 ( 例如 ) 一个或多个总线 108 和 / 或其他连接耦接至彼此的 处理器 102( 例如, 中央处理单元 )、 存储器 104( 例如, 主存储器 ) 和或多个输入 / 输出 (I/ O) 器件和 / 或接口 106。 0030 在 一 个 实 例 中,处 理 器 102 基 于 由 International Business Machines Corporation 供应的 z/Architecture,。
18、 且为服务器的一部分, 诸如也由 International Business Machines Corporation 供应且实施 z/Architecture 的 System z 服务器。z/ Architecture 的一个实施例描述于题为 “z/Architecture Principles of Operation” 的公开号 (SA22-7832-08 号, 第九版, 2010 年 8 月 ) 中。在一个实例中, 该处 理器执行操作系统, 诸如, 也由 International Business Machines Corporation 供 应 的 z/OS。和为 Intern。
19、ational Business Machines Corporation(Armonk,New York,USA) 的注册商标。本文中使用的其他名称可为 International Business Machines Corporation 或其他公司的注册商标、 商标或产品名 称。 0031 在 另 一 实 施 例 中, 处 理 器 102 基 于 由 International Business Machines Corporation 供应的 Power 架构。Power 架构的一个实施例描述于 “Power ISATM第 2.06 版 修 订 B” (International Bu。
20、siness Machines Corporation, 2010 年 7 月 23 日 ) 中。 POWER为 International Business Machines Corporation 的注册 商标。 0032 在另一实施例中, 处理器102基于由Intel Corporation供应的Intel架构。 Intel 架构的一个实施例描述于 “64 and IA-32 Architectures Developers Manual: 第 2B 卷 ,Instructions Set Reference,A-L” ( 序 号 253666-041US, 2011 年 12 月 ) 。
21、和 “64 and IA-32 Architectures Developers Manual: 第 2B 卷 ,Instructions Set Reference,M-Z” ( 序号 253667-041US, 2011 年 12 月 ) 中。为 Intel Corporation(Santa Clara,California) 的注册商标。 0033 参看图 2A 描述并入且使用本发明的一个或多个实施例的计算环境的另一实施 例。在此实例中, 计算环境 200 包括 ( 例如 ) 经由 ( 例如 ) 一个或多个总线 208 和 / 或 其他连接耦接至彼此的本地中央处理单元 202、 存储器。
22、 204 和一个或多个输入 / 输出器件 和 / 或接口 206。作为实例, 计算环境 200 可包括 : 由 International Business Machines Corporation(Armonk,New York) 供应的 PowerPC 处理器、 pSeries 服务器或 xSeries 服务 器 ; 由 Hewlett Packard Co.(Palo Alto,California) 供应的具有 Intel Itanium II 处 理器的 HP Superdome ; 和 / 或基于由 International Business Machines Corporati。
23、on、 Hewlett Packard、 Intel、 Oracle 或其他供应的架构的其他机器。 0034 本地中央处理单元 202 包括在该环境内的处理期间使用的一个或多个本地寄存 器 210, 诸如, 一个或多个通用寄存器和 / 或一个或多个专用寄存器。这些寄存器包括表示 在任何特定时间点的环境状态的信息。 0035 此外, 本地中央处理单元 202 执行存储于存储器 204 中的指令和程序代码。在一 说 明 书 CN 104169868 A 6 4/34 页 7 个特定实例中, 中央处理单元执行存储于存储器 204 中的仿真器代码 212。此代码使得以 一个架构中配置的处理环境能够仿真。
24、另一架构。举例而言, 仿真器代码 212 允许基于不同 于 z/Architecture 的架构的机器 ( 诸如, PowerPC 处理器、 pSeries 服务器、 xSeries 服务 器、 HP Superdome 服务器或其他 ) 仿真 z/Architecture 和执行基于 z/Architecture 开发 的软件和指令。 0036 参看图 2B 描述关于仿真器代码 212 的进一步细节。客户指令 250 包含经开发以 欲于不同于本地 CPU 202 的架构的架构中执行的软件指令 ( 例如, 机器指令 )。举例而言, 客户指令250可能已经设计以在z/Architecture处理。
25、器102上执行, 但相反, 正在本地CPU 202( 其可为 ( 例如 )Intel Itanium II 处理器 ) 上仿真客户指令 250。在一个实例中, 仿 真器代码212包括指令取得单元252以自存储器204获得一个或多个客户指令250, 并且可 选地提供用于所获得的指令的本地缓冲。仿真器代码 212 也包括指令翻译例程 254 以确定 已获得的客户指令的类型且将客户指令翻译成一个或多个对应本地指令 256。此翻译包括 ( 例如 ) 识别要由客户指令执行的功能并选择 ( 多个 ) 本地指令以执行该功能。 0037 另外, 仿真器212包括仿真控制例程260以使得执行本地指令。 仿真控制。
26、例程260 可使得本地 CPU 202 执行仿真一个或多个先前所获得的客户指令的本地指令的例程, 并 且, 在这种执行完成时, 将控制返回至指令取得例程以仿真下一个客户指令或群客户指令 的获得。本地指令 256 的执行可包括将数据自存储器 204 载入至寄存器中 ; 将数据自寄存 器存储回至存储器 ; 或执行某类型的算术或逻辑运算 ( 如由翻译例程确定那样 )。 0038 每个例程 ( 例如 ) 以软件来实施, 该软件存储于存储器中且由本地中央处理单元 202来执行。 在其他实例中, 例程或运算中的一个或多个以固件、 硬件、 软件或其某组合来实 施。可使用本地 CPU 的寄存器 210 或通过。
27、使用存储器 204 中的位置仿真仿真处理器的寄存 器。在实施例中, 客户指令 250、 本地指令 256 和仿真器代码 212 可常驻于相同存储器中或 可在不同存储器器件间分配。 0039 如本文中所使用, 固件包括 ( 例如 ) 处理器的微码、 毫码和 / 或宏码。固件包括 (例如)在高级机器码的实施中使用的硬件级指令和/或数据结构。 在一个实施例中, 固件 包括 ( 例如 ) 通常作为微码递送的专属码, 该微码包括受信任软件或基础硬件所特有的微 码且控制操作系统对系统硬件的存取。 0040 在一个实例中, 所获得的、 经翻译并经执行的客户指令 250 为本文中所描述的指 令。自存储器取得是。
28、一个架构 ( 例如, z/Architecture) 的指令, 将该指令翻译且表示为另 一架构 ( 例如, PowerPC、 pSeries、 xSeries、 Intel 等 ) 的本地指令 256 的序列。然后执行 这些本地指令。 0041 在一个实施例中, 本文中所描述的指令为根据本发明的实施例提供的向量指令, 其为向量工具的一部分。向量工具提供 ( 例如 ) 在自一个至十六个元素的范围内的固定大 小的向量。每向量包括由工具中所定义的向量指令进行运算的数据。在一个实施例中, 若 向量由多个元素组成, 则将每个元素与其他元素并行地处理。 指令完成不出现, 直至所有元 素的处理完成。 004。
29、2 如本文中所描述, 可将向量指令实施为包括 ( 但不限于 )z/Architecture、 Power、 Intel 等的各种架构的一部分。尽管本文中所描述的实施例针对 z/Architecture, 但本文 描述的向量指令和本发明的一个或多个实施例可基于许多其他架构。 z/Architecture仅为 说 明 书 CN 104169868 A 7 5/34 页 8 实例。 0043 在将向量工具实施为 z/Architecture 的一部分的一个实施例中, 为了使用向量 寄存器和指令, 将指定控制寄存器 ( 例如, 控制寄存器 0) 中的向量启用控制和寄存器控制 设定为 ( 例如 ) 一。。
30、若安装了向量工具且在未设定启用控制的情况下执行向量指令, 则看 作为数据例外。若未安装向量工具且执行向量指令, 则看作为操作例外。 0044 向量数据例如以与其他数据格式相同的自左至右顺序显现于储存器中。编号为 0 至 7 的数据格式的位构成储存器中的最左侧 ( 最低编号 ) 字节位置中的字节, 位 8 至 15 形 成下个顺序位置中的字节, 等等。 在另一实例中, 向量数据可以另一顺序(诸如, 自右至左) 显现于储存器中。 0045 用向量工具提供的向量指令中的许多向量指令具有指定位的字段。 被称作寄存器 扩展位或 RXB 的此字段包括用于向量寄存器指明的操作数中的每一个的最高有效位。用于 。
31、未由指令指定的寄存器指明的位将保留, 且被设定为零。 0046 在一个实例中, RXB 字段包括四个位 ( 例如, 位 0 至 3), 且将位定义如下 : 0047 0- 用于指令的第一向量寄存器指明的最高有效位。 0048 1- 用于指令的第二向量寄存器指明 ( 若有的话 ) 的最高有效位。 0049 2- 用于指令的第三向量寄存器指明 ( 若有的话 ) 的最高有效位。 0050 3- 用于指令的第四向量寄存器指明 ( 若有的话 ) 的最高有效位。 0051 由 ( 例如 ) 组译器取决于寄存器编号将每位设定为零或一。举例而言, 对于寄存 器 0 至 15, 将位设定为 0 ; 对于寄存器 。
32、16 至 31, 将位设定为 1 等等。 0052 在一个实施例中, 每个 RXB 位为用于包括一个或多个向量寄存器的指令中的特定 位置的扩展位。举例而言, 在一个或多个向量指令中, RXB 的位 0 为位置 8 至 11 的扩展位, 其被指派至 ( 例如 )V1; RXB 的位 1 为位置 12 至 15 的扩展位, 其被指派至 ( 例如 )V2; 等等。 0053 在另一实施例中, RXB 字段包括额外位, 且将一个以上位用作用于每个向量或位置 的扩展。 0054 根据本发明的一个方面提供的包括 RXB 字段的指令为 “向量串范围比较” 指令, 其 实例描绘于图 3 中。在一个实例中,“向。
33、量串比较指令” 指令 300 包括 : 操作码字段 302a( 例 如, 位 0 至 7)、 302b( 例如, 位 40 至 47), 其指示 “向量串比较操作” 操作 ; 第一向量寄存器字 段 304( 例如, 位 8 至 11), 其用以指明第一向量寄存器 (V1) ; 第二向量寄存器字段 306( 例 如, 位 12 至 15), 其用以指明第二向量寄存器 (V2) ; 第三向量寄存器字段 308( 例如, 位 16 至 19), 其用以指明第三向量寄存器 (V3) ; 第一掩码字段 (M5)310( 例如, 位 20 至 23) ; 第二 掩码字段 (M6)312( 例如, 位 24。
34、 至 27) ; 第四寄存器字段 314( 例如, 位 32-35), 其用以指明 第四向量寄存器 (V4) 和 RXB 字段 316( 例如, 位 36 至 39)。在一个实例中, 字段 304 至 316 中的每一个分开且独立于 ( 多个 ) 操作码字段。另外, 在一个实施例中, 这些字段分开且独 立于彼此 ; 然而, 在其他实施例中, 可组合一个以上字段。下文描述关于这些字段的使用的 其他信息。 0055 在一个实例中, 由操作码字段 302a 指明的操作码的选定位 ( 例如, 前两个位 ) 指 定指令的长度和格式。 在此特定实例中, 选定位指示长度为三个半字, 且格式为用扩展的操 作码。
35、字段的向量寄存器和寄存器运算。每个向量 (V) 字段以及由 RXB 指定的其对应扩展位 指明向量寄存器。具体地, 对于向量寄存器, 使用 ( 例如 ) 寄存器字段的四位字段 ( 其中添 说 明 书 CN 104169868 A 8 6/34 页 9 加其对应寄存器扩展位 (RXB) 作为最高有效位 ) 指定含有操作数的寄存器。举例而言, 若 四位字段为 0110 且扩展位为 0, 则五位字段 00110 指示寄存器编号 6。 0056 与指令的字段相关联的下标编号表示该字段适用的操作数。举例而言, 与向量寄 存器 V1相关联的下标编号 1 表示第一操作数, 等等。寄存器操作数的长度为一个寄存器。
36、, 其为 ( 例如 )128 个位。 0057 具有例如四个位 (0-3) 的 M5字段例如以位 1-3 指定元素大小 (ES) 控制。该元素 大小控制在向量寄存器操作数中指定元素的大小。在一个实例中, 元素大小控制可以指定 字节、 半字 ( 例如, 两字节 ) 或字 ( 例如, 四字节 )。例如, 0 指示一个字节 ; 1 指示半字 ; 并 且 2 指示字, 也称为全字。如果指定保留值, 则看作指定例外。该操作数包含由 M5字段中 的元素大小控制指定的大小的元素。 0058 M6字段例如是四位字段 ( 位 0-3), 包括例如以下控制 : 0059 取反结果(IN, 位0) : 如果是零, 。
37、则比较以控制向量中的一对值进行。 如果是一, 则 比较的该对的结果和它们的范围取反。 0060 结果类型 (RT, 位 1) : 如果是零, 则每个所得元素是所有范围比较对该元素的掩 码。如果是一, 则将索引存储到第一操作数的指定字节 ( 例如, 字节 7)。将零存储在剩余字 节中。 0061 零搜索 (ZS, 位 2) : 如果是一, 则也将第二操作数的每个元素与零比较。 0062 条件码设定(CC, 位3) : 如果是零, 则不设定条件码且条件码保持不变。 如果是一, 则作为实例如以所指定那样来设定条件码 : 0063 0- 如果 ZS 等于一并且在比任何比较更低的索引元素中寻找到零。 0。
38、064 1- 比较被找到 0065 2- 0066 3. 没有比较被找到。 0067 在 “向量串范围比较” 指令的一个实施例的执行中, 在一个实施例中, 自左至右进 行, 使用来自第四操作数 ( 包括在由 V4加上其 RXB 位指明的寄存器中 ) 的控制, 将第二操 作数 ( 包括在由 V2加上其 RXB 位指明的寄存器中 ) 中的无符号二进制整数元素与第三操 作数 ( 包括在由 V3加上其 RXB 位指明的寄存器中 ) 中的多对无符号二进制整数元素比较。 第三操作数和第四操作数中的偶 - 奇对形成要在与第二操作数中的每个元素比较时使用 的值的范围。如果元素匹配由第三操作数和第四操作数指定的。
39、范围中的任一个, 则将其视 为匹配。 0068 如果 M6字段中的结果类型标志为零, 则如果第一操作数 ( 包括在由 V1加其 RXB 位 指明的寄存器中 ) 中对应于第二操作数中正进行比较的元素的元素匹配这些范围中的任 一个, 则将该元素的位位置设定为一, 否则, 将它们设定为零。 0069 如果将 M6字段中的结果类型 (RT) 标志设定为一, 则匹配由第三操作数和第四操 作数指定的范围中的任一个的第二操作数中的第一元素的字节索引 ( 例如, 第一元素的第 一字节的索引 ) 放置于第一操作数的指定字节 ( 例如, 字节 7) 中, 且将零存储于剩余字节 中。 0070 M6字段中的零搜索标。
40、志 ( 若设定为一 ), 增加第二操作数元素的零的比较至由第 三操作数和第四操作数提供的范围。若零比较处在比任何其他真比较低的索引元素中, 则 说 明 书 CN 104169868 A 9 7/34 页 10 将条件码设定为零。另外, 如果 RT 1, 则在零比较处在比任何其他真比较更低的索引元 素的情况下, 将最左侧零操作数的第一字节的字节索引放置在第一操作数的指定字节 ( 例 如, 字节7)中。 否则, 如果RT0, 则将其放置在第二操作数中与零对应的第一操作数的每 个元素中。 0071 作为实例, 由第四操作数指定的控制包括例如等于、 大于和小于。具体地, 在一个 实例中, 第四操作数中。
41、的位如下定义。 0072 相等 (EQ) : 当为一时, 进行相等性比较。 0073 大于 (GT) : 当为一时, 执行大于比较。 0074 小于 (LT) : 当为一时, 执行小于比较 0075 可以任何组合使用这些控制位。 若这些位都没有被设定, 则比较将产生假结果。 若 所有这些位被设定, 则比较产生真结果。 0076 在一个实施例中, 并行执行元素的比较。 例如, 如果正比较的向量寄存器在长度上 是 16 字节, 则并行比较 16 字节。另外, 在另一实施例中, 在执行时 (runtime) 提供向量的 方向 - 自左至右或自右至左。举例而言, 作为实例, 指令存取寄存器、 状态控制。
42、或指示处理 的方向为自左至右或自右至左的其他实体。在一个实施例中, 不将此方向控制编码为指令 的一部分, 而是在执行时将其提供至指令。 0077 在另一实施例中, 指令不包括 RXB 字段。相反, 不使用扩展, 或者以另一方式提供 扩展, 诸如来自指令的外部的控制, 或者提供为指令的另一字段的一部分。 0078 参看图 4 描述关于处理 “向量串范围比较” 指令的一个实施例的其他细节。在一 个实例中, 计算环境的处理器正执行此逻辑。 0079 参考图 4, 最初, 做出关于是否要执行对空搜索 ( 也称为零元素、 串的末端、 终止符 等)的确定(询问400)。 如果要执行对空搜索(例如, 元素包。
43、含所有零)。 则在第二操作数中 针对空字符(即, 对于零元素)做出比较(步骤401), 并且将结果输出至变量zeroidx 403。 在一个实例中, 该结果是最左侧零元素的第一字节的字节索引。例如, 如果该元素大小是 字节并且在字节五中寻找到零元素, 则将其中寻找到零元素的字节的索引放置在 zeroidx 中。类似地, 如果元素大小是半字并且存在八个元素 (0-7), 并且元素 3 是零, 则将 6( 对于 字节索引 6) 放置在 zeroidx 中。同样, 如果元素大小是全字, 并且存在四个元素 (0-3) 并 且元素 1 是 0, 则将 4( 对于字节索引 4) 放置在 zeroidx 中。
44、。如果没有寻找到零元素, 则在 一个实例中, 将向量的大小 ( 例如, 以字节 ; 例如, 16) 放置在 zeroidx 中。 0080 在一个实施例中, 为了获取元素的第一字节, 元素的任何字节数目与掩码 AND, 其 中, 对于1字节大小的元素, 掩码是11111 ; 对于2字节的大小的元素, 掩码是11110 ; 并且对 于4字节的大小的元素, 掩码是11100。 因此, 对于上面的实例, 当元素大小是字节并且元素 5 具有零时, 二进制的值 5(00101) 与字节大小元素的掩码 (11111)AND, 以获得元素的第一 字节的字节索引(即, 00101 AND 1111100101。
45、(5)。 类似地, 对于元素大小是2字节和元 素 3 是零, 二进制中的值 6 或者 7( 这是因为元素 3 包括字节 6 和 7) 与半字的掩码 (11110) AND, 以获得元素的第一字节的字节索引 ( 即, (00110 或 00111)AND 11110 00110(6)。 此外, 因为元素大小是 4 字节和元素 1 是零, 组成元素 1( 字节 4-7) 的任何字节的二进制的 值与全字的掩码(11100)AND, 以获得元素1的第一字节索引(即, (00100或00101或00110 或 00111)AND 11100 00100(4)。 说 明 书 CN 104169868 A 。
46、10 8/34 页 11 0081 此外, 或者如果不执行空搜索, 则从第三操作数载入一对字符 ( 步骤 404), 以及载 入来自第四操作数的控制 ( 步骤 406)。例如, 如图 5 所示, 在列 500 中描述的第三操作数包 括字符 A、 Z、 a、 z、 0 和 9 ; 以及列 502 中描述的第四操作数包括控制, 诸如大于和等于 (GE) 和小于和等于 (LE)。载入一对字符 ( 诸如 A、 Z), 以及一对控制 ( 诸如 GE 和 LE)。 0082 参考图 4 和 5, 此后, 使用来自第四操作数的控制比较第二操作数的每个元素 ( 其 实例描绘在图 5 的行 506 中 ) 与来。
47、自第三操作数的载入字符, 步骤 408。比较的结果放置 在 resultveci 中, 其中 i 表示要比较的范围 i。也就是, 在该实例中, 存在第三操作数中 指定的比较的每个范围的 resultvec, 并且每个 resultvec 包括与第二操作数相同数目的 位, 例如, 128 位。由此, 在该实例中, resultvec 是三个比较范围的三个 resultvec 的阵列 ( 例如, AZ、 az、 09), 并且每个具有 128 位。作为实例, 使用来自第四操作数的控制 GE 和 LE 比较来自第二操作数的字母 H 与第三操作数的 A 和 Z。因为 H 大于或者等于 A 并且小于或 。
48、者等于 Z, resultveci 中与 H 对应的位设定为真 ( 例如, 1)。对于第二操作数的每个元素 执行该比较。 0083 此后, 做出关于是否存在要载入的来自第三操作数的更多对的确定 ( 询问 412)。 如果存在要载入的更多对, 则处理继续步骤 404, 其中, 下一对字符和控制被载入并且在比 较第二操作数的所有元素的比较中使用, 以产生另一 resultvec(i 被递增 1)。否则, 处理 继续到步骤 420, 其中, 来自各种比较和 / 或零搜索的结果被压缩。压缩结果逻辑的输入是 resultvec410 和 zeroidx403。 0084 压缩结果逻辑的实例伪码如下 : 。
49、0085 说 明 书 CN 104169868 A 11 9/34 页 12 0086 0087 如上所示, 为了获取要放置在第一操作数中的结果, 本文称为 TEMP 的掩码 ( 其是 第二操作数的大小(例如, 128位)设定为零。 然后, 对于来自第三操作数的每对字符, TEMP 与 resultvec(i)OR。( 在该实例中, 循环重复 vec_length( 例如, 16)/2 次 ; 然而, 因为第三 操作数中仅仅存在 3 对值, 剩余 5 对值的第四操作数中的控制设置为假 (false)。在另一 实例中, 仅仅重复该循环第三操作数中的值对的数目次 )。在对于图 5 中的实例比较之后, TEMP 等于 FFFFFFFFFF00FFFFFFFFFF0000 ? ? ? ? ? ?。 0088 然后, 如果执行零搜索, 则调整 TEMP 以反映第一零元素 ( 如果存在的话 )。也就 。