用于执行逻辑比较操作的方法和装置.pdf

上传人:000****221 文档编号:974098 上传时间:2018-03-22 格式:PDF 页数:45 大小:1.40MB
返回 下载 相关 举报
摘要
申请专利号:

CN201010283414.1

申请日:

2007.09.21

公开号:

CN101937329A

公开日:

2011.01.05

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 7/02申请日:20070921授权公告日:20121128终止日期:20130921|||授权|||实质审查的生效IPC(主分类):G06F 7/02申请日:20070921|||公开

IPC分类号:

G06F7/02; G06F9/30; G06F9/305; G06F9/32

主分类号:

G06F7/02

申请人:

英特尔公司

发明人:

R·卡普尔; R·祖海尔; M·巴克斯顿; Z·斯佩贝尔; K·戈特利布

地址:

美国加利福尼亚

优先权:

2006.09.21 US 11/525,706

专利代理机构:

永新专利商标代理有限公司 72002

代理人:

刘瑜;王英

PDF下载: PDF下载
内容摘要

一种用于包含在对打包或非打包数据执行逻辑比较和分支支持操作的处理器指令中的方法和装置。在一个实施例中,处理器耦合到存储器。存储器中已经存储了第一数据和第二数据。该处理器对该第一和第二数据执行逻辑比较。该逻辑比较可以对该第一和第二数据的每个位执行,或者可以只对某些位执行。对于至少一个实施例,至少第一数据包括打包数据元素,并且该逻辑比较对该打包数据元素的最高有效位执行。该逻辑比较可以包括对第一和第二数据的相同的各个位的比较,并且还包括对第一数据的位与第二数据的相应位的反码的逻辑比较。基于这些比较,可以进行分支支持动作。这样的分支支持动作可以包括设置一个或多个标志,其进而可以被所述分支单元使用。可选择地,分支支持动作可以包括分支到所指示的目标代码位置。

权利要求书

1: 一种执行逻辑比较操作的装置, 包括 : 解码器, 用于接收待解码的单个指令, 所述单个指令用于指示第一操作数、 第二操作数 和所希望的操作, 所述第一操作数和所述第二操作数中的每一个都包含多个位 ; 电路, 用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二 操作数的对应位进行的第一逐位逻辑 AND 操作, 并且响应于所述单个指令来执行对所述第 一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的第二逐位逻辑 AND 操作 ; 以及 用于存储第一状态标志值的第一存储区域和用于存储第二状态标志值的第二存储区 域, 其中, 所述第一状态标志值被所述电路根据所述第一逐位逻辑 AND 操作的结果进行修 改, 并且其中, 所述第二状态标志值被所述电路根据所述第二逐位逻辑 AND 操作的结果进 行修改。
2: 根据权利要求 1 的装置, 其中 所述第一操作数包括第一多个数据元素 ; 所述第二操作数包括第二多个数据元素 ; 并且 对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑 AND 操作, 并且 所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。
3: 根据权利要求 2 的装置, 其中, 所述电路包括 : 第一组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位 ; 第二组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位的所述反码值 ; 第一 NAND 门, 用于确定所述第一逐位逻辑 AND 操作的结果 ; 以及 第二 NAND 门, 用于确定关于所述反码值的所述第二逐位逻辑 AND 操作的结果。
4: 根据权利要求 2 的装置, 其中 所述数据元素是字节、 字、 双字和四字中的任何一个。
5: 根据权利要求 2 的装置, 其中 所述一个位是最高有效位和最低有效位中的任何一个。
6: 根据权利要求 1 的装置, 还包括 : 转化器, 用于获得所述第二操作数的所述对应位的所述反码值。
7: 根据权利要求 1 的装置, 其中 所述第一状态标志值为零标志值, 所述第二状态标志值为进位标志值。
8: 根据权利要求 1 的装置, 其中 所述单个指令包括逻辑比较、 设置零标志和进位标志 (LCSZC) 指令。
9: 根据权利要求 1 的装置, 其中 所述第一操作数和所述第二操作数中的每一个都包括 128 个位。
10: 一种执行逻辑比较操作的装置, 包括 : 解码器, 用于接收待解码的单个指令, 所述单个指令用于指示第一操作数、 第二操作数 和所希望的操作, 所述第一操作数和所述第二操作数中的每一个都包含多个位 ; 以及 执行单元, 用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述 2 第二操作数的对应位进行的第一逐位逻辑 AND 操作, 第一状态标志值响应于所述执行单元 执行所述第一逐位逻辑 AND 操作而被进行修改, 并且所述执行单元用于响应于所述单个指 令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的 第二逐位逻辑 AND 操作, 第二状态标志值响应于所述执行单元执行所述第一逐位逻辑 AND 操作而被进行修改。
11: 根据权利要求 10 的装置, 其中 所述第一操作数包括第一多个数据元素 ; 所述第二操作数包括第二多个数据元素 ; 并且 对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑 AND 操作, 并且 所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。
12: 根据权利要求 11 的装置, 其中, 所述执行单元包括 : 第一组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位 ; 第二组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位的所述反码值 ; 第一 NAND 门, 用于确定所述第一逐位逻辑 AND 操作的结果 ; 以及 第二 NAND 门, 用于确定关于所述反码值的所述第二逐位逻辑 AND 操作的结果。
13: 根据权利要求 11 的装置, 其中 所述数据元素是字节、 字、 双字和四字中的任何一个。
14: 根据权利要求 11 的装置, 其中 所述一个位是最高有效位和最低有效位中的任何一个。
15: 根据权利要求 10 的装置, 还包括 : 转化器, 用于获得所述第二操作数的所述对应位的所述反码值。
16: 根据权利要求 10 的装置, 还包括 : 第一存储区域, 用于存储所述第一状态标志值 ; 以及 第二存储区域, 用于存储所述第二状态标志值。
17: 根据权利要求 10 的装置, 其中 所述第一状态标志值为零标志值, 所述第二状态标志值为进位标志值。
18: 根据权利要求 10 的装置, 其中 所述单个指令包括逻辑比较、 设置零标志和进位标志 (LCSZC) 指令。
19: 根据权利要求 10 的装置, 其中 所述第一操作数和所述第二操作数中的每一个都包括 128 个位。
20: 根据权利要求 10 的装置, 还包括 : 图形处理器。
21: 根据权利要求 20 的装置, 其中 所述执行单元和所述图形处理器位于同一芯片封装内。
22: 一种执行逻辑比较操作的装置, 包括 : 高速缓冲存储器, 用于对信息进行高速缓存 ; 解码器, 用于接收待解码的单个指令, 所述单个指令用于指示第一操作数、 第二操作数 3 和所希望的操作, 所述第一操作数和所述第二操作数中的每一个都包含多个位 ; 执行单元, 用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述 第二操作数的对应位进行的第一逐位逻辑 AND 操作, 并且响应于所述单个指令来执行对所 述第一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的第二逐位逻辑 AND 操作 ; 以及 寄存器文件, 其包含多个寄存器, 所述多个寄存器包括用于指示所述装置的状态的状 态寄存器, 所述状态寄存器包含用于存储第一状态标志值的第一存储区域和用于存储第二 状态标志值的第二存储区域, 其中, 所述第一状态标志值被所述执行单元根据所述第一逐 位逻辑 AND 操作的结果进行修改, 并且其中, 所述第二状态标志值被所述执行单元根据所 述第二逐位逻辑 AND 操作的结果进行修改。
23: 根据权利要求 22 的装置, 其中 所述第一操作数包括第一多个数据元素 ; 所述第二操作数包括第二多个数据元素 ; 并且 对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑 AND 操作, 并且 所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。
24: 根据权利要求 23 的装置, 其中, 所述执行单元包括 : 第一组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位 ; 第二组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位的所述反码值 ; 第一 NAND 门, 用于确定所述第一逐位逻辑 AND 操作的结果 ; 以及 第二 NAND 门, 用于确定关于所述反码值的所述第二逐位逻辑 AND 操作的结果。
25: 根据权利要求 23 的装置, 其中 所述数据元素是字节、 字、 双字和四字中的任何一个。
26: 根据权利要求 23 的装置, 其中 所述一个位是最高有效位和最低有效位中的任何一个。
27: 根据权利要求 22 的装置, 还包括 : 转化器, 用于获得所述第二操作数的所述对应位的所述反码值。
28: 根据权利要求 22 的装置, 其中 所述第一状态标志值为零标志值, 所述第二状态标志值为进位标志值。
29: 根据权利要求 22 的装置, 其中 所述单个指令包括逻辑比较、 设置零标志和进位标志 (LCSZC) 指令。
30: 根据权利要求 22 的装置, 其中 所述第一操作数和所述第二操作数中的每一个都包括 128 个位。
31: 根据权利要求 22 的装置, 其中 所述多个寄存器还包括用于存储待执行的下一个指令的地址的指令指针寄存器。
32: 一种执行逻辑比较和分支操作的装置, 包括 : 解码器, 用于接收待解码的单个指令, 所述单个指令用于指示第一操作数、 第二操作数 和所希望的操作, 所述第一操作数和所述第二操作数中的每一个都包含多个位 ; 以及 4 一个或多个电路, 用于响应于所述单个指令来执行对所述第一操作数的一个或多个位 与所述第二操作数的对应位进行的第一逐位逻辑 AND 操作, 响应于所述单个指令来执行对 所述第一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的第二逐位逻 辑 AND 操作, 并且响应于所述单个指令、 基于所述第一逐位逻辑 AND 操作的结果和所述第二 逐位逻辑 AND 操作的结果中的至少一个来执行分支操作。
33: 根据权利要求 32 的装置, 其中 所述第一操作数包括第一多个数据元素 ; 所述第二操作数包括第二多个数据元素 ; 并且 对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑 AND 操作, 并且 所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。
34: 根据权利要求 33 的装置, 其中, 所述一个或多个电路包括 : 第一组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位 ; 第二组 AND 门, 用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的 所述对应位的所述反码值 ; 第一 NAND 门, 用于确定所述第一逐位逻辑 AND 操作的结果 ; 以及 第二 NAND 门, 用于确定关于所述反码值的所述第二逐位逻辑 AND 操作的结果。
35: 根据权利要求 33 的装置, 其中 所述数据元素是字节、 字、 双字和四字中的任何一个。
36: 根据权利要求 33 的装置, 其中 所述一个位是最高有效位和最低有效位中的任何一个。
37: 根据权利要求 32 的装置, 还包括 : 转化器, 用于获得所述第二操作数的所述对应位的所述反码值。
38: 根据权利要求 32 的装置, 其中 所述第一逐位逻辑 AND 操作的结果指示零标志, 所述第二逐位逻辑 AND 操作的结果指 示进位标志。
39: 根据权利要求 32 的装置, 其中 所述单个指令包括融合测试和分支指令。
40: 根据权利要求 32 的装置, 其中 所述第一操作数和所述第二操作数中的每一个都包括 128 个位。

说明书


用于执行逻辑比较操作的方法和装置

     本申请是 2007 年 9 月 21 日提交的、 申请号为 200710144187.2 的同名专利申请的 分案申请。技术领域
     本公开内容总体上涉及处理器领域。特别地, 本公开内容涉及使用单个控制信号 对多位数据上执行多个逻辑比较操作。 背景技术
     在典型的计算机系统中, 处理器被实现为使用产生一个结果的指令对由许多位 ( 例如, 64 个 ) 表示的值进行操作。例如, 执行加法指令将会把第一个 64 位的值和第二个 64 位的值加在一起, 并将结果存储为第三个 64 位的值。多媒体应用程序 ( 例如, 以计算机 支持协作 (CSC-- 具有混合的媒体数据处理的电信会议集合 )、 2D/3D 图形、 图像处理、 视频 压缩 / 解压缩、 识别算法和音频处理为目标的应用程序 ) 要求处理大量数据。所述数据可 以用单个大值 ( 例如, 64 位或 128 位 ) 表示, 或者作为代替, 可以用少量的位 ( 例如, 8 或 16 或 32 位 ) 表示。例如, 图形数据可以由 8 或 16 位表示, 声音数据可以由 8 或 16 位表示, 整 数数据可以由 8、 16 或 32 位表示, 而浮点数据可以由 32 或 64 位表示。
     为了提高多媒体应用程序 ( 以及其它具有相同特征的应用程序 ) 的效率, 处理器 可以提供打包数据 (packed data) 格式。典型地, 打包数据格式是这样的格式 : 其中, 将通 常用来表示单个值的多个位划分成多个固定大小的数据元素, 每个数据元素表示一个单独 的值。例如, 128 位寄存器可以分成四个 32 位元素, 每个元素表示单独的 32 位值。用这种 方式, 这些处理器可以更有效地处理多媒体应用程序。 附图说明 本发明借助于示例进行说明, 但并不局限于附图中的示图。
     图 1a-1c 说明根据本发明可选择实施例的示例计算机系统。
     图 2a-2b 说明根据本发明可选择实施例的处理器的寄存器堆。
     图 3 说明由用于处理数据的处理器所执行的处理的至少一个实施例的流程图。
     图 4 说明根据本发明可选择实施例的打包数据类型。
     图 5 说明根据本发明至少一个实施例的寄存器内打包字节和寄存器内打包字的 数据表示。
     图 6 说明根据本发明至少一个实施例的寄存器内打包双字和寄存器内打包四字 的数据表示。
     图 7a-7d 是说明用于执行逻辑 - 比较 (logical-compare)、 设置 - 零 - 和 - 进位 - 标 志 (set-zero-and-carry-flag) 操作的处理的各种实施例的流程图。
     图 8a-8c 说明用于执行逻辑 - 比较、 设置 - 零 - 和 - 进位 - 标志操作的电路的可 选择实施例。
     图 9 是说明处理器指令的操作码格式的各种实施例的框图。
     细节描述
     这里所公开的是包括在响应于单个控制信号而对多位数据执行逻辑比较操作的 处理器指令中的方法、 系统和电路的多个实施例。该逻辑比较操作中所涉及的数据可以是 打包或非打包数据。对于至少一个实施例而言, 处理器耦合到存储器。该存储器中已经存 储了第一数据和第二数据。处理器响应于所接收的指令, 对在第一数据和第二数据中的数 据元素执行逻辑比较操作。 逻辑比较操作可以包括第一和第二数据的数据元素的位 AND, 并 且还可以包括第一数据的数据元素的反码和第二数据的数据元素的位 AND。根据该逻辑比 较操作的结果, 修改处理器的至少两个状态标志。这两个状态标志可以包括零标志 (zero flag) 和进位标志 (carry flag)。这些标志可以在体系上对应用程序可见, 并且可以是更 大标志值的一部分, 比如体系上可见的扩展标志 (EFLAGS) 寄存器。
     本发明的这些和其它实施例可以根据下面的教导实现, 并且显而易见的是, 可以 用下面的教导进行各种修改和改变而不背离本发明宽泛的精神和范围。相应地, 说明书和 附图被看成是说明性的而不具有限制性意义, 并且本发明仅根据权利要求来确定。
     定义 为了提供用于理解本发明实施例的描述的基础, 提供以下定义。
     位 X 到位 Y :
     定义二进制数的子字段。例如, 字节 001110102( 以二进制示出 ) 的位 6 到位 0 代 表子字段 1110102。在二进制数后的 ‘2’ 表示二进制。因此, 10002 等于 810, 而 F16 等于 1510。
     RX : 是寄存器。寄存器是任何能够存储和提供数据的设备。寄存器的进一步的功 能在下面描述。寄存器不是必需与处理器包括在相同的芯片中或相同的封装中。
     SRC 和 DEST :
     用 于 标 识 存 储 区 域 ( 例 如, 存 储 器 地 址、 寄 存 器 等 ) 源 1-i 和 结 果 1-i 以 及 Destin :
     表示数据。
     总概
     本申请描述了包括在用于打包或非打包数据的逻辑比较操作的处理器指令中的 方法、 装置和系统的实施例。更具体而言, 所述指令可以用于对数据进行逻辑比较, 并且随 后根据该比较设置零标志和进位标志。对于至少一个实施例, 使用下面表 1a 和表 1b 中所 示的单个指令执行两个逻辑比较操作。 所述比较操作包括目标操作数和源操作数的逐位逻 辑 AND 以及目标操作数的反码与源操作数的逐位逻辑 AND。 表 1a 示出所公开的逻辑比较操 作的一个实施例的简化表示, 而表 1b 示出所公开的逻辑比较指令的实施例的在位级别上 的示例, 给出了一些样本值。对于在表 1a 和 1b 中所示出的实施例, 虽然源操作数和目标操 作数中的数据可以是打包数据, 但是其可以是任何数据表示, 而并非必须是打包数据。 在源 和 / 或目标操作数的数据是 128- 位的单个实体且由此并不将其认为是 “打包” 数据的情况 下, 在这里将其称为 “非打包 (unpacked)” 数据, 其简单地表示该数据不需要被再分割成组 分 (component) 表示, 并且可以被认为是单个数据值。虽然为了简化说明, 表 1a 中的数据 被表示为 32- 位的值, 但本领域技术人员将认识到, 在表 1a 和 1b 中所说明的概念可以应用 于任何长度的数据, 包括更小的数据长度 ( 例如, 4- 位、 8- 位和 16- 位的长度 ) 以及更大的
     数据长度 ( 例如, 64- 位和 128- 位的长度 )。
     表 1a
     逻辑比较 Dest, Source
     表 1b 逻辑比较 Dest, Source- 示例值
     对于至少一个实施例, 源和目标操作数的数据值可以表示打包数据。用于该实施 例的源操作数和目标操作数的每个打包组分可以表示任何类型的数据。
     表 2a 和 2b 说明组分 A1 到 A4 以及 B1 到 B4, 其每个都表示 32- 位单精度浮点数的二 进制表示。然而, 这样的说明不应当被看成是限制。本领域技术人员将认识到每个组分可 以表示任何数据, 包括任何整数或浮点数据格式, 以及串格式或任何其它类型的数据格式。
     表 2a
     逻辑比较 Dest, Source
     表 2b 逻辑比较 Dest, Source- 示例值
     对于打包实施例, 例如表 2a 和 2b 所说明的, 可以这样来利用可选择实施例 : 使得 在比较操作期间, 仅仅对每个打包元素的特定的位进行操作。 例如, 在下面将结合图 7c、 7d、 8b 和 8c 的讨论对至少某些这样的实施例进行讨论。
     本领域技术人员将认识到, 只是为了易于说明, 在表 1a 和 2a 中示出了中间值 “中 间结果 1” 和 “中间结果 2” , 在表 1b 和 2b 中示出了二进制值的第三和第四行。虽然它们在 至少一个实施例中可以这样进行存储, 但是它们在表 1a 到 2b 中的表示不应当被看成意味 着这些中间值必须存储在处理器中。 可选择地, 对于至少一个其它实施例, 通过电路来确定 这些中间值, 而不将上述值存储在存储区域中。
     在上面, 表 1a、 1b、 2a 和 2b 描述了 “逻辑比较, 设置零标志和进位标志” ( “LCSZC” ) 指令的实施例, 该指令对源操作数和目标操作数的 128 个位中的每一个位执行逐位的 AND 操作, 并且还对源操作数的 128 个位中的每一个位与目标操作数的反码值的 128 个位中的 每一位执行逐位的 AND 操作, 并且根据该 AND 操作的结果来设置零标志和进位标志。
     零标志和进位标志的设置支持基于逻辑比较的分支行为。对于至少一个实施例, 该 LCSZC 指令后面可以跟着单独的分支指令, 该分支指令基于所述标志中的一个或两个的 值, 指示希望由处理器执行的分支操作 ( 例如, 见下面表 4 的伪代码 )。本领域技术人员将 认识到, 状态标志的设置不是分支操作可以用以利用比较结果的唯一硬件机制, 也可以实 现其它机制, 以便基于比较结果来支持分支。 因此, 虽然下面描述的具体实施例指示作为逻 辑比较的结果, 可以设置零标志和进位标志, 但这种支持分支的标志设置并不要求用于所 有实施例。相应地, 在这里使用的术语 “LCSZC” 不应当被看成限制性的, 原因在于零标志和 进位标志的设置并非对于所有实施例都是必需的。
     例如, 对于一个可选择的实施例, 分支行为可以作为在一个指令中融合了比较和 分支的 LCSZC 指令 ( 例如融合 “测试 - 和 - 分支 (test-and-branch)” 指令 ) 的变量的直接 结果来执行。对于融合 “测试 - 和 - 分支” 指令的至少一个实施例, 作为所执行的逻辑比较 的结果, 不设置任何状态标志。 可选择的实施例可以改变在数据元素和中间结果中位的数量。而且, 可选择的实 施例可以只比较源值和目标值各自的某些位。此外, 可选择的实施例可以改变所使用的数 据元素的数量以及所产生的中间结果的数量。 例如, 可选择的实施例可以包括但不局限于 : 用于无符号源和有符号目标的 LCSZC 指令 ; 用于有符号源和无符号目标的 LCSZC 指令 ; 用 于无符号源和无符号目标的 LCSZC 指令 ; 以及用于有符号源和有符号目标的 LCSZC 指令。 在每个示例中, 所述源和目每一个都可以都包含 8- 位、 16- 位、 32- 位或 64- 位组分的打包 数据。可选择地, 所述源和目标数据不是打包的, 而是一个 128- 位的数据元素。源和目标 的打包性质不需要是对称的, 并且如果源和目标都是打包的, 源和目标的数据大小也无需 必须相同。
     计算机系统
     图 1a 示出了根据本发明的一个实施例的示例计算机系统 100。 计算机系统 100 包 括用于信息通信的互连部件 101。该互连部件 101 可以包括多分支 (multi-drop) 总线、 一 个或多个点对点互连部件或两者的任意组合, 以及任何其它通信硬件和 / 或软件。
     图 1a 示出了用于处理信息的、 与互连部件 101 耦合的处理器 109。处理器 109 表 示任何架构类型的中央处理单元, 包括 CISC 或 RISC 类型的架构。
     计算机系统 100 还包括随机访问存储器 (RAM) 或其它动态存储设备 ( 称为主存储 器 104), 其耦合到互连部件 101, 用于存储信息和由处理器 109 执行的指令。主存储器 104 还可以用于在处理器 109 执行指令期间存储临时变量或其它中间信息。
     计算机系统 100 还包括只读存储器 (ROM)106 和 / 或其它静态存储设备, 其耦合到 互连部件 101, 用于为处理器 109 存储静态信息和指令。 数据存储设备 107 耦合到互连部件 101, 用于存储信息和指令。
     图 1a 还示出 : 处理器 109 包括执行单元 130、 寄存器堆 (registerfile)150、 高速 缓存 160、 解码器 165 和内部互连部件 170。当然, 处理器 109 包括不是理解本发明所必需
     的其他电路。
     解码器 165 用于对处理器 109 接收的指令进行解码, 而执行单元 130 用于执行处 理器 109 接收的指令。如这里所述, 除了识别典型地由通用处理器执行的指令之外, 解码器 165 和执行单元 130 还识别用于执行逻辑 - 比较 - 和 - 设置 - 零 - 和 - 进位 - 标志 (LCSZC) 操作的指令。解码器 165 和执行单元 130 识别用于对打包数据和非打包数据执行 LCSZC 操 作的指令。
     执行单元 130 通过内部互连部件 170 耦合到寄存器堆 150。而且, 内部互连部件 170 无需必须是多分支总线, 在可选择的实施例中可以是点对点互连部件或其它类型的通 信路径。
     一个 ( 或多个 ) 寄存器堆 150 表示处理器 109 中用于存储信息 ( 包括数据 ) 的存 储区域。可以理解的是, 本发明的一个方面是用于对打包或非打包数据执行 LCSZC 操作的、 所描述指令的实施例。根据本发明的这个方面, 用于存储数据的存储区域不是关键的。然 而, 寄存器堆 150 的实施例在后面参考图 2a-2b 进行描述。
     执行单元 130 耦合到高速缓存 160 和解码器 165。高速缓存 160 用于对例如来自 主存储器 104 的数据和 / 或控制信号进行高速缓存。解码器 165 用于将处理器 109 接收的 指令解码成控制信号和 / 或微代码入口点。可以将这些控制信号和 / 或微代码入口点从解 码器 165 传送给执行单元 130。 执行单元 130 响应于这些控制信号和 / 或微代码入口点, 执行适当的操作。例如, 如果接收到 LCSZC 指令, 则解码器 165 使执行单元 130 执行所要求的比较逻辑。对于至少 一些实施例 ( 比如那些没有实现融合 “测试和分支” 操作的实施例 ), 执行单元 130 可以相 应地设置零标志和进位标志 ( 例如, 见逻辑比较电路 145)。对于这样的实施例, 处理器 109 的分支单元 ( 未示出 ) 可以在随后的指示目标代码位置的分支指令的执行期间使用这些标 志。
     可选择地, 执行单元 130 本身可以包括基于逻辑比较来影响分支的分支电路 ( 未 示出 )。对于这样的实施例, 由 LCSZC 指令所提供的 “分支支持” 是跳转到指定目标代码位 置的控制跳转, 而不是控制标志的设置。对于至少一个实施例, 执行跳转或 “分支” 的分支 电路可以是逻辑比较电路 145 的一部分。
     可以使用任意数量的不同机制 ( 例如, 查寻表、 硬件实现、 PLA 等 ) 来实现解码器 165。 因此, 虽然解码器 165 和执行单元 130 对各种指令的执行在这里可以由一系列 if/then 语句表示, 但可以理解的是, 指令的执行并不要求这些 if/then 语句的串行处理。相反地, 在逻辑上执行该 if/then 处理的任何机制均认为是在本发明的范围内。
     图 1a 还示出了数据存储设备 107( 例如, 磁盘、 光盘、 和 / 或其它机器可读介质 ), 其可以耦合到计算机系统 100。 另外, 数据存储设备 107 示出为包括由处理器 109 执行的代 码 195。代码 195 可以包括 LCSZC 指令 142 的一个或多个实施例, 并且可以将其编写为 : 使 处理器 109 用一个 ( 或多个 )LCSZC 指令 142 执行用于任意数量的目的 ( 例如, 运动视频压 缩 / 解压缩、 图像滤波、 音频信号压缩、 滤波或合成、 调制 / 解调等 ) 的位测试。
     计算机系统 100 还可以通过互连部件 101 耦合到用于为计算机用户显示信息的显 示设备 121。显示设备 121 可以包括帧缓冲器、 专用图形渲染设备、 液晶显示器 (LCD) 和 / 或平板显示器。
     可以将包括字母数字和其它键的输入设备 122 耦合到互连部件 101, 用于传递信 息和命令选择给处理器 109。另一种类型的用户输入设备是光标控制器 123, 比如鼠标、 轨 迹球、 笔、 触摸屏或光标方向键, 用于传递方向信息和命令选择给处理器 109, 并用于控制显 示设备 121 上的光标移动。这些输入设备典型地在两个轴 ( 第一轴 ( 例如, x) 和第二轴 ( 例如, y)) 上具有两个自由度, 这允许该设备在平面上指定位置。然而, 本发明不应当局限 于只具有两个自由度的输入设备。
     可以耦合到互连部件 101 的另一个设备是可以用来在介质 ( 比如纸、 胶卷或类似 的介质类型 ) 上打印指令、 数据或其它信息的硬拷贝设备 124。此外, 计算机系统 100 可以 耦合到用于声音记录和 / 或重放的设备 125, 比如用来记录信息的、 耦合到麦克风的音频数 字化仪。此外, 设备 125 可以包括用来播放数字化声音的、 耦合到数模 (D/A) 转换器的扬声 器。
     计算机系统 100 可以是计算机网络 ( 例如, LAN) 中的终端。从而计算机系统 100 可以是计算机网络的计算机子系统。计算机系统 100 可选择性地包括视频数字化设备 126 和 / 或通信设备 190( 例如, 提供与外部设备或网络之间的通信的串行通信芯片、 无线接口、 以太网芯片或调制解调器 )。 视频数字化设备 126 可以用于拍摄视频图像, 视频图像可以被 传送到计算机网络上的其它设备。
     对于至少一个实施例, 处理器 109 支持与现存的由加利福利亚 Santa Clara 的 处 理 器、Intel 公 司 制 造 的 处 理 器 ( 比 如, 例 如, Pro 处 理 器、II 处 理 器、 III 处 理 器、 4 处 理 器、 处 理 器、 2 处理器或 TM Core Duo 处理器 ) 使用的指令集相兼容的指令集。由此, 处理器 109 能够支持除 了本发明的操作之外的现存的处理器操作。处理器 109 还可以适于以一种或多种处理技术 制造, 并且通过足够详细地在机器可读介质上对其进行表示, 可以适于方便所述制造。 虽然 下面描述的本发明与基于 x86 的指令集相结合, 但可选择的实施例可以将本发明与其它指 令集相结合。例如, 本发明可以与使用与基于 x86 的指令集不同的指令集的 64- 位处理器 相结合。
     图 1b 示出了用于实现本发明原理的数据处理系统 102 的可选择实施例。 数据处理 TM 系统 102 的一个实施例是采用 Intel XScale 技术的应用处理器。本领域技术人员易于理 解的是, 这里所描述的实施例可以与可选择的处理系统一起使用, 而不背离本发明的范围。
     计算机系统 102 包括能够执行 LCSZC 操作的处理内核 110。 对于一个实施例, 处理 内核 110 表示任何架构类型的处理单元, 包括但不局限于 : CISC、 RISC 或 VLIW 类型的架构。 处理内核 110 也可以适于采用一种或多种处理技术制造, 并且通过足够详细地在机器可读 介质上对其进行表示, 可以适于方便所述制造。
     处理内核 110 包括执行单元 130、 一组寄存器堆 150 和解码器 165。处理内核 110 还包括对于理解本发明所不需要的其他电路 ( 未示出 )。
     执行单元 130 用于执行由处理内核 110 接收的指令。除了识别典型的处理器指令 外, 执行单元 130 还识别用于对打包和非打包数据格式执行 LCSZC 操作的指令。由解码器 165 和执行单元 130 所识别的指令集可以包括一个或多个用于 LCSZC 操作的指令, 还可以包 括其它打包指令。执行单元 130 通过内部总线 ( 再次论之, 其可以是包括多分支总线、 点对点互连部 件等的任何类型的通信路径 ) 耦合到寄存器堆 150。寄存器堆 150 表示处理内核 110 的用 于存储信息 ( 包括数据 ) 的存储区域。如前所述, 可以理解的是, 用于存储数据的存储区域 不是关键的。执行单元 130 耦合到解码器 165。解码器 165 用于将处理内核 110 接收的指 令解码成控制信号和 / 或微代码入口点。对这些控制信号和 / 或微代码入口点进行响应。 这些控制信号和 / 或微代码入口点可以被传送到执行单元 130。执行单元 130 可以响应于 所接收的控制信号和 / 或微代码入口点, 来执行适当操作。对于至少一个实施例, 例如, 执 行单元 130 可以执行这里描述的逻辑比较, 并且还可以设置这里讨论的状态标志或到指定 代码位置的分支, 或两者都设置。
     处理内核 110 与总线 214 耦合, 以便与其它各种系统设备进行通信, 这些系统设备 包括但不局限于 : 例如, 同步动态随机访问存储器 (SDRAM) 控制器 271、 静态随机访问存储 器 (SRAM) 控制器 272、 猝发式闪速存储器接口 (burst flash memory interface)273、 个人 计算机存储卡国际协会 (PCMCIA)/ 小型闪存 (compact flash, CF) 卡控制器 274、 液晶显示 器 (LCD) 控制器 275、 直接存储器访问 (DMA) 控制器 276 和可选择总线主接口 277。
     对于至少一个实施例, 数据处理系统 102 还可以包括用于通过 I/O 总线 295 与各 种 I/O 设备通信的 I/O 桥 290。这样的 I/O 设备可以包括但不局限于 : 例如, 通用异步接收 器 / 发送器 (UART)291、 通用串行总线 (USB)292、 蓝牙无线 UART293 以及 I/O 扩展接口 294。 如同上面讨论的其它总线, I/O 总线 295 可以是包括多分支总线、 点对点互连部件等的任何 类型的通信路径。
     数据处理系统 102 的至少一个实施例为移动电话提供网络和 / 或无线通信以及能 够对打包和非打包数据执行 LCSZC 操作的处理内核 110。处理内核 110 可以用以下进行编 程: 包括离散变换、 滤波或卷积在内的各种音频、 视频、 图像以及通信算法 ; 诸如颜色空间 变换、 视频编码运动估计或视频解码运动补偿之类的压缩 / 解压缩技术 ; 以及诸如脉冲编 码调制 (PCM) 之类的调制 / 解调 (MODEM) 功能进行编程。
     图 1c 示出了能够对打包和非打包数据执行 LCSZC 操作的数据处理系统 103 的可 选择实施例。根据一个可选择实施例, 数据处理系统 103 可以包括芯片封装 310, 其包含主 处理器 224 以及一个或多个协处理器 226。附加的协处理器 226 的可选择性在图 1c 中用虚 线表示。例如, 一个或多个协处理器 226 可以是能够执行 SIMD 指令的图形协处理器。
     图 1c 示出 : 数据处理系统 103 还可以包括高速缓冲存储器 278 和输入 / 输出系统 265, 两者都耦合到芯片封装 310。输入 / 输出系统 295 可以选择性地耦合到无线接口 296。
     协处理器 226 能够执行通用计算操作, 并且还能够执行 SIMD 操作。对于至少一个 实施例, 协处理器 226 能够对打包和非打包数据执行 LCSZC 操作。
     对于至少一个实施例, 协处理器 226 包括执行单元 130 和一个 ( 或多个 ) 寄存器 堆 209。主处理器 224 的至少一个实施例包括用于对由执行单元 130 所执行的指令集 ( 包 括 LCSZC 指令 ) 中的指令进行识别和解码的解码器 165。对于可选择实施例, 协处理器 226 还包括用于对指令集 ( 包括 LCSZC 指令 ) 中的指令进行解码的解码器 166 的至少一部分。 数据处理系统 103 还包括对理解本发明不是必需的其他电路 ( 未示出 )。
     在运行中, 主处理器 224 执行用于控制通用类型的数据处理操作的数据处理指令 流, 所述通用类型的数据处理操作包括与高速缓冲存储器 278 和输入 / 输出系统 295 的交互。嵌入在数据处理指令流中的是协处理器指令。主处理器 224 的解码器 165 将这些协处 理器指令识别为应当由附加的协处理器 226 执行的类型。相应地, 主处理器 224 在协处理 器互连部件 236 上发布这些协处理器指令 ( 或表示协处理器指令的控制信号 ), 任何附加 的一个 ( 或多个 ) 协处理器从协处理器互连部件 236 上接收这些指令 ( 或信号 )。对于图 1c 所示的单个协处理器的实施例, 协处理器 226 接受并执行任何发给它的所接收的协处理 器指令。协处理器互连部件可以是包括多分支总线、 点对点互连部件等的任何类型的通信 路径。
     数据可以通过无线接口 296 接收, 以便由协处理器指令进行处理。对于一个示例, 可以以数字信号的形式接收语音通信, 所述数字信号可以由协处理器指令进行处理以便重 新生成表示语音通信的数字音频采样。对于另一示例, 可以以数字比特流的形式接收压缩 的音频和 / 或视频, 所述数字比特流可以由协处理器指令处理以便重新生成数字音频采样 和 / 或运动视频帧。
     对于至少一个可选择实施例, 主处理器 224 和协处理器 226 可以集成到包括执行 单元 130、 一个 ( 或多个 ) 寄存器堆 209 以及解码器 165 在内的单个处理内核中, 其中, 解码 器 165 用来识别由执行单元 130 执行的指令集 ( 包括 LCSZC 指令 ) 中的多个指令。
     图 2a 示出了根据本发明的一个实施例的处理器的寄存器堆。寄存器堆 150 可以 用于存储信息, 包括 : 控制 / 状态信息、 整数数据、 浮点数据和打包数据。 本领域技术人员将 认识到, 前述的信息和数据列表不是穷举的、 全包含的列表。
     对于图 2a 所示的实施例, 寄存器堆 150 包括整数寄存器 201、 寄存器 209、 状态寄 存器 208 和指令指针寄存器 211。状态寄存器 208 指示处理器 109 的状态, 并且可以包括诸 如零标志和进位标志的各种状态寄存器。指令指针寄存器 211 存储将要执行的下一个指令 的地址。整数寄存器 201、 寄存器 209、 状态寄存器 208 和指令指针寄存器 211 都耦合到内 部互连部件 170。还可以将其他的寄存器耦合到内部互连部件 170。内部互连部件 170 可 以是多分支总线, 但不需要必须如此。可替换地, 内部互连部件 170 可以是包括点对点互连 部件在内的任何其它类型的通信路径。
     对于一个实施例, 寄存器 209 可以既用于打包数据又用于浮点数据。在这样的一 个实施例中, 在任何给定时刻, 处理器 109 把寄存器 209 看成是栈参考浮点寄存器 (stack referenced floating point register) 或非栈参考打包数据寄存器。 在该实施例中, 包含 了一种机制, 其允许处理器 109 在将寄存器 209 作为栈参考浮点寄存器进行操作和将寄存 器 209 作为非栈参考打包数据寄存器进行操作之间进行切换。在另一个这样的实施例中, 处理器 109 可以同时将寄存器 209 作为栈参考浮点寄存器和非栈参考打包数据寄存器进行 操作。在另一个实施例中, 作为另一示例, 这些寄存器可以用来存储整数数据。
     当然, 可选择的实施例可以实现为包括更多或更少的寄存器组。 例如, 可选择的实 施例可以包括用于存储浮点数据的独立的浮点寄存器组。作为另一示例, 可选择的实施例 可以包括每个都用于存储控制 / 状态信息的第一组寄存器以及每个都能够存储整数、 浮点 数和打包数据的第二组寄存器。作为澄清, 实施例的寄存器不应当在意思上限制于特殊类 型的电路。相反地, 实施例的寄存器只需要能够存储和提供数据并执行这里描述的功能。
     可以实现各种寄存器组 ( 例如, 整数寄存器 201、 寄存器 209) 以包括不同数量的寄 存器和 / 或不同大小的寄存器。例如, 在一个实施例中, 整数寄存器 201 实现为存储 32 个位, 而寄存器 209 实现为存储 80 个位 ( 全部 80 个位都用于存储浮点数据, 而只有 64 个位 用于打包数据 )。此外, 寄存器 209 可以包含 8 个寄存器, R0 212a 到 R7 212h。R1 212b、 R2 212c 和 R3 212d 是寄存器 209 中的单个寄存器的示例。寄存器 209 中寄存器的 32 个位可 以被移动到整数寄存器 201 中的整数寄存器中。类似地, 整数寄存器中的值能够被移动到 寄存器 209 中的寄存器的 32 个位中。在另一实施例中, 每个整数寄存器 201 都包括 64 个 位, 并且数据的 64 个位可以在整数寄存器 201 和寄存器 209 之间移动。在另一可选择实施 例中, 每个寄存器 209 都包括 64 个位并且寄存器 209 包括 16 个寄存器。在另一可选择实 施例中, 寄存器 209 包括 32 个寄存器。
     图 2b 示出了根据本发明的一个可选择实施例的处理器的寄存器堆。 寄存器堆 150 可以用于存储信息, 包括 : 控制 / 状态信息、 整数数据、 浮点数据和打包数据。在图 2b 所示 的实施例中, 寄存器堆 150 包括整数寄存器 201、 寄存器 209、 状态寄存器 208、 扩展寄存器 210 和指令指针寄存器 211。 状态寄存器 208、 指令指针寄存器 211、 整数寄存器 201、 寄存器 209 全部都耦合到内部互连部件 170。 相应地, 扩展寄存器 210 也耦合到内部互连部件 170。 内部互连部件 170 可以是多分支总线, 但不需要必须如此。可替换地, 内部互连部件 170 可 以是包括点对点互连部件在内的任何其它类型的通信路径。 对于至少一个实施例, 扩展寄存器 210 既用于打包的整数数据也用于打包的浮点 数据。对于可选择的实施例, 扩展寄存器 210 可用于标量数据 (scalar data)、 打包的布尔 数据、 打包的整数数据和 / 或打包的浮点数据。当然, 可选择的实施例可以实现为包含更多 或更少的寄存器组、 在每组中有更多或更少的寄存器或在每个寄存器中的更多或更少的数 据存储位, 而不脱离本发明更宽的范围。
     对于至少一个实施例, 整数寄存器 201 实现为存储 32 个位, 寄存器 209 实现为存 储 80 个位 ( 全部 80 个位都用于存储浮点数据, 而只有 64 个位用于打包数据 ), 并且扩展 寄存器 210 实现为存储 128 个位。此外, 扩展寄存器 210 可以包括 8 个寄存器 XR0 213a 到 XR7 213h。XR0 213a、 XR1 213b 和 XR2 213c 是寄存器 210 中的单个寄存器的示例。对于另 一实施例, 每个整数寄存器 201 包括 64 个位, 每个扩展寄存器 210 包括 64 个位, 而扩展寄 存器 210 包括 16 个寄存器。对于一个实施例, 扩展寄存器 210 的两个寄存器可以作为一个 “对” 进行操作。对于另一可选择的实施例, 扩展寄存器 210 包括 32 个寄存器。
     图 3 示出了根据本发明的一个实施例, 用于操作数据的处理 300 的一个实施例的 流程图。也就是说, 图 3 示出了例如对打包数据执行 LCSZC 操作、 对非打包数据执行 LCSZC 操作或执行一些其它操作时, 由处理器 109( 例如, 见图 1a) 进行的处理。这里所讨论的处 理 300 和其它处理由处理块来执行, 所述处理块可以包括专用硬件或者或可由通用机器或 由专用机器或由它们的组合执行的软件或固件操作码。
     图 3 示出 : 用于该方法的处理在 “开始” 处开始, 并进行到处理块 301。在处理块 301, 解码器 165( 例如, 见图 1a) 接收来自高速缓存 160( 例如, 见图 1a) 或互连部件 101( 例 如, 见图 1a) 的控制信号。对于至少一个实施例, 在块 301 接收的控制信号可以是通常称为 软件 “指令” 的控制信号类型。解码器 165 将控制信号解码以确定将要执行的操作。处理 从处理块 301 进行到处理块 302。
     在处理块 302, 解码器 165 访问寄存器堆 150( 图 1a) 或存储器中的单元 ( 例如, 见 图 1a 的主存储器 104 或高速缓冲存储器 160)。根据控制信号中指定的寄存器地址, 来访
     问寄存器堆 150 中的寄存器或存储器中的存储单元。例如, 用于操作的控制信号能够包含 SRC1、 SRC2 和 DEST 寄存器地址。SRC1 是第一源寄存器的地址。SRC2 是第二源寄存器的地 址。在某些情况下, SRC2 地址是可选的, 因为并非所有操作都要求两个源地址。如果对于 一个操作没有要求 SRC2 地址, 则仅使用 SRC1 地址。DEST 是存储结果数据的目标寄存器的 地址。对于至少一个实施例, 在由解码器 165 识别的至少一个控制信号中, SRC1 或 SRC2 也 可以用作 DEST。
     在相应寄存器中所存储的数据分别称为 Source1、 Source2 和 Result。在一个实 施例中, 这些数据中的每一个可以是 64 位长度。对于可选择的实施例, 这些数据中的一个 或多个可以是其它长度, 比如 128 位长度。
     对于本发明的另一个实施例, SRC1、 SRC2 和 DEST 中的任何一个或全部能够确定在 处理器 109( 图 1a) 或处理内核 110( 图 1b) 的可寻址存储空间中的存储单元。例如, SRC1 可以标识主存储器 104 中的存储单元, 而 SRC2 标识在整数寄存器 201 中的第一寄存器, 而 DEST 标识寄存器 209 中的第二寄存器。 为了简化这里的描述, 本发明将描述与寄存器堆 150 有关的访问。然而, 本领域技术人员将认识到, 替代地, 这些所描述的访问也可以使用于存 储器。 处理从块 302 进行到处理块 303。在处理块 303, 执行单元 130( 例如, 见图 1a) 能 够对所访问的数据执行操作。
     处理从处理块 303 进行到处理块 304。在处理块 304, 根据控制信号的要求, 将结 果存储回寄存器堆 150 或存储器。然后处理在 “停止” 处结束。
     数据存储格式
     图 4 示出了根据本发明一个实施例的多个打包数据类型。示出了四个打包数据 和一个非打包数据格式, 包括打包字节 421、 打包半 (packed half)422、 打包单 (packed single)423、 打包双 (packed double)424 和非打包双四字 412。
     对于至少一个实施例, 打包字节格式 421 是包括 16 个数据元素 (B0-B15) 的 128 位长。每个数据元素 (B0-B15) 是一个字节 ( 例如, 8 位 ) 长。
     对于至少一个实施例, 打包半格式 422 是包括 8 个数据元素 (Half0 到 Half7) 的 128 位长。每个数据元素 (Half0 到 Half7) 可以保存 16 位的信息。可选择地, 这些 16- 位 的数据元素中的每一个可以被称为 “半字” 或 “短字” , 或简单地称为 “字” 。
     对于至少一个实施例, 打包单格式 423 可以是 128 位长并且可以保存 4 个 423 数 据元素 (Single0 到 Single3)。数据元素 (Single0 到 Single3) 中的每一个可以保存 32 位 的信息。可选择地, 每一个 32- 位数据元素可以被称为 “dword” 或 “双字” 。每个数据元素 (Single0 到 Single3) 可以表示例如 32- 位的单精度浮点值, 因此称作 “打包单” 格式。
     对于至少一个实施例, 打包双格式 424 可以是 128 位长并且可以保存两个数据 元素。打包双格式 424 的每个数据元素 (Double0、 Double1) 可以保存 64- 位的信息。可 选择地, 每个 64- 位数据元素可以被称为 “qword” 或 “四字 (quadword)” 。每个数据元素 (Double0、 Double1) 可以表示例如 64- 位的双精度浮点值, 因此称作 “打包双” 格式。
     非打包双四字格式 412 可以保存多达 128 位的数据。该数据不需要必须是打包数 据。例如, 对于至少一个实施例, 非打包双四字格式 412 的 128 位的信息可以表示单个标量 数据, 比如字符、 整数、 浮点值或二进制的位 - 掩码值。可选择地, 非打包双四字格式 412 的
     128 位可以表示多个不相干的位 ( 比如状态寄存器值, 其中每一位或位组表示不同标志 ) 等 等的集合。
     对于本发明的至少一个实施例, 打包单格式 423 和打包双格式 424 的数据元素可 以是如上所指示的打包的浮点数据元素。在本发明的可选择实施例中, 打包单格式 423 和 打包双格式 424 的数据元素可以是打包整数数据元素、 打包布尔数据元素或打包浮点数据 元素。对于本发明的另一可选择的实施例, 打包字节格式 421、 打包半格式 422、 打包单格 式 423 和打包双格式 424 的数据元素可以是打包整数数据元素或打包布尔数据元素。对 于本发明的可选择实施例, 并非允许或支持所有的打包字节数据格式 421、 打包半数据格式 422、 打包单数据格式 423 和打包双数据格式 424。
     图 5 和 6 示出了根据本发明的至少一个实施例的寄存器内的打包数据存储表示。
     图 5 分别示出了无符号和有符号打包字节的寄存器内格式 510 和 511。无符号打 包字节的寄存器内表示 510 示出了例如在 128- 位的扩展寄存器 XR0213a 到 XR7213h( 例如, 见图 2b) 其中之一中的无符号打包字节数据的存储。将 16 个字节数据元素中每一个的信 息存储在字节 0 的位 7 到位 0、 字节 1 的位 15 到位 8、 字节 2 的位 23 到位 16、 字节 3 的位 31 到位 24、 字节 4 的位 39 到位 32、 字节 5 的位 47 到位 40、 字节 6 的位 55 到位 48、 字节 7 的位 63 到位 56、 字节 8 的位 71 到位 64、 字节 9 的位 79 到位 72、 字节 10 的位 87 到位 80、 字节 11 的位 95 到位 88、 字节 12 的位 103 到位 96、 字节 13 的位 111 到位 104、 字节 14 的位 119 到位 112、 以及字节 15 的位 127 到位 120。
     因此, 在寄存器中所有可利用的位都被使用。该存储安排增加了处理器的存储效 率。而且, 使用被访问的 16 个数据元素, 现在可以同时对 16 个数据元素执行一个操作。
     有符号打包字节的寄存器内表示 511 示出了有符号打包字节的存储。注意, 每个 字节数据元素的第 8 位 (MSB) 是符号指示器 (“s” )。
     图 5 还分别示出了无符号和有符号打包字的寄存器内表示 512 和 513。
     无符号打包字的寄存器内表示 512 示出了扩展寄存器 210 怎样存储 8 个字 ( 每个 16 位 ) 的数据元素。字 0 存储在寄存器的位 15 到位 0。字 1 存储在寄存器的位 31 到位 16。 字 2 存储在寄存器的位 47 到位 32。字 3 存储在寄存器的位 63 到位 48。字 4 存储在寄存 器的位 79 到位 64。字 5 存储在寄存器的位 95 到位 80。字 6 存储在寄存器的位 111 到位 96。字 7 存储在寄存器的位 127 到位 112。
     有符号打包字的寄存器内表示 513 类似于无符号打包字的寄存器内表示 512。注 意, 符号位 (“s” ) 存储在每个字数据元素的第 16 位 (MSB)。
     图 6 分别示出了无符号和有符号打包双字的寄存器内格式 514 和 515。无符号打 包双字的寄存器内表示 514 示出了扩展寄存器 210 怎样存储 4 个双字 ( 每个 32 位 ) 的数 据元素。双字 0 存储在寄存器的位 31 到位 0。双字 1 存储在寄存器的位 63 到位 32。双字 2 存储在寄存器的位 95 到位 64。双字 3 存储在寄存器的位 127 到位 96。
     有符号打包双字的寄存器内表示 515 类似于无符号打包双字的寄存器内表示 514。注意, 符号位 (“s” ) 是每个双字数据元素的第 32 位 (MSB)。
     图 6 还分别示出了无符号和有符号打包四字的寄存器内格式 516 和 517。无符号 打包四字的寄存器内表示 516 示出了扩展寄存器 210 怎样存储 2 个四字 ( 每个 64 位 ) 的 数据元素。四字 0 存储在寄存器的位 63 到位 0。四字 1 存储在寄存器的位 127 到位 64。有符号打包四字的寄存器内表示 517 类似于无符号打包四字的寄存器内表示 516。注意, 符号位 (“s” ) 是每个四字数据元素的第 64 位 (MSB)。
     一个 ( 或多个 ) 逻辑比较 - 和 - 交换、 设置 - 零 - 和 - 进位 - 标志操作
     对于本发明的至少一个实施例, SRC1 寄存器可以保存打包数据或非打包双四字数 据 (Source1), 并且 DEST 寄存器也可以保存打包数据或非打包双四字数据 (Dest)。对于至 少一个实施例, 在 DEST 寄存器中的 Dest 值或在 SRC1 寄存器中的 Source1 值可以是要用作 逐位掩码值的双四字非打包数据。
     通常, 在 LCSZC 指令的第一步中, 执行两个比较操作。通过对 Source1 中的每个 位与 Dest 的相应位执行独立的逻辑比较 ( 逐位 AND 操作 ), 产生第一中间结果。通过对 Source1 中的每个位与 Dest 的相应位的反码执行独立的逻辑比较 ( 逐位 AND 操作 ), 产生 第二中间结果。这些中间结果可以存储在临时存储单元 ( 比如, 例如, 寄存器 ) 或者可以根 本不由处理器存储。
     图 7a 是根据本发明的至少一个实施例的执行 LCSZC 操作的一般方法 700 的流程 图。这里所公开的处理 700 和其它处理由多个处理块来执行, 所述处理块可以包括专用硬 件或可由通用机器或由专用机器或由它们的组合执行的软件或固件操作码。 在下面的段落 中, 将参考图 1a 讨论图 7a 到 7d。
     图 7a 示出了方法 700 开始于 “开始” 处, 并且进行到处理块 701。在处理块 701, 解码器 165 对处理器 109 接收的控制信号进行解码。因此, 解码器 165 对 LCSZC 指令的操 作码进行解码。然后处理从处理块 701 进行到处理块 702。
     在处理块 702, 给定在指令中编码的 SRC1 和 DEST 地址, 解码器 165 通过内部总 线 170 访问寄存器堆 150 中的寄存器 209。对于至少一个实施例, 每一个在指令中的被编 码的地址都指示扩展寄存器 ( 例如, 见图 2b 的扩展寄存器 210)。对于该实施例, 在块 702 中访问所指示的扩展寄存器 210, 以便为执行单元 130 提供存储在 SRC1 寄存器中的数据 (Source1) 以及存储在 DEST 寄存器中的数据 (Dest)。对于至少一个实施例, 扩展寄存器 210 通过内部总线 170 将数据传递给执行单元 130。
     处理从处理块 702 进行到处理块 703。在处理块 703 中, 解码器 165 使执行单元 130 能够执行该指令。 对于至少一个实施例, 通过给执行单元发送一个或多个控制信号以指 示所希望的操作 (LCZCS), 来执行该使能 703。处理从块 703 进行到处理块 714 和 715。虽 然块 714 和 715 被并列示出, 但本领域技术人员将认识到, 只要它们在同一周期或周期组中 执行, 这样的操作就需要被严格同时地执行, 并且对于至少一个可选择的实施例, 块 714 和 715 的处理可以串行执行。 因此, 不同的实施例可以以并行、 串行、 或串行与并行操作的某种 组合来执行块 714 和 715 的处理。
     在处理块 714, 执行以下内容。所有或一些 Source1 位与 Dest 值的相同的各个位 进行逻辑 AND。类似地, 在处理块 715 中, 所有或一些 Source1 位与 Dest 值的相同的各个位 的反码进行逻辑 AND。
     处理从块 714 进行到块 720。处理从块 715 进行到块 721。
     在处理块 720 中, 基于在处理块 714 中执行的比较结果, 修改处理器的状态。类似 地, 在处理块 721 中, 基于在处理块 715 中执行的比较结果, 修改处理器的状态。本领域技 术人员将注意到, 图 7a 所说明的方法 700 是非破坏性的, 原因在于作为 LCSZC 操作的结果Source1 和 Dest 操作数的值都没有被修改。替代地, 零标志在块 720 中被修改而进位标志 在块 721 中被修改。
     在处理块 720 中, 如果中间结果 1 的全部位都等于 0( 例如, 逻辑低值 ), 则将零标 志的值设置为 true 值 ( 例如, 逻辑高值 )。然而, 如果即使是中间结果 1 中的一个位是逻辑 高值, 也会在块 720 中将零标志设置为 false 值 ( 例如, 逻辑低值 )。
     在处理块 721 中, 如果中间结果 2 的全部位都等于 0( 例如, 逻辑低值 ), 则将进位 标志的值设置为 true 值 ( 例如, 逻辑高值 )。然而, 如果即使是中间结果 2 中的一个位是逻 辑高值, 以会在块 721 中将进位标志设置为 false 值 ( 例如, 逻辑低值 )。
     可以理解的是, 处理 700 的可选择实施例可以仅实现处理块 714 和 720, 而不实现 处理块 715 和 721, 或者只实现处理块 715 和 721, 而不实现处理块 714 和 720。同样可以理 解的是, 处理 700 的可选择实施例可以实现支持 LCSZC 指令的其他变形的其他处理块。
     处理可以从块 720 和 721 选择性地进行到块 722。在块 722 中, 可以修改处理器 内的其它状态位。 例如, 对于至少一个实施例, 这些状态位可以包括一个或多个其它在架构 上可见的状态标志值。这些标志可以是 1- 位或 2- 位值并且可以包括 : 奇偶 (PF)、 辅助进 位 (AF)、 符号 (SF)、 陷阱 (TF)、 中断使能 / 无效 (IF)、 方向 (DF)、 溢出 (OF)、 I/O 特权等级 (IOPL)、 嵌套任务 (NT)、 恢复 (RF)、 虚拟 8086 模式 (VM)、 对齐检查 (AC)、 虚拟中断 (VIF)、 虚拟未决中断 (FIP) 和 CPU 标识符 (ID) 标志等。当然, 前述的具体标志的列表目的只是说 明; 其它实施例可以包括更少、 更多或不同的标志。
     从可选择块 722, 处理结束于 “结束” 处。对于不包括可选择块 722 的实施例, 处理 在块 720 和 721 的处理后就结束于 “结束” 处。
     图 7b 示出了在图 7a 中所示的一般方法 700 的至少一个具体实施例 700b 的流 程图。对于图 7b 所示的具体实施例 700b, 对 128 位长并且可以是或可以不是打包数据的 Source1 和 Dest 数据值, 执行 LCSZC 操作。( 当然, 本领域技术人员将认识到, 也可以对其 它长度的数据值执行图 7b 中所示出的操作, 包括小于或大于 128 位的数据值 )。
     方法 700b 的处理块 701b 到 703b 的操作本质上与上面结合图 7a 中所示的方法 700 所描述的处理块 701 到 703 的操作相同。当解码器 165 在块 703b 中使执行单元 130 执 行指令时, 该指令是用于对 Source1 和 Dest 值的各个位执行逻辑 AND 比较的 LCSZC 指令。 ( 例如, 见图 6 中所示的有符号打包双字的寄存器内表示 515)。这样的指令可以用可由应 用程序程序员使用的助记忆指令 ( 比如 “PTEST” ) 称谓。处理从块 703b 进行到块 714b 和 715b。同样, 块 714b 和 715b 可以并行执行, 但不需要必须如此。
     处理从处理块 703b 进行到处理块 714b 和 715b。应当再次注意, 如上结合图 7a 的 处理块 714 和 715 所指示的, 虽然在图 7b 中示出的块 714b 和 715b 被并行执行, 但本发明 应当被解释为在这方面不受限制。替代地, 不同实施例可以以并行、 串行、 或串行与并行操 作的某种组合来执行块 714b 和 715b 的处理。
     在处理块 714b 中, 执行以下内容。 Source1 的全部位与 Dest 值的相同的各个位进 行逻辑 AND。也就是说, 将 Source1[127:0] 与 Dest[127:0] 的各个位的逐位 AND 操作的结 果分配给中间结果 1 的位 [127:0]。
     类似地, 在处理块 715b 中, Source1 的全部位与 Dest 值的相同的各个位的反码进 行逻辑 AND。 也就是说, 将 Source1[127:0] 的位与 Dest[127:0] 的各个位的反码的逐位 AND操作的结果分配给中间结果 2 的位 [127:0]。
     处理从块 714b 进行到块 720b。处理从块 715b 进行到块 721b。
     在处理块 720b 中, 基于处理块 714b 中执行的比较的结果, 修改处理器的状态。类 似地, 在处理块 721b 中, 基于处理块 715b 中执行的比较的结果, 修改处理器的状态。本领 域技术人员将注意到, 图 7b 中所示的方法 700b 是非破坏性的, 原因在于作为 LCSZC 操作的 结果, Source1 和 Dest 操作数的值都没有被修改。可替换地, 零标志在块 720b 中被修改而 进位标志在块 721b 中被修改。
     在处理块 720b 中, 如果中间结果 1 的全部位 ( 例如, 中间结果 1 的位 [127:0]) 都 等于 0( 例如, 逻辑低值 ), 则将零标志的值设置为 true 值 ( 例如, 逻辑高值 )。然而, 如果 即使是中间结果 1 中的一个位是逻辑高值, 也会在块 720b 中将零标志设置为 false 值 ( 例 如, 逻辑低值 )。
     在处理块 721b 中, 如果中间结果 2 的全部位 ( 例如, 中间结果 2 的位 [127:0]) 都 等于 0( 例如, 逻辑低值 ), 则将进位标志的值设置为 true 值 ( 例如, 逻辑高值 )。然而, 如 果即使是中间结果 2 中的一个位是逻辑高值, 也会在块 721b 中将进位标志设置为 false 值 ( 例如, 逻辑低值 )。
     可以理解的是, 处理 700b 的可选择实施例可以仅实现处理块 714b 和 720b, 而不 实现处理块 715b 和 721b, 或者只实现处理块 715b 和 721b, 而不实现处理块 714b 和 720b。 同样可以理解的是, 处理 700b 的可选择实施例可以实现支持 LCSZC 指令的其他变形的其他 处理块。
     处理可以从块 720b 和 721b 选择性地进行到块 722b。在块 722b 中, 可以修改处 理器内的其它状态位。对于图 7b 中所示的实施例, 在块 722b 中, 给 AF( 辅助进位 )、 OF( 溢 出 )、 PF( 奇偶 ) 和 SF( 符号 ) 标志分配逻辑低值。
     从可选择块 722b, 处理结束于 “结束” 处。对于不包括可选择块 722b 的实施例, 处 理在块 720b 和 721b 的处理后就结束于 “结束” 处。
     应当理解的是, 处理块 714、 714b、 715 或 715b 的可选择实施例可以对有符号数据 元素或无符号数据元素或两者的组合执行逻辑比较操作。
     图 7c 示出了在图 7a 中所示的一般方法 700 的至少一个可选择的具体实施例 700c 的流程图。 对于图 7c 中所示的具体实施例 700c, 对 128 位长的 Source1 和 Dest 数据值执行 LCSZC 操作。源操作数或目标操作数或两者都可以是打包的, 原因在于源操作数的 128- 位 数据值表示 4 个打包的 32- 位 (“双字” ) 数据元素。例如, 数据元素的每一个都可以表示 32 位的有符号单精度浮点值。
     当然, 本领域技术人员将认识到, 也可以对包括小于或大于 128 位的数据值在内 的其它长度的数据值以及包括字节 (8 位 ) 和 / 或短字 (16 位 ) 在内的其它大小的数据元 素, 执行图 7c 中所示的操作。
     方法 700c 的处理块 701c 到 703c 的操作本质上与上面结合图 7a 中所示的方法 700 所描述的处理块 701 到 703 的操作相同。前述语句的例外是, 对于处理块 703c, 当解码 器 165 使执行单元 130 能够执行指令时, 该指令是用于对 Source1 和 Destination 值的每 个 32- 位双字的 MSB 执行逻辑 AND 比较的 LCSZC 指令。( 例如, 见图 6 中所示的有符号打包 双字的寄存器内表示 515)。 这样的指令可以用可由应用程序程序员使用的助记忆指令 ( 比如 “TESTPS” ) 称谓, 其中 “PS” 表示打包的单精度数据元素。
     处理从块 703c 进行到块 714c 和 715c。同样, 块 714c 和 715c 可以并行执行, 但不 需要必须如此。
     在处理块 714c 中, 执行以下内容。 Source1 的全部位与 Dest 值的相同的各个位进 行逻辑 AND。也就是说, 将 Source1[127:0] 与 Dest[127:0] 的各个位的逐位 AND 操作的结 果分配给中间结果 1 的位 [127:0]。
     类似地, 在处理块 715c 中, Source1 的全部位与 Dest 值的相同的各位的反码进行 逻辑 AND。也就是说, 将 Source1[127:0] 的位与 Dest[127:0] 的各个位的反码的逐位 AND 操作的结果分配给中间结果 2 的位 [127:0]。
     处理从块 714c 进行到块 720c。处理从块 715c 进行到块 721c。
     在块 720c 中, 确定第一中间值 ( 中间值 1) 的每个 32- 位双字的 MSB。如果中间值 1 的位 127、 95、 63 和 31 等于 0, 则在块 720c 中将零标志设置为逻辑高值。否则, 在块 720c 中将零标志设置为逻辑低值。
     类似地, 在块 721c 中, 确定第二中间值 ( 中间值 2) 的每个 32- 位双字的 MSB。如 果中间值 2 的位 127、 95、 63 和 31 等于 0, 则在块 721c 中将进位标志设置为逻辑高值。否 则, 在块 721c 中将进位标志设置为逻辑低值。 作为方法 700c 的处理结果, 源寄存器 (SRC1) 没有被修改。
     处理从块 720c 和 721c 进行到 “结束” 或进行到可选择处理块 722c。在块 722c 中, 可以修改处理器内的其它状态位。对于图 7c 所示的实施例, 在块 722c 中, 给 AF( 辅助 进位 )、 OF( 溢出 )、 PF( 奇偶 ) 和 SF( 符号 ) 标志分配逻辑低值。
     对于不包括可选择块 722c 的实施例, 处理在块 720c 和 721c 的处理后就结束于 “结束” 处。对于包括可选择块 722c 的实施例, 处理在处理块 722c 完成之后结束。
     图 7d 示出了在图 7a 中所示的一般方法 700 的至少一个可选择的具体实施例 700d 的流程图。 对于图 7d 中所示的具体实施例 700d, 对 128 位长的 Source1 和 Dest 数据值执行 LCSZC 操作。源操作数或目标操作数或两者都可以是打包的, 原因在于源操作数的 128- 位 数据值表示两个打包的 64- 位数据元素。例如, 数据元素的每一个都可以表示 64 位有符号 双精度浮点值。
     当然, 本领域技术人员将认识到, 也可以对包括小于或大于 128 位的数据值在内 的其它长度的数据值以及包括字节 (8 位 ) 和 / 或短字 (16 位 ) 在内的其它大小的数据元 素, 执行图 7d 中所示的操作。
     方法 700d 的处理块 701d 到 703d 的操作本质上与上面结合图 7a 中所示的方法 700 所描述的处理块 701 到 703 的操作相同。前述语句的例外是, 对于处理块 703d, 当解码 器 165 使执行单元 130 能够执行指令时, 该指令是用于对 Source1 和 Destination 值的每 个 64- 位四字的 MSB 执行逻辑 AND 比较的 LCSZC 指令。( 例如, 见图 6 中所示的有符号打包 四字的寄存器内表示 517)。 这样的指令可以用可由应用程序程序员使用的助记忆指令 ( 比 如 “TESTPD” ) 称谓, 其中 “PD” 表示打包的双精度数据元素。
     处理从块 703d 进行到块 714d 和 715d。同样, 块 714d 和 715d 可以并行执行, 但不 需要必须如此。
     在处理块 714d 中, 执行以下内容。 Source1 的全部位与 Dest 值的相同的各个位进行逻辑 AND。也就是说, 将 Source1[127:0] 与 Dest[127:0] 的各个位的逐位 AND 操作的结 果分配给中间结果 1 的位 [127:0]。
     类似地, 在处理块 715d 中, Source1 的全部位与 Dest 值的相同的各个位的反码进 行逻辑 AND。 也就是说, 将 Source1[127:0] 的位与 Dest[127:0] 的各个位的反码的逐位 AND 操作的结果分配给中间结果 2 的位 [127:0]。
     处理从块 714d 进行到块 720d。处理从块 715d 进行到块 721d。
     在块 720d 中, 确定第一中间值 ( 中间值 1) 的每个 64- 位四字的 MSB。如果中间值 1 的位 127 和 63 等于 0, 则在块 720d 中将零标志设置为逻辑高值。否则, 在块 720d 中将零 标志设置为逻辑低值。
     类似地, 在块 721d 中, 确定第二中间值 ( 中间值 2) 的每个 64- 位四字的 MSB。如 果中间值 2 的位 127 和 63 等于 0, 则在块 721d 中将进位标志设置为逻辑高值。否则, 在块 721d 中将进位标志设置为逻辑低值。作为方法 700d 的处理结果, 源寄存器 (SRC1) 的初始 值 (Source1) 和目标寄存器 (DEST) 的初始值 (Dest) 都没有被修改。
     处理从块 720d 和 721d 进行到 “结束” 或进行到可选择处理块 722d。在块 722d 中, 可以修改处理器内的其它状态位。对于图 7d 中所示的实施例, 在块 722d 中给 AF( 辅助进 位 )、 OF( 溢出 )、 PF( 奇偶 ) 和 SF( 符号 ) 标志分配逻辑低值。 对于不包括可选择块 722d 的实施例, 处理在块 720d 和 721d 的处理后就结束于 “结束” 处。对于包括可选择块 722d 的实施例, 处理在处理块 722d 完成之后结束。
     逻辑 - 比较、 设置 - 零 - 和 - 进位标志电路
     对于至少一些实施例, 在与非打包数据的比较操作相同的时钟周期数内, 可以对 多个数据元素执行用于打包数据的各种 LCSZC 指令 ( 例如, 上面讨论的 TESTPS 和 TESTPD)。 为了在相同时钟周期数内完成执行, 可以使用并行机制。 也就是说, 可以同时命令处理器的 元件 ( 比如寄存器和执行单元 ) 对数据元素执行 LCSZC 操作。在下面更详细地讨论该并行 操作。下面参考图 1a 讨论图 8a 和 8b。
     图 8a 示出了根据本发明至少一个实施例的对打包数据执行 LCSZC 操作的电路 801。对于至少一个实施例, 电路 801 可以是图 1a 所示的逻辑比较电路 145 的全部或一部 分。
     图 8a 描述了源操作数 Source1[127:0]831 和目标操作数 Dest[127:0]833。对于 至少一个实施例, 源和目标被存储在 N- 位长的 SIMD 寄存器内, 比如例如 128- 位的 SSE2XMM 寄存器 ( 例如, 见图 2b 的扩展寄存器 210)。
     图 8a 所示的具体示例实施例示出了 LCSZC 指令的双四字 (128- 位 ) 实施例, 其中 将 128 位的源操作数和目标操作数的每一位与它们各自的配对位进行比较。对于该实施 例, 因为每个位都进行比较, 所以该操作可以操作于 ( 并且在功能上不知道 ) 源操作数和目 标操作数中的任何性质的 128 位 ; 源操作数和目标操作数两者之一或两者都可以是打包数 据、 非打包标量数据、 有符号数据或无符号数据。在一些具体示例中, 虽然打包数据源 831 和目标 833 可以被表示为具有 128- 位, 但可以理解的是, 这里所公开的原理可以扩展到其 它传统上选择的长度, 比如 80- 位、 128- 位或 256- 位。
     操作控制 800 在使能 (Enable)880 上输出信号, 以控制电路 801 所执行的操作。 操 作控制 800 的一个实施例可以包括例如解码器 165 和指令指针寄存器 211。 当然, 操作控制
     800 还可以包括对于理解本发明不是必需的其他电路。 LCSZC 电路 801 包括两组 (825, 827) AND 门, 其中每组都包括用于源操作数的每个位的一个 AND 门。 因此, 对于源和目标具有 128 位的实施例, 第一组 825 包括 128 个 AND 门 819, 而第二组 827 包括 128 个 AND 门 820。源 操作数和目标操作数的 128 个位值中的每一个 ( 例如, 见图 8a 中的位值 854) 都是第一组 825 中的一个 AND 门 819 的输入, 而且也是第二组 827 中的一个 AND 门 820 的输入。应当注 意, 仅在目标操作数已经转化成它的反码值 ( 见转化器逻辑 844) 后, 第二组 AND 门 827 才 接收来自目标操作数 833 的输入。
     第一组 825 中的每一个 AND 门 819 的输出是 NAND 门 854 的输入。NAND 门 854 的 至少一个作用是确定对源和目标的位进行 AND 的结果是否得到全 0 值 ( 逻辑低值 ), 并且如 果是, 就给零标志 858 传递逻辑高值从而对其进行设置。
     第二组 827 中的每一个 AND 门 820 的输出是 NAND 门 856 的输入。NAND 门 856 的 至少一个作用是确定对源 831 的位和目标 833 的位的反码进行 AND 的结果是否得到全 0 值 ( 逻辑低值 ), 并且如果是, 就给进位标志 860 传递逻辑高值从而对其进行设置。
     双四字 LCSZC 指令的可选择实施例可以包括但不局限于 : 用于源和目标中的无符 号双四字值的操作, 以及用于源和目标中的有符号双四字值的操作。 LCSZC 指令的其它可选 择实施例可以包括应用于其它大小的有符号或无符号数据元素的操作 ( 例如, 见用于有符 号双字实施例的图 8b 以及用于有符号四字实施例的图 8c)。
     图 8b 示出了根据本发明的一个可选择实施例的对打包数据执行 LCSZC 操作的电 路 801b 的至少一个实施例。操作控制 800 处理用于打包 LCSZC 指令的控制信号。这样的 打包 LCSZC 指令可以是, 例如指示要对 4 个打包 32 位值执行的 LCSZC 操作的 “TESTPS” 指 令。每个打包 32 位值可以表示例如单精度浮点值。对于该实施例, 应当理解的是, 可能仅 仅其中一个操作数 ( 例如, 源 831 或目标 833) 包含打包的单精度浮点值。其它操作数可以 包括例如位掩码。
     图 8a 示出了操作控制 800 在使能 880 上输出信号以控制 LCSZC 电路 801b。 [ 本领 域技术人员将认识到, 图 8b 中所示的 LCSZC 电路 801b 可以通过调用图 8a 中所示的 LCSZC 电路 801 的逻辑元件的子集来实现 ]。
     LCSZC 电路 801b 包括两组 AND 门, 其中每组都包括用于要与目标操作数的相应位 进行比较的源操作数的每个位的一个 AND 门。对于图 8b 中所示的实施例, 要对 4 个 32- 位 (“双字” ) 数据元素中每一个的最高有效位进行比较。因此, 第一组 AND 门包括门 8191 到 8194, 而第二组 AND 门包括门 8201 到 8204。
     图 8b 示出了源操作数 831 中的 4 个 32- 位数据元素中的每一个和目标操作数 833 中的 4 个 32- 位数据元素中的每一个的 MSB 值是第一组 AND 门 819 中的一个门的输入。更 具体而言, 图 8b 示出了源操作数 831 和目标操作数 833 的位 127 都是门 8191 的输入、 源操 作数 831 和目标操作数 833 的位 93 都是门 8192 的输入、 源操作数 831 和目标操作数 833 的位 63 都是门 8193 的输入, 以及源操作数 831 和目标操作数 833 的位 31 都是门 8194 的输 入。
     图 8b 还示出了源操作数 831 中的 4 个 32- 位数据元素中的每一个和目标操作数 833 中的 4 个 32- 位数据元素中的每一个的 MSB 值是第二组 AND 门 820 中的一个门的输入。 应当注意, 第二组 AND 门 (8201 到 8204) 在将目标操作数 833 的每个双字的 MSB 转换为其反码值之后 ( 见转化器 844a-844d), 才接收来自它们的输入。
     更具体地, 图 8b 示出了源操作数 831 的位 127 和目标操作数 833 的位 127 的反码 都是门 8201 的输入、 源操作数 831 的位 93 和目标操作数 833 的位 93 的反码都是门 8202 的 输入、 源操作数 831 的位 63 和目标操作数 833 的位 63 的反码都是门 8203 的输入、 以及源 操作数 831 的位 31 和目标操作数 833 的位 31 的反码都是门 8204 的输入。
     AND 门 8191 到 8194 中每一个的输出都是到 NAND 门 855 的输入。NAND 门 855 的至 少一个作用是确定对源和目标的 4 个双字中每一个的最高有效位进行 AND 的结果是否得到 全 0 值 ( 逻辑低值 ), 并且如果是, 就给零标志 858 传递逻辑高值从而对其进行设置。
     AND 门 8201 到 8204 中每一个的输出都是到 NAND 门 859 的输入。NAND 门 859 的 至少一个作用是确定对源的位和目标的位的反码进行 AND 的结果是否得到全 0 值 ( 逻辑低 值 ), 并且如果是, 就给进位标志 860 传递逻辑高值从而对其进行设置。
     比较 4 个双字中每一个的 MSB 的打包 LCSZC 指令的可选择实施例可以包括但不局 限于 : 用于对一个操作数中的打包有符号双字值和另一个操作数中的位掩码进行的操作、 对在源和目标两者中的无符号双字值进行操作、 以及用于对在源和目标两者中的有符号双 字值进行的操作、 或者用于一个组合的操作。 LCSZC 指令的其它可选择实施例可以包括应用 于其它大小的有符号或无符号数据元素的操作。
     图 8c 示出了根据本发明的另一可选择实施例的对打包数据执行 LCSZC 操作的电 路 801c 的至少一个实施例。操作控制 800 处理用于打包 LCSZC 指令的控制信号。这样的 打包 LCSZC 指令可以是, 例如, 指示要对 2 个打包的双精度 (64- 位 ) 浮点值执行 LCSZC 操 作的 “TESTPD” 指令。操作控制 800 在使能 880 上输出信号以控制 LCSZC 电路 801c。[ 本 领域技术人员将认识到图 8c 中所示的 LCSZC 电路 801c 可以通过调用图 8a 中所示的 LCSZC 电路 801 的逻辑元件的子集来实现 ]。
     与上面结合图 8b 所讨论的电路 801b 一样, LCSZC 电路 801c 包括两组 AND 门, 其 中每组包括用于要与目标操作数的相应位进行比较的源操作数的每个位的一个 AND 门。对 于图 8c 中所示的实施例, 要对 2 个 64- 位 (“四字” ) 数据元素的每一个的最高有效位进行 比较。因此, 第一组 AND 门包括门 8191 和 8193, 而第二组 AND 门包括门 8201 和 8203。
     图 8c 示出了源操作数 831 中的 2 个 64- 位数据元素中每一个的 MSB 值和目标操 作数 833 中的 2 个 64- 位数据元素中每一个的 MSB 值是第一组 AND 门 (8191 和 8193) 中的 一个门的输入。更具体而言, 图 8c 示出了源操作数 831 和目标操作数 833 的位 127 都是门 8191 的输入, 以及源操作数 831 和目标操作数 833 的位 63 都是门 8193 的输入。
     图 8c 还示出了源操作数 831 中的 2 个 64- 位数据元素中每一个的 MSB 值和目标 操作数 833 中的 2 个 64- 位数据元素中每一个的 MSB 值是第二组 AND 门 (8201 和 8203) 中 的一个门的输入。应当注意, 第二组 AND 门 8201 和 8203 仅仅在目标操作数 833 的每个四字 的 MSB 已经转化成其反码值之后 ( 见转化器 844a 和 844c), 才接收来自它们的输入。
     更具体地, 图 8c 示出了源操作数 831 的位 127 和目标操作数 833 的位 127 的反 码都是门 8201 的输入, 并且源操作数 831 的位 63 和目标操作数 833 的位 63 的反码都是门 8203 的输入。
     AND 门 8191 和 8193 中每一个的输出都是 NAND 门 853 的输入。NAND 门 853 的至 少一个作用是确定对源和目标的 2 个四字中每一个的最高有效位进行 AND 的结果是否都是0( 逻辑低值 ), 并且如果是, 就给零标志 858 传递逻辑高值从而对其进行设置。
     AND 门 8201 和 8203 中每一个的输出都是 NAND 门 857 的输入。NAND 门 857 的至 少一个作用是确定对源和目标的 2 个四字中每一个的最高有效位进行 AND 的结果是否都是 0( 逻辑低值 ), 并且如果是, 就给进位标志 860 传递逻辑高值从而对其进行设置。
     比较 2 个四字中每一个的 MSB 的打包 LCSZC 指令的可选择实施例可以包括但不局 限于 : 用于对源和目标两者中的无符号四字值的操作, 以及用于对源和目标两者中的有符 号四字值的操作, 或用于一个组合的操作。 LCSZC 指令的其它可选择实施例可以包括应用于 其它大小的有符号或无符号数据元素的操作。
     如上所解释的, 解码器 165 可以识别并解码处理器 109 所接收的控制信号, 并且该 控制信号可以是用于 LCSZC 指令的操作码。因此, 解码器 165 解码 LCSZC 指令的操作码。
     参考图 9, 其示出了可以用于对 LCSZC 指令的控制信号 ( 操作码 ) 进行编码的操作 码的各种实施例。图 9 示出了根据本发明的一个实施例的指令 900 的格式。指令格式 900 包括各种字段 ; 这些字段可以包括前缀字段 910、 操作码字段 920 以及操作数指定字段 ( 例 如, mod R/M、 SIB(scale-index-base)、 位移、 立即数等 )。操作数指定字段是可选择的, 并 且包括 modR/M 字段 930、 SIB 字段 940、 位移字段 950 和立即数字段 960。
     本领域技术人员将认识到, 图 9 所提出的格式 900 是说明性的, 指令代码中的其它 数据组织形式也可以用于所公开的实施例。例如, 字段 910、 920、 930、 940、 950、 960 不需要 以所示的顺序组织, 而可以重新被组织到彼此相关的其它位置, 并且不需要是邻近的。同 样, 这里所讨论的字段长度不应当被看成是限制性的。作为多个字节的特定构件而讨论的 字段, 在可选择的实施例中可以被实现为更大或更小的字段。同样, 术语 “字节” 虽然在这 里作为 8- 位的分组使用, 但是在其它实施例中, 其可以实现为包括 4 位、 16 位和 32 位在内 的其它任何大小的分组。
     如这里所使用的, 用于特定指令实例 ( 比如 LCSZC 指令 ) 的操作码可以包括指令 格式 200 的字段中的特定值, 以便指示所希望的操作。这样的指令有时被称为 “真实指令” 。 有时, 在这里将真实指令的位值共同称为 “指令代码” 。
     对于每个指令代码, 相应的解码后的指令代码唯一地表示由执行单元 ( 例如, 比 如, 图 1a 的 130) 响应于该指令代码而执行的操作。所述解码后的指令代码可以包括一个 或多个微操作。
     操作码字段 920 的内容指定该操作。对于至少一个实施例, 用于在这里讨论 的 LCSZC 指令的实施例的操作码字段 920 的长度是 3 个字。该操作码字段 920 可以包 括一个、 两个或三个字节的信息。对于至少一个实施例, 将在操作码字段 920 的 2- 字 节逃逸 (escape) 字段 118c 中的 3- 字节逃逸操作码值与操作码字段 920 的第三个字 节 925 的 内 容 相 结 合, 以 指 定 LCSZC 操 作。 第 三 个 字 节 925 在 这 里 被 称 为 具 体 指 令 (instruction-specific) 操作码。
     对于用于 LCSZC 指令的指令格式的第二实施例 928, 图 9 示出了将在操作码字段 920 的 2- 字节字段 118c 中的 3- 字节逃逸操作码值与前缀字段 910 的内容和操作码字段 920 的具体指令操作码字段 925 的内容相结合, 以指定 LCSZC 操作。
     对于至少一个实施例, 将前缀值 0x66 放置于前缀字段 910 中, 并且将其用作指令 操作码的一部分, 以定义所希望的操作。也就是说, 在前缀 910 字段中的值被解码成操作码的一部分, 而不是被解释成仅仅限制随后的操作码。例如, 对于至少一个实施例, 前缀值 0x66 被用来指示 LCSZC 指令的目标操作数和源操作数是驻留在 128- 位 SSE2XMM 寄 存器中。可以类似地使用其它前缀。然而, 对于 LCSZC 指令的至少一些实施例, 在某些操作 条件下, 前缀可以替代地用于增强操作码或限制操作码的传统任务中。
     指令格式的第一实施例 926 和第二实施例 928 都包括 3- 字节逃逸操作码字段 118c 和具体指令操作码字段 925。 对于至少一个实施例, 3- 字节逃逸操作码字段 118c 的长 度为 2 个字节。指令格式 926 使用称为 3- 字节逃逸操作码的 4 个特定逃逸操作码中的一 个。3- 字节逃逸操作码的长度为 2 个字节, 并且它们向解码器硬件指示该指令使用操作码 字段 920 中的第三字节来定义该指令。3- 字节逃逸操作码字段 118c 可以位于指令操作码 内的任何地方, 并且不需要必须为指令内的最高次序或最低次序字段。
     对于至少一个实施例, 定义了至少 4 个 3- 字节逃逸操作码值 : 0x0F3y, 其中 y 是 0x8、 0x9、 0xA 或 0xB。虽然这里所公开的 LCSZC 指令操作码的某些实施例与所述 3- 字节逃 逸操作码值一样包括值 “0x0F38” , 但这样的公开内容不应当被看成是限制性的。其它的实 施例可以使用其它的逃逸操作码值。
     下面的表 3 提出使用前缀和 3- 字节逃逸操作码的 LCSZC 指令代码的示例。
     表3
     对于至少一个实施例, 源或目标操作数中的值可以被用作掩码 (mask)。可以至少 部分地通过所希望得到的行为, 来驱使程序员选择是否使用源或目标操作数作为掩码值。 例如, 使用第二操作数 ( 源 ) 作为掩码值, 该结果行为可以陈述为 : “如果在该掩码下的每个 位都为 “0” , 则设置 ZF ; 如果在该掩码下的每个位都为 “1” , 则设置 CF。 ” 另一方面, 当使用 第一个参数 ( 目标 ) 作为掩码值时, 该结果行为可以陈述为 : “如果在该掩码下的每个位都 为 “0” , 则设置 ZF ; 如果在该掩码下的每个位都为 “0” , 则设置 CF。 ”
     为了执行上面结合图 7c、 7d、 8b 和 8c 所讨论的打包 LCSZC 指令的至少一些实施例
     的等同物, 需要附加指令, 其为该操作增加了机器周期延迟。例如, 下面的表 4 提出的伪代 码示出了使用 PTEST 指令的多个指令相对于没有包括 PTEST 指令的指令集的节省。
     表4
     表 4 所提出的伪代码有助于阐明所描述的 LCSZC 指令的实施例能够用于改进软件 代码的性能。因此, LCSZC 指令能够用于通用处理器, 并且与所描述的现有技术指令相比, 提高了更多算法的性能。
     可选择实施例
     虽然所描述的实施例使用用于 LCSZC 指令的打包实施例的 32- 位数据元素和 64- 位数据元素的 MSB 的比较, 但可选择实施例可以使用不同大小的输入、 不同大小的数据 元素、 和 / 或对不同位的比较 ( 例如, 数据元素的 LSB)。此外, 虽然在一些所描述的实施例 中, Source 1 和 Dest 每一个都包含 128- 位数据, 但可选择实施例可以对具有更多或更少 数据的打包数据进行操作。例如, 一个可选择实施例可以对具有 64- 位数据的打包数据进 行操作。而且, LCSZC 指令所比较的位不需要必须表示每个打包数据元素的相同的各个位 的位置。
     虽然已经依据一些实施例对本发明进行了描述, 但本领域技术人员将认识到, 本 发明并不限制于所描述的实施例。 本发明的方法和装置可以在在附带的权利要求的精神和 范围内进行实践上的修改和变化。因此, 说明书被看成是说明性的, 而不是对本发明的限 制。
     上面的说明书的目的是阐明本发明的优选实施例。从上面的讨论中也应当明白, 特别是在这样发展快速并且进一步的进步不易预见的技术领域中, 可以由本领域技术人员 在附加权利要求的范围内对本发明在安排和细节上进行修改, 而不脱离的本发明的原理。
    

用于执行逻辑比较操作的方法和装置.pdf_第1页
第1页 / 共45页
用于执行逻辑比较操作的方法和装置.pdf_第2页
第2页 / 共45页
用于执行逻辑比较操作的方法和装置.pdf_第3页
第3页 / 共45页
点击查看更多>>
资源描述

《用于执行逻辑比较操作的方法和装置.pdf》由会员分享,可在线阅读,更多相关《用于执行逻辑比较操作的方法和装置.pdf(45页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101937329A43申请公布日20110105CN101937329ACN101937329A21申请号201010283414122申请日2007092111/525,70620060921US200710144187220070921G06F7/02200601G06F9/30200601G06F9/305200601G06F9/3220060171申请人英特尔公司地址美国加利福尼亚72发明人R卡普尔R祖海尔M巴克斯顿Z斯佩贝尔K戈特利布74专利代理机构永新专利商标代理有限公司72002代理人刘瑜王英54发明名称用于执行逻辑比较操作的方法和装置57摘要一种用于包含在对。

2、打包或非打包数据执行逻辑比较和分支支持操作的处理器指令中的方法和装置。在一个实施例中,处理器耦合到存储器。存储器中已经存储了第一数据和第二数据。该处理器对该第一和第二数据执行逻辑比较。该逻辑比较可以对该第一和第二数据的每个位执行,或者可以只对某些位执行。对于至少一个实施例,至少第一数据包括打包数据元素,并且该逻辑比较对该打包数据元素的最高有效位执行。该逻辑比较可以包括对第一和第二数据的相同的各个位的比较,并且还包括对第一数据的位与第二数据的相应位的反码的逻辑比较。基于这些比较,可以进行分支支持动作。这样的分支支持动作可以包括设置一个或多个标志,其进而可以被所述分支单元使用。可选择地,分支支持动。

3、作可以包括分支到所指示的目标代码位置。30优先权数据62分案原申请数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书4页说明书23页附图17页CN101937330A1/4页21一种执行逻辑比较操作的装置,包括解码器,用于接收待解码的单个指令,所述单个指令用于指示第一操作数、第二操作数和所希望的操作,所述第一操作数和所述第二操作数中的每一个都包含多个位;电路,用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位进行的第一逐位逻辑AND操作,并且响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的第二。

4、逐位逻辑AND操作;以及用于存储第一状态标志值的第一存储区域和用于存储第二状态标志值的第二存储区域,其中,所述第一状态标志值被所述电路根据所述第一逐位逻辑AND操作的结果进行修改,并且其中,所述第二状态标志值被所述电路根据所述第二逐位逻辑AND操作的结果进行修改。2根据权利要求1的装置,其中所述第一操作数包括第一多个数据元素;所述第二操作数包括第二多个数据元素;并且对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑AND操作,并且所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。3根据权利要求2的装置,其中,所述电路包括第一组AND门,用于所述第一操作数的每一。

5、个数据元素的所述位和所述第二操作数的所述对应位;第二组AND门,用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的所述对应位的所述反码值;第一NAND门,用于确定所述第一逐位逻辑AND操作的结果;以及第二NAND门,用于确定关于所述反码值的所述第二逐位逻辑AND操作的结果。4根据权利要求2的装置,其中所述数据元素是字节、字、双字和四字中的任何一个。5根据权利要求2的装置,其中所述一个位是最高有效位和最低有效位中的任何一个。6根据权利要求1的装置,还包括转化器,用于获得所述第二操作数的所述对应位的所述反码值。7根据权利要求1的装置,其中所述第一状态标志值为零标志值,所述第二状态标志值为。

6、进位标志值。8根据权利要求1的装置,其中所述单个指令包括逻辑比较、设置零标志和进位标志LCSZC指令。9根据权利要求1的装置,其中所述第一操作数和所述第二操作数中的每一个都包括128个位。10一种执行逻辑比较操作的装置,包括解码器,用于接收待解码的单个指令,所述单个指令用于指示第一操作数、第二操作数和所希望的操作,所述第一操作数和所述第二操作数中的每一个都包含多个位;以及执行单元,用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述权利要求书CN101937329ACN101937330A2/4页3第二操作数的对应位进行的第一逐位逻辑AND操作,第一状态标志值响应于所述执行单元执行。

7、所述第一逐位逻辑AND操作而被进行修改,并且所述执行单元用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的第二逐位逻辑AND操作,第二状态标志值响应于所述执行单元执行所述第一逐位逻辑AND操作而被进行修改。11根据权利要求10的装置,其中所述第一操作数包括第一多个数据元素;所述第二操作数包括第二多个数据元素;并且对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑AND操作,并且所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。12根据权利要求11的装置,其中,所述执行单元包括第一组AND门,用于所述第一操作数的每一。

8、个数据元素的所述位和所述第二操作数的所述对应位;第二组AND门,用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的所述对应位的所述反码值;第一NAND门,用于确定所述第一逐位逻辑AND操作的结果;以及第二NAND门,用于确定关于所述反码值的所述第二逐位逻辑AND操作的结果。13根据权利要求11的装置,其中所述数据元素是字节、字、双字和四字中的任何一个。14根据权利要求11的装置,其中所述一个位是最高有效位和最低有效位中的任何一个。15根据权利要求10的装置,还包括转化器,用于获得所述第二操作数的所述对应位的所述反码值。16根据权利要求10的装置,还包括第一存储区域,用于存储所述第一状。

9、态标志值;以及第二存储区域,用于存储所述第二状态标志值。17根据权利要求10的装置,其中所述第一状态标志值为零标志值,所述第二状态标志值为进位标志值。18根据权利要求10的装置,其中所述单个指令包括逻辑比较、设置零标志和进位标志LCSZC指令。19根据权利要求10的装置,其中所述第一操作数和所述第二操作数中的每一个都包括128个位。20根据权利要求10的装置,还包括图形处理器。21根据权利要求20的装置,其中所述执行单元和所述图形处理器位于同一芯片封装内。22一种执行逻辑比较操作的装置,包括高速缓冲存储器,用于对信息进行高速缓存;解码器,用于接收待解码的单个指令,所述单个指令用于指示第一操作数。

10、、第二操作数权利要求书CN101937329ACN101937330A3/4页4和所希望的操作,所述第一操作数和所述第二操作数中的每一个都包含多个位;执行单元,用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位进行的第一逐位逻辑AND操作,并且响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的第二逐位逻辑AND操作;以及寄存器文件,其包含多个寄存器,所述多个寄存器包括用于指示所述装置的状态的状态寄存器,所述状态寄存器包含用于存储第一状态标志值的第一存储区域和用于存储第二状态标志值的第二存储区域,其中,所述第一状态标志值被。

11、所述执行单元根据所述第一逐位逻辑AND操作的结果进行修改,并且其中,所述第二状态标志值被所述执行单元根据所述第二逐位逻辑AND操作的结果进行修改。23根据权利要求22的装置,其中所述第一操作数包括第一多个数据元素;所述第二操作数包括第二多个数据元素;并且对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑AND操作,并且所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。24根据权利要求23的装置,其中,所述执行单元包括第一组AND门,用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的所述对应位;第二组AND门,用于所述第一操作数的每一个数据元素的所述位。

12、和所述第二操作数的所述对应位的所述反码值;第一NAND门,用于确定所述第一逐位逻辑AND操作的结果;以及第二NAND门,用于确定关于所述反码值的所述第二逐位逻辑AND操作的结果。25根据权利要求23的装置,其中所述数据元素是字节、字、双字和四字中的任何一个。26根据权利要求23的装置,其中所述一个位是最高有效位和最低有效位中的任何一个。27根据权利要求22的装置,还包括转化器,用于获得所述第二操作数的所述对应位的所述反码值。28根据权利要求22的装置,其中所述第一状态标志值为零标志值,所述第二状态标志值为进位标志值。29根据权利要求22的装置,其中所述单个指令包括逻辑比较、设置零标志和进位标志。

13、LCSZC指令。30根据权利要求22的装置,其中所述第一操作数和所述第二操作数中的每一个都包括128个位。31根据权利要求22的装置,其中所述多个寄存器还包括用于存储待执行的下一个指令的地址的指令指针寄存器。32一种执行逻辑比较和分支操作的装置,包括解码器,用于接收待解码的单个指令,所述单个指令用于指示第一操作数、第二操作数和所希望的操作,所述第一操作数和所述第二操作数中的每一个都包含多个位;以及权利要求书CN101937329ACN101937330A4/4页5一个或多个电路,用于响应于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位进行的第一逐位逻辑AND操作,响应。

14、于所述单个指令来执行对所述第一操作数的一个或多个位与所述第二操作数的对应位的反码值进行的第二逐位逻辑AND操作,并且响应于所述单个指令、基于所述第一逐位逻辑AND操作的结果和所述第二逐位逻辑AND操作的结果中的至少一个来执行分支操作。33根据权利要求32的装置,其中所述第一操作数包括第一多个数据元素;所述第二操作数包括第二多个数据元素;并且对所述第一操作数的每一个数据元素的一个位执行所述第一逐位逻辑AND操作,并且所述第二操作数的所述对应位是所述第二操作数的每一个数据元素的相同的各个位。34根据权利要求33的装置,其中,所述一个或多个电路包括第一组AND门,用于所述第一操作数的每一个数据元素的。

15、所述位和所述第二操作数的所述对应位;第二组AND门,用于所述第一操作数的每一个数据元素的所述位和所述第二操作数的所述对应位的所述反码值;第一NAND门,用于确定所述第一逐位逻辑AND操作的结果;以及第二NAND门,用于确定关于所述反码值的所述第二逐位逻辑AND操作的结果。35根据权利要求33的装置,其中所述数据元素是字节、字、双字和四字中的任何一个。36根据权利要求33的装置,其中所述一个位是最高有效位和最低有效位中的任何一个。37根据权利要求32的装置,还包括转化器,用于获得所述第二操作数的所述对应位的所述反码值。38根据权利要求32的装置,其中所述第一逐位逻辑AND操作的结果指示零标志,所。

16、述第二逐位逻辑AND操作的结果指示进位标志。39根据权利要求32的装置,其中所述单个指令包括融合测试和分支指令。40根据权利要求32的装置,其中所述第一操作数和所述第二操作数中的每一个都包括128个位。权利要求书CN101937329ACN101937330A1/23页6用于执行逻辑比较操作的方法和装置0001本申请是2007年9月21日提交的、申请号为2007101441872的同名专利申请的分案申请。技术领域0002本公开内容总体上涉及处理器领域。特别地,本公开内容涉及使用单个控制信号对多位数据上执行多个逻辑比较操作。背景技术0003在典型的计算机系统中,处理器被实现为使用产生一个结果的指。

17、令对由许多位例如,64个表示的值进行操作。例如,执行加法指令将会把第一个64位的值和第二个64位的值加在一起,并将结果存储为第三个64位的值。多媒体应用程序例如,以计算机支持协作CSC具有混合的媒体数据处理的电信会议集合、2D/3D图形、图像处理、视频压缩/解压缩、识别算法和音频处理为目标的应用程序要求处理大量数据。所述数据可以用单个大值例如,64位或128位表示,或者作为代替,可以用少量的位例如,8或16或32位表示。例如,图形数据可以由8或16位表示,声音数据可以由8或16位表示,整数数据可以由8、16或32位表示,而浮点数据可以由32或64位表示。0004为了提高多媒体应用程序以及其它具。

18、有相同特征的应用程序的效率,处理器可以提供打包数据PACKEDDATA格式。典型地,打包数据格式是这样的格式其中,将通常用来表示单个值的多个位划分成多个固定大小的数据元素,每个数据元素表示一个单独的值。例如,128位寄存器可以分成四个32位元素,每个元素表示单独的32位值。用这种方式,这些处理器可以更有效地处理多媒体应用程序。附图说明0005本发明借助于示例进行说明,但并不局限于附图中的示图。0006图1A1C说明根据本发明可选择实施例的示例计算机系统。0007图2A2B说明根据本发明可选择实施例的处理器的寄存器堆。0008图3说明由用于处理数据的处理器所执行的处理的至少一个实施例的流程图。0。

19、009图4说明根据本发明可选择实施例的打包数据类型。0010图5说明根据本发明至少一个实施例的寄存器内打包字节和寄存器内打包字的数据表示。0011图6说明根据本发明至少一个实施例的寄存器内打包双字和寄存器内打包四字的数据表示。0012图7A7D是说明用于执行逻辑比较LOGICALCOMPARE、设置零和进位标志SETZEROANDCARRYFLAG操作的处理的各种实施例的流程图。0013图8A8C说明用于执行逻辑比较、设置零和进位标志操作的电路的可选择实施例。说明书CN101937329ACN101937330A2/23页70014图9是说明处理器指令的操作码格式的各种实施例的框图。0015细。

20、节描述0016这里所公开的是包括在响应于单个控制信号而对多位数据执行逻辑比较操作的处理器指令中的方法、系统和电路的多个实施例。该逻辑比较操作中所涉及的数据可以是打包或非打包数据。对于至少一个实施例而言,处理器耦合到存储器。该存储器中已经存储了第一数据和第二数据。处理器响应于所接收的指令,对在第一数据和第二数据中的数据元素执行逻辑比较操作。逻辑比较操作可以包括第一和第二数据的数据元素的位AND,并且还可以包括第一数据的数据元素的反码和第二数据的数据元素的位AND。根据该逻辑比较操作的结果,修改处理器的至少两个状态标志。这两个状态标志可以包括零标志ZEROFLAG和进位标志CARRYFLAG。这些。

21、标志可以在体系上对应用程序可见,并且可以是更大标志值的一部分,比如体系上可见的扩展标志EFLAGS寄存器。0017本发明的这些和其它实施例可以根据下面的教导实现,并且显而易见的是,可以用下面的教导进行各种修改和改变而不背离本发明宽泛的精神和范围。相应地,说明书和附图被看成是说明性的而不具有限制性意义,并且本发明仅根据权利要求来确定。0018定义0019为了提供用于理解本发明实施例的描述的基础,提供以下定义。0020位X到位Y0021定义二进制数的子字段。例如,字节001110102以二进制示出的位6到位0代表子字段1110102。在二进制数后的2表示二进制。因此,10002等于810,而F16。

22、等于1510。0022RX是寄存器。寄存器是任何能够存储和提供数据的设备。寄存器的进一步的功能在下面描述。寄存器不是必需与处理器包括在相同的芯片中或相同的封装中。0023SRC和DEST0024用于标识存储区域例如,存储器地址、寄存器等源1I和结果1I以及DESTIN0025表示数据。0026总概0027本申请描述了包括在用于打包或非打包数据的逻辑比较操作的处理器指令中的方法、装置和系统的实施例。更具体而言,所述指令可以用于对数据进行逻辑比较,并且随后根据该比较设置零标志和进位标志。对于至少一个实施例,使用下面表1A和表1B中所示的单个指令执行两个逻辑比较操作。所述比较操作包括目标操作数和源操。

23、作数的逐位逻辑AND以及目标操作数的反码与源操作数的逐位逻辑AND。表1A示出所公开的逻辑比较操作的一个实施例的简化表示,而表1B示出所公开的逻辑比较指令的实施例的在位级别上的示例,给出了一些样本值。对于在表1A和1B中所示出的实施例,虽然源操作数和目标操作数中的数据可以是打包数据,但是其可以是任何数据表示,而并非必须是打包数据。在源和/或目标操作数的数据是128位的单个实体且由此并不将其认为是“打包”数据的情况下,在这里将其称为“非打包UNPACKED”数据,其简单地表示该数据不需要被再分割成组分COMPONENT表示,并且可以被认为是单个数据值。虽然为了简化说明,表1A中的数据被表示为32。

24、位的值,但本领域技术人员将认识到,在表1A和1B中所说明的概念可以应用于任何长度的数据,包括更小的数据长度例如,4位、8位和16位的长度以及更大的说明书CN101937329ACN101937330A3/23页8数据长度例如,64位和128位的长度。0028表1A0029逻辑比较DEST,SOURCE00300031表1B0032逻辑比较DEST,SOURCE示例值00330034对于至少一个实施例,源和目标操作数的数据值可以表示打包数据。用于该实施例的源操作数和目标操作数的每个打包组分可以表示任何类型的数据。0035表2A和2B说明组分A1到A4以及B1到B4,其每个都表示32位单精度浮点数。

25、的二进制表示。然而,这样的说明不应当被看成是限制。本领域技术人员将认识到每个组分可以表示任何数据,包括任何整数或浮点数据格式,以及串格式或任何其它类型的数据格式。0036表2A0037逻辑比较DEST,SOURCE说明书CN101937329ACN101937330A4/23页900380039表2B0040逻辑比较DEST,SOURCE示例值004100420043对于打包实施例,例如表2A和2B所说明的,可以这样来利用可选择实施例使得在比较操作期间,仅仅对每个打包元素的特定的位进行操作。例如,在下面将结合图7C、7D、8B和8C的讨论对至少某些这样的实施例进行讨论。0044本领域技术人员将。

26、认识到,只是为了易于说明,在表1A和2A中示出了中间值“中间结果1”和“中间结果2”,在表1B和2B中示出了二进制值的第三和第四行。虽然它们在至少一个实施例中可以这样进行存储,但是它们在表1A到2B中的表示不应当被看成意味着这些中间值必须存储在处理器中。可选择地,对于至少一个其它实施例,通过电路来确定这些中间值,而不将上述值存储在存储区域中。说明书CN101937329ACN101937330A5/23页100045在上面,表1A、1B、2A和2B描述了“逻辑比较,设置零标志和进位标志”“LCSZC”指令的实施例,该指令对源操作数和目标操作数的128个位中的每一个位执行逐位的AND操作,并且还。

27、对源操作数的128个位中的每一个位与目标操作数的反码值的128个位中的每一位执行逐位的AND操作,并且根据该AND操作的结果来设置零标志和进位标志。0046零标志和进位标志的设置支持基于逻辑比较的分支行为。对于至少一个实施例,该LCSZC指令后面可以跟着单独的分支指令,该分支指令基于所述标志中的一个或两个的值,指示希望由处理器执行的分支操作例如,见下面表4的伪代码。本领域技术人员将认识到,状态标志的设置不是分支操作可以用以利用比较结果的唯一硬件机制,也可以实现其它机制,以便基于比较结果来支持分支。因此,虽然下面描述的具体实施例指示作为逻辑比较的结果,可以设置零标志和进位标志,但这种支持分支的标。

28、志设置并不要求用于所有实施例。相应地,在这里使用的术语“LCSZC”不应当被看成限制性的,原因在于零标志和进位标志的设置并非对于所有实施例都是必需的。0047例如,对于一个可选择的实施例,分支行为可以作为在一个指令中融合了比较和分支的LCSZC指令例如融合“测试和分支TESTANDBRANCH”指令的变量的直接结果来执行。对于融合“测试和分支”指令的至少一个实施例,作为所执行的逻辑比较的结果,不设置任何状态标志。0048可选择的实施例可以改变在数据元素和中间结果中位的数量。而且,可选择的实施例可以只比较源值和目标值各自的某些位。此外,可选择的实施例可以改变所使用的数据元素的数量以及所产生的中间。

29、结果的数量。例如,可选择的实施例可以包括但不局限于用于无符号源和有符号目标的LCSZC指令;用于有符号源和无符号目标的LCSZC指令;用于无符号源和无符号目标的LCSZC指令;以及用于有符号源和有符号目标的LCSZC指令。在每个示例中,所述源和目每一个都可以都包含8位、16位、32位或64位组分的打包数据。可选择地,所述源和目标数据不是打包的,而是一个128位的数据元素。源和目标的打包性质不需要是对称的,并且如果源和目标都是打包的,源和目标的数据大小也无需必须相同。0049计算机系统0050图1A示出了根据本发明的一个实施例的示例计算机系统100。计算机系统100包括用于信息通信的互连部件10。

30、1。该互连部件101可以包括多分支MULTIDROP总线、一个或多个点对点互连部件或两者的任意组合,以及任何其它通信硬件和/或软件。0051图1A示出了用于处理信息的、与互连部件101耦合的处理器109。处理器109表示任何架构类型的中央处理单元,包括CISC或RISC类型的架构。0052计算机系统100还包括随机访问存储器RAM或其它动态存储设备称为主存储器104,其耦合到互连部件101,用于存储信息和由处理器109执行的指令。主存储器104还可以用于在处理器109执行指令期间存储临时变量或其它中间信息。0053计算机系统100还包括只读存储器ROM106和/或其它静态存储设备,其耦合到互连。

31、部件101,用于为处理器109存储静态信息和指令。数据存储设备107耦合到互连部件101,用于存储信息和指令。0054图1A还示出处理器109包括执行单元130、寄存器堆REGISTERFILE150、高速缓存160、解码器165和内部互连部件170。当然,处理器109包括不是理解本发明所必需说明书CN101937329ACN101937330A6/23页11的其他电路。0055解码器165用于对处理器109接收的指令进行解码,而执行单元130用于执行处理器109接收的指令。如这里所述,除了识别典型地由通用处理器执行的指令之外,解码器165和执行单元130还识别用于执行逻辑比较和设置零和进位标。

32、志LCSZC操作的指令。解码器165和执行单元130识别用于对打包数据和非打包数据执行LCSZC操作的指令。0056执行单元130通过内部互连部件170耦合到寄存器堆150。而且,内部互连部件170无需必须是多分支总线,在可选择的实施例中可以是点对点互连部件或其它类型的通信路径。0057一个或多个寄存器堆150表示处理器109中用于存储信息包括数据的存储区域。可以理解的是,本发明的一个方面是用于对打包或非打包数据执行LCSZC操作的、所描述指令的实施例。根据本发明的这个方面,用于存储数据的存储区域不是关键的。然而,寄存器堆150的实施例在后面参考图2A2B进行描述。0058执行单元130耦合到。

33、高速缓存160和解码器165。高速缓存160用于对例如来自主存储器104的数据和/或控制信号进行高速缓存。解码器165用于将处理器109接收的指令解码成控制信号和/或微代码入口点。可以将这些控制信号和/或微代码入口点从解码器165传送给执行单元130。0059执行单元130响应于这些控制信号和/或微代码入口点,执行适当的操作。例如,如果接收到LCSZC指令,则解码器165使执行单元130执行所要求的比较逻辑。对于至少一些实施例比如那些没有实现融合“测试和分支”操作的实施例,执行单元130可以相应地设置零标志和进位标志例如,见逻辑比较电路145。对于这样的实施例,处理器109的分支单元未示出可以。

34、在随后的指示目标代码位置的分支指令的执行期间使用这些标志。0060可选择地,执行单元130本身可以包括基于逻辑比较来影响分支的分支电路未示出。对于这样的实施例,由LCSZC指令所提供的“分支支持”是跳转到指定目标代码位置的控制跳转,而不是控制标志的设置。对于至少一个实施例,执行跳转或“分支”的分支电路可以是逻辑比较电路145的一部分。0061可以使用任意数量的不同机制例如,查寻表、硬件实现、PLA等来实现解码器165。因此,虽然解码器165和执行单元130对各种指令的执行在这里可以由一系列IF/THEN语句表示,但可以理解的是,指令的执行并不要求这些IF/THEN语句的串行处理。相反地,在逻辑。

35、上执行该IF/THEN处理的任何机制均认为是在本发明的范围内。0062图1A还示出了数据存储设备107例如,磁盘、光盘、和/或其它机器可读介质,其可以耦合到计算机系统100。另外,数据存储设备107示出为包括由处理器109执行的代码195。代码195可以包括LCSZC指令142的一个或多个实施例,并且可以将其编写为使处理器109用一个或多个LCSZC指令142执行用于任意数量的目的例如,运动视频压缩/解压缩、图像滤波、音频信号压缩、滤波或合成、调制/解调等的位测试。0063计算机系统100还可以通过互连部件101耦合到用于为计算机用户显示信息的显示设备121。显示设备121可以包括帧缓冲器、专。

36、用图形渲染设备、液晶显示器LCD和/或平板显示器。说明书CN101937329ACN101937330A7/23页120064可以将包括字母数字和其它键的输入设备122耦合到互连部件101,用于传递信息和命令选择给处理器109。另一种类型的用户输入设备是光标控制器123,比如鼠标、轨迹球、笔、触摸屏或光标方向键,用于传递方向信息和命令选择给处理器109,并用于控制显示设备121上的光标移动。这些输入设备典型地在两个轴第一轴例如,X和第二轴例如,Y上具有两个自由度,这允许该设备在平面上指定位置。然而,本发明不应当局限于只具有两个自由度的输入设备。0065可以耦合到互连部件101的另一个设备是可以。

37、用来在介质比如纸、胶卷或类似的介质类型上打印指令、数据或其它信息的硬拷贝设备124。此外,计算机系统100可以耦合到用于声音记录和/或重放的设备125,比如用来记录信息的、耦合到麦克风的音频数字化仪。此外,设备125可以包括用来播放数字化声音的、耦合到数模D/A转换器的扬声器。0066计算机系统100可以是计算机网络例如,LAN中的终端。从而计算机系统100可以是计算机网络的计算机子系统。计算机系统100可选择性地包括视频数字化设备126和/或通信设备190例如,提供与外部设备或网络之间的通信的串行通信芯片、无线接口、以太网芯片或调制解调器。视频数字化设备126可以用于拍摄视频图像,视频图像可。

38、以被传送到计算机网络上的其它设备。0067对于至少一个实施例,处理器109支持与现存的由加利福利亚SANTACLARA的INTEL公司制造的处理器比如,例如,处理器、PRO处理器、II处理器、III处理器、4处理器、处理器、2处理器或CORETMDUO处理器使用的指令集相兼容的指令集。由此,处理器109能够支持除了本发明的操作之外的现存的处理器操作。处理器109还可以适于以一种或多种处理技术制造,并且通过足够详细地在机器可读介质上对其进行表示,可以适于方便所述制造。虽然下面描述的本发明与基于X86的指令集相结合,但可选择的实施例可以将本发明与其它指令集相结合。例如,本发明可以与使用与基于X86。

39、的指令集不同的指令集的64位处理器相结合。0068图1B示出了用于实现本发明原理的数据处理系统102的可选择实施例。数据处理系统102的一个实施例是采用INTELXSCALETM技术的应用处理器。本领域技术人员易于理解的是,这里所描述的实施例可以与可选择的处理系统一起使用,而不背离本发明的范围。0069计算机系统102包括能够执行LCSZC操作的处理内核110。对于一个实施例,处理内核110表示任何架构类型的处理单元,包括但不局限于CISC、RISC或VLIW类型的架构。处理内核110也可以适于采用一种或多种处理技术制造,并且通过足够详细地在机器可读介质上对其进行表示,可以适于方便所述制造。0。

40、070处理内核110包括执行单元130、一组寄存器堆150和解码器165。处理内核110还包括对于理解本发明所不需要的其他电路未示出。0071执行单元130用于执行由处理内核110接收的指令。除了识别典型的处理器指令外,执行单元130还识别用于对打包和非打包数据格式执行LCSZC操作的指令。由解码器165和执行单元130所识别的指令集可以包括一个或多个用于LCSZC操作的指令,还可以包括其它打包指令。说明书CN101937329ACN101937330A8/23页130072执行单元130通过内部总线再次论之,其可以是包括多分支总线、点对点互连部件等的任何类型的通信路径耦合到寄存器堆150。寄。

41、存器堆150表示处理内核110的用于存储信息包括数据的存储区域。如前所述,可以理解的是,用于存储数据的存储区域不是关键的。执行单元130耦合到解码器165。解码器165用于将处理内核110接收的指令解码成控制信号和/或微代码入口点。对这些控制信号和/或微代码入口点进行响应。这些控制信号和/或微代码入口点可以被传送到执行单元130。执行单元130可以响应于所接收的控制信号和/或微代码入口点,来执行适当操作。对于至少一个实施例,例如,执行单元130可以执行这里描述的逻辑比较,并且还可以设置这里讨论的状态标志或到指定代码位置的分支,或两者都设置。0073处理内核110与总线214耦合,以便与其它各种。

42、系统设备进行通信,这些系统设备包括但不局限于例如,同步动态随机访问存储器SDRAM控制器271、静态随机访问存储器SRAM控制器272、猝发式闪速存储器接口BURSTFLASHMEMORYINTERFACE273、个人计算机存储卡国际协会PCMCIA/小型闪存COMPACTFLASH,CF卡控制器274、液晶显示器LCD控制器275、直接存储器访问DMA控制器276和可选择总线主接口277。0074对于至少一个实施例,数据处理系统102还可以包括用于通过I/O总线295与各种I/O设备通信的I/O桥290。这样的I/O设备可以包括但不局限于例如,通用异步接收器/发送器UART291、通用串行总。

43、线USB292、蓝牙无线UART293以及I/O扩展接口294。如同上面讨论的其它总线,I/O总线295可以是包括多分支总线、点对点互连部件等的任何类型的通信路径。0075数据处理系统102的至少一个实施例为移动电话提供网络和/或无线通信以及能够对打包和非打包数据执行LCSZC操作的处理内核110。处理内核110可以用以下进行编程包括离散变换、滤波或卷积在内的各种音频、视频、图像以及通信算法;诸如颜色空间变换、视频编码运动估计或视频解码运动补偿之类的压缩/解压缩技术;以及诸如脉冲编码调制PCM之类的调制/解调MODEM功能进行编程。0076图1C示出了能够对打包和非打包数据执行LCSZC操作的。

44、数据处理系统103的可选择实施例。根据一个可选择实施例,数据处理系统103可以包括芯片封装310,其包含主处理器224以及一个或多个协处理器226。附加的协处理器226的可选择性在图1C中用虚线表示。例如,一个或多个协处理器226可以是能够执行SIMD指令的图形协处理器。0077图1C示出数据处理系统103还可以包括高速缓冲存储器278和输入/输出系统265,两者都耦合到芯片封装310。输入/输出系统295可以选择性地耦合到无线接口296。0078协处理器226能够执行通用计算操作,并且还能够执行SIMD操作。对于至少一个实施例,协处理器226能够对打包和非打包数据执行LCSZC操作。0079。

45、对于至少一个实施例,协处理器226包括执行单元130和一个或多个寄存器堆209。主处理器224的至少一个实施例包括用于对由执行单元130所执行的指令集包括LCSZC指令中的指令进行识别和解码的解码器165。对于可选择实施例,协处理器226还包括用于对指令集包括LCSZC指令中的指令进行解码的解码器166的至少一部分。数据处理系统103还包括对理解本发明不是必需的其他电路未示出。0080在运行中,主处理器224执行用于控制通用类型的数据处理操作的数据处理指令流,所述通用类型的数据处理操作包括与高速缓冲存储器278和输入/输出系统295的交说明书CN101937329ACN101937330A9/。

46、23页14互。嵌入在数据处理指令流中的是协处理器指令。主处理器224的解码器165将这些协处理器指令识别为应当由附加的协处理器226执行的类型。相应地,主处理器224在协处理器互连部件236上发布这些协处理器指令或表示协处理器指令的控制信号,任何附加的一个或多个协处理器从协处理器互连部件236上接收这些指令或信号。对于图1C所示的单个协处理器的实施例,协处理器226接受并执行任何发给它的所接收的协处理器指令。协处理器互连部件可以是包括多分支总线、点对点互连部件等的任何类型的通信路径。0081数据可以通过无线接口296接收,以便由协处理器指令进行处理。对于一个示例,可以以数字信号的形式接收语音通。

47、信,所述数字信号可以由协处理器指令进行处理以便重新生成表示语音通信的数字音频采样。对于另一示例,可以以数字比特流的形式接收压缩的音频和/或视频,所述数字比特流可以由协处理器指令处理以便重新生成数字音频采样和/或运动视频帧。0082对于至少一个可选择实施例,主处理器224和协处理器226可以集成到包括执行单元130、一个或多个寄存器堆209以及解码器165在内的单个处理内核中,其中,解码器165用来识别由执行单元130执行的指令集包括LCSZC指令中的多个指令。0083图2A示出了根据本发明的一个实施例的处理器的寄存器堆。寄存器堆150可以用于存储信息,包括控制/状态信息、整数数据、浮点数据和打。

48、包数据。本领域技术人员将认识到,前述的信息和数据列表不是穷举的、全包含的列表。0084对于图2A所示的实施例,寄存器堆150包括整数寄存器201、寄存器209、状态寄存器208和指令指针寄存器211。状态寄存器208指示处理器109的状态,并且可以包括诸如零标志和进位标志的各种状态寄存器。指令指针寄存器211存储将要执行的下一个指令的地址。整数寄存器201、寄存器209、状态寄存器208和指令指针寄存器211都耦合到内部互连部件170。还可以将其他的寄存器耦合到内部互连部件170。内部互连部件170可以是多分支总线,但不需要必须如此。可替换地,内部互连部件170可以是包括点对点互连部件在内的任。

49、何其它类型的通信路径。0085对于一个实施例,寄存器209可以既用于打包数据又用于浮点数据。在这样的一个实施例中,在任何给定时刻,处理器109把寄存器209看成是栈参考浮点寄存器STACKREFERENCEDFLOATINGPOINTREGISTER或非栈参考打包数据寄存器。在该实施例中,包含了一种机制,其允许处理器109在将寄存器209作为栈参考浮点寄存器进行操作和将寄存器209作为非栈参考打包数据寄存器进行操作之间进行切换。在另一个这样的实施例中,处理器109可以同时将寄存器209作为栈参考浮点寄存器和非栈参考打包数据寄存器进行操作。在另一个实施例中,作为另一示例,这些寄存器可以用来存储整数数据。0086当然,可选择的实施例可以实现为包括更多或更少的寄存器组。例如,可选择的实施例可以包括用于存储浮点数据的独立的浮点寄存器组。作为另一示例,可选择的实施例可以包括每个都用于存储控制/状态信息的第一组寄存器以及每个都能够存储整数、浮点数和打包数据的第二组寄存器。作为澄清,实施例的寄存器不应当在意思上限制于特殊类型的电路。相反地,实施例的寄存器只需要能够存储和提供数据并执行这里描述的功能。0087可以实现各种寄存器组例如,整数寄存器201、寄存器209以包括不同数量的寄存器和/或不同大小的寄存器。例如,在一个实施例中,整数寄存器201实现为存储32个说明书CN101937329AC。

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

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


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