《双舍入组合浮点乘法和加法.pdf》由会员分享,可在线阅读,更多相关《双舍入组合浮点乘法和加法.pdf(58页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104321741 A (43)申请公布日 2015.01.28 CN 104321741 A (21)申请号 201380028676.5 (22)申请日 2013.06.19 13/539,198 2012.06.29 US G06F 9/06(2006.01) G06F 9/30(2006.01) (71)申请人 英特尔公司 地址 美国加利福尼亚州 (72)发明人 S萨姆德若拉 G玛格里斯 M卢彭 DR迪泽尔 (74)专利代理机构 上海专利商标事务所有限公 司 31100 代理人 何焜 (54) 发明名称 双舍入组合浮点乘法和加法 (57) 摘要 公开了将双舍入。
2、组合浮点乘法和加法功能作 为标量或向量 SIMD 指令或融合的微操作来提供 的方法、 装置、 指令和逻辑。实施例包括检测浮点 (FP) 乘法操作和将 FP 乘法的结果指定为源操作 数的后续的 FP 操作。FP 乘法和后续的 FP 操作被 编码为组合FP操作, 包括对FP乘法的结果的舍入 和随后的后续的 FP 操作。所述组合的 FP 操作的 编码可被存储并利用融合的乘法加法硬件来执 行以作为可执行线程部分的一部分, 该融合的乘 法加法硬件包括对 FP 乘法器的乘积的溢出检 测、 用于基于 FP 乘法器的乘积中存在溢出或无溢 出而利用不同的舍入输入将第三操作数加数尾数 与FP乘法器的乘积相加的第一。
3、和第二FP加法器。 分别利用溢出检测来选择最终结果。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.11.28 (86)PCT国际申请的申请数据 PCT/US2013/046619 2013.06.19 (87)PCT国际申请的公布数据 WO2014/004220 EN 2014.01.03 (51)Int.Cl. 权利要求书 4 页 说明书 27 页 附图 26 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书4页 说明书27页 附图26页 (10)申请公布号 CN 104321741 A CN 104321741 A 1/4 页 2 1. 一。
4、种机器实现的方法, 包括 : 检测包括第一浮点 (FP) 乘法操作和第二 FP 操作的可执行线程部分, 所述第二 FP 操作 将所述第一 FP 乘法操作的结果指定为源操作数 ; 将所述第一 FP 乘法操作和第二 FP 操作编码为组合的 FP 操作, 所述组合的 FP 操作包 括对所述第一 FP 乘法操作的结果的舍入、 然后所述第二 FP 操作使用经过舍入的结果作为 所述源操作数 ; 存储所述组合的 FP 操作的编码 ; 以及 执行所述组合的 FP 操作, 以作为所述可执行线程部分的一部分。 2. 如权利要求 1 所述的机器实现的方法, 其特征在于, 所述第二 FP 操作是 FP 加法操 作。 。
5、3. 如权利要求 1 所述的机器实现的方法, 其特征在于, 所述第二 FP 操作是 FP 减法操 作。 4. 如权利要求 1 所述的机器实现的方法, 其特征在于, 所述第二 FP 操作是 FP 转换操 作。 5. 如权利要求 1 所述的机器实现的方法, 其特征在于, 所述组合的 FP 操作的所述编码 作为微操作被存储在微操作存储器中。 6. 如权利要求 5 所述的机器实现的方法, 其特征在于, 所述检测由处理器执行优化逻 辑来执行。 7. 如权利要求 1 所述的机器实现的方法, 其特征在于, 对所述组合的 FP 操作的所述编 码被存储作为指令集架构 (ISA) 宏指令。 8. 如权利要求 7 。
6、所述的机器实现的方法, 其特征在于, 对所述组合的 FP 操作的所述编 码作为 ISA 宏指令被存储在指令高速缓存中。 9.如权利要求8所述的机器实现的方法, 其特征在于, 所述检测由处理器ISA转换逻辑 来执行。 10. 如权利要求 7 所述的机器实现的方法, 其特征在于, 所述检测由编译器优化逻辑来 执行。 11. 一种机器实现的方法, 包括 : 在可执行线程部分中检查浮点 (FP) 加法操作, 以确定所述 FP 加法操作的第一源操作 数是否是 FP 乘法操作的结果 ; 以及 如果所述第一源操作数被确定是所述结果并且所述 FP 加法和乘法操作具有相同精 度, 则用双舍入组合 FP 乘法加法。
7、操作代替所述 FP 加法操作, 并将所述 FP 乘法操作标记 为已融合 ; 以及 在所述可执行线程部分中检查融合的 FP 乘法操作, 以确定其结果是否将被另一操作 使用 ; 以及 如果所述融合的 FP 乘法操作的结果被确定不被任何其它操作使用, 则去除所述融合 的 FP 乘法操作。 12. 如权利要求 11 所述的机器实现的方法, 其特征在于, 所述双舍入组合 FP 乘法加 法操作作为微操作被存储在微操作存储器中。 13. 如权利要求 12 所述的机器实现的方法, 其特征在于, 所述检查由处理器执行优化 权 利 要 求 书 CN 104321741 A 2 2/4 页 3 逻辑来执行。 14.。
8、 如权利要求 11 所述的机器实现的方法, 其特征在于, 所述双舍入组合 FP 乘法加 法操作被存储作为指令集架构 (ISA) 宏指令。 15. 如权利要求 14 所述的机器实现的方法, 其特征在于, 所述双舍入组合 FP 乘法加 法操作作为 ISA 宏指令被存储在指令高速缓存中。 16.如权利要求15所述的机器实现的方法, 其特征在于, 所述检查由处理器ISA转换逻 辑来执行。 17. 如权利要求 14 所述的机器实现的方法, 其特征在于, 所述检查由编译器优化逻辑 来执行。 18. 一种机器实现的方法, 包括 : 将可执行线程部分中的浮点(FP)乘法操作转换成加数操作数为零的双舍入组合FP。
9、乘 法加法操作 ; 将所述可执行线程部分中的 FP 加法操作转换成乘数操作数为一的双舍入组合 FP 乘 法加法操作, 所述 FP 加法操作的加数操作数被用作所述双舍入组合 FP 乘法加法操作 的被乘数操作数 ; 以及 如果乘数操作数为一的第一双舍入组合 FP 乘法加法操作的被乘数操作数与加数操 作数为零的按顺序的前一第二双舍入组合 FP 乘法加法操作的目的地操作数相匹配, 则 用所述第二双舍入组合 FP 乘法加法操作的乘数和被乘数操作数来代替所述第一双舍入 组合 FP 乘法加法操作的乘数和被乘数操作数 ; 以及 如果加数操作数为零的任何余下的双舍入组合 FP 乘法加法操作产生未使用的结 果, 。
10、则去除所述余下的双舍入组合 FP 乘法加法操作。 19. 如权利要求 18 所述的机器实现的方法, 其特征在于, 所述双舍入组合 FP 乘法加 法操作作为微操作被存储在微操作存储器中。 20. 如权利要求 19 所述的机器实现的方法, 其特征在于, 所述转换由处理器执行优化 逻辑来执行。 21. 如权利要求 18 所述的机器实现的方法, 其特征在于, 所述双舍入组合 FP 乘法加 法操作被存储作为指令集架构 (ISA) 宏指令。 22.如权利要求21所述的机器实现的方法, 其特征在于, 所述转换由处理器ISA转换逻 辑来执行。 23. 如权利要求 22 所述的机器实现的方法, 其特征在于, 所。
11、述双舍入组合 FP 乘法加 法操作作为 ISA 宏指令被存储在指令高速缓存中。 24. 一种机器实现的方法, 包括 : 将可执行线程部分中的浮点(FP)乘法操作转换成加数操作数为零的双舍入FP组合乘 法加法 (FCMADD) 操作 ; 将所述可执行线程部分中的 FP 减法操作转换成乘数操作数为一的双舍入 FP 组合乘 法减法 (FCMSUB) 操作, 所述 FP 减法操作的被减数操作数被用作所述 FCMSUB 操作的被乘 数操作数 ; 如果乘数操作数为一的所述双舍入 FCMSUB 操作的被乘数与加数操作数为零的按顺序 的前一双舍入 FCMADD 操作的目的地操作数相匹配, 则通过用所述 FCM。
12、ADD 操作的被乘数和 权 利 要 求 书 CN 104321741 A 3 3/4 页 4 乘数操作数来代替所述 FCMSUB 操作的被乘数和乘数操作数, 将所述双舍入 FCMADD 操作组 合到所述 FCMSUB 操作中 ; 如果乘数操作数为一的所述双舍入 FCMSUB 操作的减数与加数操作数为零的按顺序的 前一双舍入 FCMADD 操作的目的地操作数相匹配, 则将所述双舍入 FCMADD 操作组合到双舍 入 FCMSUB 逆操作中以代替所述双舍入 FCMSUB 操作 ; 以及 如果加数操作数为零的任何余下的双舍入 FCMADD 操作产生未使用的结果, 则将所述 余下的双舍入 FCMADD。
13、 操作去除。 25. 如权利要求 24 所述的机器实现的方法, 其特征在于, 所述转换由处理器执行优化 逻辑来执行。 26. 如权利要求 25 所述的机器实现的方法, 其特征在于, 所述双舍入 FCMSUB 操作或所 述双舍入 FCMSUB 逆操作作为微操作被存储在微操作存储器中。 27.如权利要求24所述的机器实现的方法, 其特征在于, 所述转换由处理器ISA转换逻 辑来执行。 28. 如权利要求 27 所述的机器实现的方法, 其特征在于, 所述双舍入组合 FP 乘法加 法操作被存储作为指令集架构 (ISA) 宏指令。 29. 如权利要求 27 所述的机器实现的方法, 其特征在于, 所述双舍。
14、入组合 FP 乘法加 法操作作为 ISA 宏指令被存储在指令高速缓存中。 30. 一种装置, 包括 : 浮点 (FP) 乘法器电路, 用于将第一操作数被乘数尾数与第二操作数乘数尾数相乘以 产生结果 ; FP 对齐电路, 用于根据所述 FP 乘法器电路的结果来对齐第三操作数尾数 ; 溢出检测电路, 用于检测所述 FP 乘法器电路的所述结果中的溢出状况 ; 第一 FP 加法器电路, 用于基于在所述 FP 乘法器电路的所述结果中未检测到溢出状况 的假设, 利用第一舍入输入将所述经对齐的第三操作数尾数与所述 FP 乘法器电路的所述 结果加到一起, 以产生第一和或差 ; 第二 FP 加法器电路, 用于基。
15、于在所述 FP 乘法器电路的所述结果中检测到溢出状况的 假设, 利用第二舍入输入将所述经对齐的第三操作数尾数与所述 FP 乘法器电路的所述结 果加到一起, 以产生第二和或差 ; 以及 多路复用器电路, 用于基于所述溢出检测电路在所述 FP 乘法器电路的结果中检测到 溢出状况或未检测到溢出状况, 来在所述第二和或差与第一和或差之间进行选择。 31. 如权利要求 30 所述的装置, 其特征在于, 所述第一操作数被乘数、 所述第二操作数 乘数、 以及所述第三操作数是单指令多数据 (SIMD) 向量寄存器。 32. 如权利要求 31 所述的装置, 其特征在于, 所述第一操作数被乘数、 所述第二操作数 。
16、乘数、 以及所述第三操作数的数据元素是 64 位 FP 数据元素。 33. 如权利要求 31 所述的装置, 其特征在于, 所述第一操作数被乘数、 所述第二操作数 乘数、 以及所述第三操作数的数据元素是 32 位 FP 数据元素或 16 位 FP 数据元素。 34. 如权利要求 30 所述的装置, 其特征在于, 所述第一操作数被乘数、 所述第二操作数 乘数、 以及所述第三操作数是标量 FP 寄存器。 35. 如权利要求 34 所述的装置, 其特征在于, 所述标量 FP 寄存器在 FP 堆栈上。 权 利 要 求 书 CN 104321741 A 4 4/4 页 5 36. 一种处理器, 包括 : 。
17、一个或多个向量寄存器, 各自包括用于存储向量元素的值的多个数据字段 ; 解码级, 用于解码单指令多数据 (SIMD) 双舍入组合浮点 (FP) 乘法加法或乘法减 法指令, 所述单指令多数据 (SIMD) 双舍入组合浮点 (FP) 乘法加法或乘法减法指令指 定 : 所述一个或多个向量寄存器的目的地操作数、 所述一个或多个向量寄存器的第一操作 数被乘数、 向量元素尺寸、 所述一个或多个向量寄存器的第二操作数乘数、 以及所述一个或 多个向量寄存器的第三操作数 ; SIMD FP 乘法加法器, 包括 : 浮点 (FP) 乘法器级, 用于将所述第一操作数被乘数的多个尾数与所述第二操作数乘 数的多个相应的。
18、尾数相乘, 以产生多个相应的结果 ; FP 对齐级, 用于根据所述 FP 乘法器级的相应结果来对齐所述第三操作数的多个相应 的尾数 ; 溢出检测电路, 用于检测所述 FP 乘法器级的相应结果中的溢出状况 ; 第一 FP 加法器级, 用于基于在所述 FP 乘法器级的相应结果中未检测到溢出状况的假 设, 利用第一舍入输入将所述第三操作数的相应的经对齐的多个尾数与所述 FP 乘法器级 的相应的结果加到一起, 以产生相应的多个第一和或差 ; 第二FP加法器级, 用于基于在所述FP乘法器级的相应结果中检测到溢出状况的假设, 利用第二舍入输入将所述第三操作数的相应的经对齐的多个尾数与所述 FP 乘法器级的。
19、相 应的结果加到一起, 以产生相应的多个第二和或差 ; 以及 多路复用器级, 用于基于所述溢出检测级在所述 FP 乘法器级的相应结果中检测到溢 出状况或未检测到溢出状况, 来在相应的多个所述第二和或差与第一和或差之间进行选 择。 37. 如权利要求 36 所述的处理器, 其特征在于, 所述第一操作数被乘数、 所述第二操作 数乘数、 以及所述第三操作数的数据元素是 64 位 FP 数据元素。 38. 如权利要求 36 所述的处理器, 其特征在于, 所述第一操作数被乘数、 所述第二操作 数乘数、 以及所述第三操作数的数据元素是 32 位 FP 数据元素。 39. 如权利要求 36 所述的处理器, 。
20、其特征在于, 所述双舍入组合浮点 (FP) 乘法加法 或乘法减法指令由处理器指令集架构 (ISA) 转换逻辑产生。 40. 如权利要求 39 所述的处理器, 其特征在于, 所述双舍入组合 FP 乘法加法或乘 法减法指令作为 ISA 宏指令被存储在指令高速缓存中。 权 利 要 求 书 CN 104321741 A 5 1/27 页 6 双舍入组合浮点乘法和加法 技术领域 0001 本公开涉及处理逻辑、 微处理器以及相关联的指令集架构的领域, 该指令集架构 在被处理器或其他处理逻辑所执行时运行逻辑、 数学或其他功能性操作。 具体地, 本公开涉 及用于提供双舍入组合浮点乘法和加法功能的指令和逻辑。 。
21、背景技术 0002 目前的诸多处理器通常包括用于提供计算密集型操作但提供高度数据并行性的 指令, 这些指令可通过使用多种数据存储设备的高效实现来使用, 这些数据存储设备诸如 : 单指令多数据 (SIMD) 向量寄存器。在一些替代处理器中, 指令可提供融合的操作, 诸如乘 法加法操作。在一些替代的处理器中, 可在单独的指令中提供这两种类型的指令和 / 或 这两种类型的组合, 诸如例如 SIMD 乘法加法操作。 0003 过去的一些处理器已经实现了用于执行融合的浮点乘法加法操作的指令。例 如, 在 1990, IBM 在 RISC 系统 6000(IBM RS/6000) 处理器上实现了融合的浮点。
22、乘法加法 操作。例如, 涉及点积计算的一些应用可利用这些新指令来改进性能。但是, 因为支持此类 操作的浮点硬件的宽度可能是标准浮点乘法器和加法器的宽度的至少两倍, 所以一个浮点 乘法加法器会占用两个浮点乘法器和两个浮点加法器那样多的区域。因此, 融合的浮点 乘法加法器可能完全取代单独的浮点乘法器和浮点加法器, 并且融合的浮点乘法加法 器可能用于仿真单个浮点乘法和 / 或单个浮点加法, 但牺牲了一些 ( 有可能是显著的 ) 性 能。 对于未经重新编译的传统应用, 或对于无法利用融合的浮点乘法加法操作的应用, 存 在 ( 有可能是显著的 ) 性能降级。 0004 过去的一些其它处理器已经实现了用于。
23、几乎执行融合的浮点乘法加法操作的 指令。例如, 在 2001, HAL SPARC64 通过将来自浮点乘法器的结果旁路至浮点加法器而实现 了伪代码融合的浮点乘法加法操作。 虽然该方法不会遭受未重新编译的传统应用或无法 利用融合的浮点乘法加法操作的应用遇到的相同的性能降级, 但浮点乘法器、 旁路和浮 点加法器的宽度不足以提供与真正的融合浮点乘法加法操作相同的改进准确度。 0005 在 2008, 电气与电子工程师协会 (IEEE) 发布了修改的浮点标准 IEEE Std 754TM-1985,IEEE Std 754-2008, 其包括融合的乘法加法 (FMA) 和融合的乘法减法 (FMS) 操。
24、作。该 IEEE 标准规定了不在乘法与加法之间进行舍入的情况下的真正的 IEEE 融 合的浮点乘法加法操作的改进准确度。虽然标准化无疑将会促使提供 IEEE FMA 和 FMS 操作的新处理器的出现, 但之前提及的性能降级和增加管芯面积的问题仍存在。 0006 迄今为止, 尚未充分探索对此类性能受限问题、 面积折衷问题以及相关的功率问 题和对重新编译的需求的潜在解决方案。 附图说明 0007 在附图的各图中通过示例而非限制地示出本发明。 0008 图 1A 是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的一个实施 说 明 书 CN 104321741 A 6 2/27 页 7 例的框图。
25、。 0009 图 1B 是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的另一实施 例的框图。 0010 图 1C 是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的另一实施 例的框图。 0011 图 2 是执行用于提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实 施例的框图。 0012 图 3A 示出根据一个实施例的打包数据类型。 0013 图 3B 示出根据一个实施例的打包数据类型。 0014 图 3C 示出根据一个实施例的打包数据类型。 0015 图 3D 示出根据一个实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。 0016 图 3E 示出根据另一实施例的用。
26、于提供双舍入组合浮点乘法和加法功能的指令编 码。 0017 图 3F 示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。 0018 图 3G 示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。 0019 图 3H 示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。 0020 图 4A 示出用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器微架构 的一个实施例的要素。 0021 图 4B 示出用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器微架构 的另一实施例的要素。 0022 图 5 是用于执行提供双舍入组合浮点乘法和加法功。
27、能的指令的处理器的一个实 施例的框图。 0023 图 6 是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的一 个实施例的框图。 0024 图 7 是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的另 一实施例的框图。 0025 图 8 是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的另 一实施例的框图。 0026 图 9 是用于执行提供双舍入组合浮点乘法和加法功能的指令的芯片上系统的一 个实施例的框图。 0027 图 10 是用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实 施例的框图。 0028 图11是提供双舍入组合浮点乘法和加法功能的。
28、IP核开发系统的一个实施例的框 图。 0029 图 12 示出提供双舍入组合浮点乘法和加法功能的架构仿真系统的一个实施例。 说 明 书 CN 104321741 A 7 3/27 页 8 0030 图 13 示出用于转换提供双舍入组合浮点乘法和加法功能的指令的系统的一个实 施例。 0031 图 14A 示出用于执行提供双舍入组合浮点乘法和加法功能的指令的装置的一个 实施例。 0032 图 14B 示出用于执行提供双舍入组合浮点乘法和加法功能的指令的装置的另一 实施例。 0033 图 15 示出用于提供双舍入组合浮点乘法和加法 ( 或减法或转换 ) 功能的过程的 一个实施例的流程图。 0034 。
29、图 16A 示出用于提供双舍入组合浮点乘法和加法功能的过程的替代实施例的流 程图。 0035 图 16B 示出用于提供双舍入组合浮点乘法和减法功能的过程的替代实施例的流 程图。 具体实施方式 0036 以下描述公开了用于在处理器、 计算机系统或其它处理装置之内或与处理器、 计 算机系统或其它处理装置相关联地提供双舍入组合浮点乘法和加法功能的指令和处理逻 辑。利用单独的浮点 (FP) 乘法操作和后续的加法操作来编写的算法可预期在每个操作中 对结果的 IEEE 兼容的舍入。因此, 例如, 即使存在可用于对融合的 FP 乘法加法操作进行 计算的硬件, 仅利将成对的乘法和加法替换为融合的 FP 乘法加。
30、法操作可能不总是令人 满意。 0037 本申请中公开的新颖方法、 装置、 指令和逻辑将双舍入组合浮点乘法和加法、 乘法 和减法、 或乘法和转换提供作为标量或向量 SIMD 指令或融合的微操作。一些方法实施例包 括检测 FP 乘法操作和后续的 FP 操作 ( 例如诸如加法、 减法或转换 ), 这些操作将 FP 乘法 的结果指定为源操作数。FP 乘法和后续的 FP 操作被融合并编码为组合的 FP 操作, 包括在 应用后续 FP 操作之前对 FP 乘法的结果进行舍入。通过重新编译或通过运行时间的动态融 合, 组合的浮点乘法和加法 ( 或减法, 或转换 ) 操作可被用于代替单独的乘法和加法 ( 或减 。
31、法, 或转换 ) 指令, 由此减少等待时间并提高指令执行效率。 0038 可存储所述组合的 FP 操作的编码, 并利用融合的乘法加法硬件将该编码作为 可执行线程部分的一部分来执行, 该融合的乘法加法硬件包括 : 对 FP 乘法器的乘积的溢 出检测、 用于基于 FP 乘法器的乘积中的溢出或无溢出利用不同的舍入输入将第三操作数 加数尾数与 FP 乘法器的乘积相加的第一和第二 FP 加法器。然后利用来自溢出检测的溢出 信号相应地选择最终结果。 0039 因此, 通过重新编译或通过软件转换或硬件中的运行时的动态融合, 可减少等待 时间并提高指令执行效率。 0040 在以下描述中, 陈述了诸如处理逻辑、。
32、 处理器类型、 微架构状况、 事件、 启用机制等 多种特定细节, 以提供对本发明实施例的更透彻理解。然而, 本领域技术人员应当领会, 没 有这些具体细节也可实践本发明。此外, 没有详细示出一些公知的结构、 电路等等, 以避免 不必要地模糊本发明的实施例。 0041 虽然下述的诸个实施例参照处理器来描述, 但其他实施例也适用于其他类型的集 说 明 书 CN 104321741 A 8 4/27 页 9 成电路和逻辑设备。 本发明的实施例的类似技术和教导可应用于其它类型的电路或半导体 器件, 这些其它类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。 本发明的诸个实施例的教导适用于执。
33、行数据操纵的任何处理器或机器。然而, 本发明不限 于执行 512 位、 256 位、 128 位、 64 位、 32 位、 或 16 位数据运算的处理器或机器, 并可适用于 执行数据操纵或管理的任何处理器和机器。 此外, 下述描述提供了示例, 并且附图出于示意 性目的示出了多个示例。 然而, 这些示例不应该被理解为具有限制性目的, 因为它们仅仅旨 在提供本发明的诸个实施例的示例, 而并非对本发明的实施例的所有可能实现方式进行穷 举。 0042 虽然下述的示例描述了在执行单元和逻辑电路情况下的指令处理和分配, 但本发 明的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成, 这些数据或。
34、指 令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例 中, 与本发明的实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通 过这些指令编程的通用处理器或专用处理器执行本发明的步骤。 本发明的诸个实施例也可 以作为计算机程序产品或软件来提供, 该计算机程序产品或软件可包括其上存储有指令的 机器或计算机可读介质, 这些指令可被用来对计算机 ( 或其他电子设备 ) 进行编程来执行 根据本发明的实施例的一个或多个操作。另选地, 本发明的诸个实施例的这些步骤可由包 含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行, 或由经编程的计算机组件以 及固定功能硬件组件。
35、的任何组合来执行。 0043 被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统中的 存储器 ( 诸如 ,DRAM、 高速缓存、 闪存、 或其他存储器 ) 内。进一步的, 指令可经由网络或其 他计算机可读介质来分发。因此, 计算机可读介质可包括用于以机器 ( 诸如, 计算机 ) 可读 的格式存储或发送信息的任何机制, 但不限于 : 软盘、 光盘、 致密盘只读存储器 (CD-ROM)、 磁光盘、 只读存储器 (ROM)、 随机存取存储器 (RAM)、 可擦除可编程只读存储器 (EPROM)、 电 可擦除可编程只读存储器 (EEPROM)、 磁卡或光卡、 闪存、 或在经由互联网通过电。
36、、 光、 声、 或 其他形式的传递信号 ( 诸如, 载波、 红外信号、 数字信号等 ) 发送信息中所用的有形机器可 读存储器。因此, 计算机可读介质包括用于存储或发送机器 ( 例如, 计算机 ) 可读形式的电 子指令或信息的任何类型的有形机器可读介质。 0044 设计会经历多个阶段, 从创新到模拟到制造。表示设计的数据可用多种方式来表 示该设计。 首先, 如模拟中将有用的, 可使用硬件描述语言或其他功能性描述语言来表示硬 件。此外, 具有逻辑和 / 或晶体管门电路的电路级模型可在设计流程的其他阶段产生。此 外, 大多数设计在某些阶段都到达表示硬件模型中多种设备的物理配置的数据水平。在使 用常规。
37、半导体制造技术的情况下, 表示硬件模型的数据可以是在不同掩模层上对用于生成 集成电路的掩模指示不同特征的存在与否的数据。在任何的设计表示中, 数据可被存储在 任何形式的机器可读介质中。存储器或磁 / 光存储器 ( 诸如, 盘 ) 可以是存储信息的机器 可读介质, 这些信息是经由光学或电学波来发送的, 这些光学或电学波被调制或以其他方 式生成以传送这些信息。 当发送指示或承载代码或设计的电学载波时, 执行电信号的复制、 缓冲或重传情况时, 制作一个新的副本。 因此, 通信提供商或网络提供商会在有形机器可读 介质上至少临时地存储具体化本发明的诸个实施例的技术的物品 ( 诸如, 编码在载波中的 信息。
38、 )。 说 明 书 CN 104321741 A 9 5/27 页 10 0045 在现代处理器中, 多个不同执行单元被用于处理和执行多种代码和指令。并不是 所有指令都被同等地创建, 因为其中有一些更快地被完成而另一些需要多个时钟周期来完 成。指令的吞吐量越快, 则处理器的总体性能越好。因此, 使大量指令尽可能快地执行将会 是有利的。 然而, 某些指令具有更大的复杂度, 并需要更多的执行时间和处理器资源。 例如, 存在浮点指令、 加载 / 存储操作、 数据移动等等。 0046 因为更多的计算机系统被用于互联网、 文本以及多媒体应用, 所以逐渐地引进更 多的处理器支持。 在一个实施例中, 指令集。
39、可与一个或多个计算机架构相关联, 一个或多个 计算机架构包括数据类型、 指令、 寄存器架构、 寻址模式、 存储器架构、 中断和异常处理以及 外部输入输出 (I/O)。 0047 在一个实施例中, 指令集架构 (ISA) 可由一个或更多微架构来实现, 微架构包括 用于实现一个或多个指令集的处理器逻辑和电路。因此, 具有不同微架构的诸个处理器可 共享公共指令集的至少一部分。例如,奔腾四 (Pentium 4) 处理器、酷 睿 (CoreTM) 处理器、 以及来自加利福尼亚州桑尼威尔 (Sunnyvale) 的超微半导体有限公司 (Advanced Micro Devices,Inc.) 的诸多处理。
40、器执行几乎相同版本的 x86 指令集 ( 在更新 的版本中加入了一些扩展 ), 但具有不同的内部设计。类似地, 由其他处理器开发公司 ( 诸 如, ARM控股有限公司、 MIPS或它们的授权方或兼容方)所设计的诸多处理器可共享至少一 部分公共指令集, 但可包括不同的处理器设计。例如, ISA 的相同寄存器架构在不同的微架 构中可使用新的或已知的技术以不同方法来实现, 包括专用物理寄存器、 使用寄存器重命 名机制 ( 诸如, 使用寄存器别名表 RAT、 重排序缓冲器 ROB、 以及引退寄存器组 ) 的一个或多 个动态分配物理寄存器。 在一个实施例中, 寄存器可包括 : 可由软件编程者寻址或不可寻。
41、址 的一个或多个寄存器、 寄存器架构、 寄存器组、 或其他寄存器集合。 0048 在一个实施例中, 指令可包括一个或多个指令格式。 在一个实施例中, 指令格式可 指示多个字段 ( 位的数目、 位的位置等 ) 以特别指定将要被执行的操作以及将要被执行的 操作的操作数。一些指令格式可进一步被指令模板 ( 或子格式 ) 所细分定义。例如, 给定 指令格式的指令模板可被定义为具有指令格式字段的不同的子集, 和 / 或被定义为具有不 同解释的给定字段。在一个实施例中, 使用指令格式 ( 并且, 如果定义过, 则以该指令格式 的一个给定指令模板 ) 来表示指令, 并且该指令指定或指示操作以及该操作将操作的。
42、操作 数。 0049 科学应用、 金融应用、 自动向量化通用应用、 RMS( 识别、 挖掘和合成 ) 应用以及视 觉和多媒体应用 ( 诸如, 2D/3D 图形、 图像处理、 视频压缩 / 解压缩、 语音识别算法和音频处 理 ) 可能需要对大量数据项执行相同的操作。在一个实施例中, 单指令多数据 (SIMD) 指的 是使得处理器在多个数据元素上执行一操作的一种类型的指令。 SIMD技术可被用于处理器 中, 这些处理器将寄存器中的诸个位 (bit) 逻辑地划分入多个固定尺寸或可变尺寸的数据 元素, 每个数据元素表示单独的值。例如, 在一个实施例中, 64 位寄存器中的诸个位可被组 织为包含四个单独。
43、的 16 位数据元素的源操作数, 每个数据元素表示单独的 16 位值。该数 据类型可被称为 “打包” 数据类型或 “向量” 数据类型, 并且该数据类型的操作数被称为打 包数据操作数或向量操作数。在一个实施例中, 打包数据项或向量可以是存储在单个寄存 器中的打包数据元素的序列, 并且打包数据操作数或向量操作数可以是 SIMD 指令 ( 或 “打 包数据指令” 或 “向量指令” ) 的源操作数或目的地操作数。在一个实施例中, SIMD 指令指 说 明 书 CN 104321741 A 10 6/27 页 11 定了将要对两个源向量操作数执行的单个向量操作, 以生成具有相同或不同尺寸的、 具有 相同。
44、或不同数量的数据元素的、 具有相同或不同数据元素次序的目的地向量操作数 ( 也被 称为结果向量操作数 )。 0050 诸如由酷睿 (CoreTM) 处理器 ( 具有包括 x86、 MMXTM、 流 SIMD 扩展 (SSE)、 SSE2、 SSE3、 SSE4.1、 SSE4.2 指令的指令集 )、 ARM 处理器 ( 诸如, ARM处理器族, 具有包括向量浮点 (VFP) 和 / 或 NEON 指令的指令集 )、 MIPS 处理器 ( 诸如, 中国科学院计 算机技术研究所 (ICT) 开发的龙芯处理器族 ) 所使用的 SIMD 技术之类的 SIMD 技术在应用 性能上带来了极大的提高(Cor。
45、eTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册 商标或商标 )。 0051 在一个实施例中, 目的地寄存器 / 数据和源寄存器 / 数据是表示对应数据或操作 的源和目的地的通用术语。 在一些实施例中, 它们可由寄存器、 存储器或具有与所示出的那 些名称或功能不同的名称或功能的其他存储区域所实现。例如, 在一个实施例中,“DEST1” 可以是临时存储寄存器或其他存储区域, 而 “SRC1” 和 “SRC2” 是第一和第二源存储寄存器 或其他存储区域, 等等。在其他实施例中, SRC 和 DEST 存储区域中的两个或更多区域可对 应于相同存储区域中的不同数据存储元素 ( 例如, SI。
46、MD 寄存器 )。在一个实施例中, 例如通 过将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的 那个寄存器, 源寄存器中的一个也可以作为目的地寄存器。 0052 图 1A 是根据本发明的一个实施例的示例性计算机系统的框图, 具有包括执行 单元以执行指令的处理器。根据本发明, 诸如根据在此所描述的实施例, 系统 100 包括 诸如处理器 102 之类的组件, 以采用包括逻辑的执行单元来执行算法以处理数据。系统 100 代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的III、 4、 Xeontm、XScaletm和 / 或 StrongARMtm微处理器的处理系统。
47、, 不 过也可使用其它系统 ( 包括具有其它微处理器的 PC、 工程工作站、 机顶盒等 )。在一个实施 例中, 样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWStm操作系 统的一个版本, 不过也可使用其它操作系统(例如UNIX和Linux)、 嵌入式软件、 和/或图形 用户界面。因此, 本发明的各实施例不限于硬件和软件的任何具体组合。 0053 实施例不限于计算机系统。本发明的替换实施例可被用于其他设备, 诸如手持式 设备和嵌入式应用。 手持式设备的一些示例包括 : 蜂窝电话、 互联网协议设备、 数码相机、 个 人数字助理 (PDA)、 手持式 PC。嵌入式应用可包括。
48、 : 微控制器、 数字信号处理器 (DSP)、 芯片 上系统、 网络计算机 (NetPC)、 机顶盒、 网络中枢、 广域网 (WAN) 交换机、 或可执行参照至少 一个实施例的一个或多个指令的任何其他系统。 0054 图 1A 是计算机系统 100 的框图, 计算机系统 100 被形成为具有处理器 102, 处理 器 102 包括一个或多个执行单元 108 以执行算法, 以执行根据本发明的一个实施例的至少 一个指令。参照单处理器桌面或服务器系统来描述了一个实施例, 但替代实施例可被包括 在多处理器系统中。系统 100 是 “中枢” 系统架构的示例。计算机系统 100 包括处理器 102 以处理。
49、数据信号。处理器 102 可以是复杂指令集计算机 (CISC) 微处理器、 精简指令集计算 (RISC) 微处理器、 超长指令字 (VLIW) 微处理器、 实现指令集组合的处理器或任意其它处理 器设备 ( 诸如数字信号处理器 )。处理器 102 耦合至处理器总线 110, 处理器总线 110 可在 说 明 书 CN 104321741 A 11 7/27 页 12 处理器 102 和系统 100 内的其他组件之间传输数据信号。系统 100 的诸个元素执行本领域 所熟知的常规功能。 0055 在一个实施例中, 处理器 102 包括第一级 (L1) 内部高速缓存存储器 104。取决于 架构, 处理器 102 可具有单个内部高速缓存或多级内部高速缓存。或者, 在另一个实施例 中, 高速缓存存储器可位于处理器 102 的外部。其他实施例也可包括内部高速缓存和外部 高速缓存的组合, 这取决于特定实现和需求。寄存器组 106 可在多个寄存器 ( 包括整数寄 存器、 浮点。