十六进制浮点乘与加指令的制作方法

未命名 10-26 阅读:81 评论:0

十六进制浮点乘与加指令


背景技术:

1.一个或多个方面一般地涉及促进计算环境内的处理,尤其涉及改进这样的处理。
2.在计算环境内执行的应用提供由多种类型的技术使用的许多操作,这些技术包括但不限于工程、制造、医疗技术、汽车技术、计算机处理等。以诸如cobol的编程语言编写的这些应用在执行操作时经常执行复杂的计算。例如,计算包括求幂函数,其通常需要将数据从二进制编码的十进制转换为十六进制浮点,以十六进制浮点执行该函数,并将结果转换回二进制编码的十进制。
3.以十六进制浮点执行函数包括十六进制浮点算术。然而,这种算术不够准确,并且因此执行附加指令以获得更高的准确度。这导致增加复杂度、降低系统性能和增加对系统资源的使用。


技术实现要素:

4.通过提供一种用于促进计算环境内的处理的计算机程序产品,克服了现有技术的缺点,并且提供了附加的优点。所述计算机程序产品包括一个或多个计算机可读存储介质和共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令用于执行一种方法。所述方法包括执行指令以执行从针对所述指令所配置的多个操作中选择的操作。在一个示例中,执行所述指令包括:确定所述指令的选定操作数的值。确定所述值是基于所述指令的控件并且包括例如:基于所述指令的所述控件具有第一值,从选定操作数位置读取所述指令的所述选定操作数以获得所述选定操作数的所述值;以及基于所述指令的所述控件具有第二值,使用预定值作为所述选定操作数的所述值。将所述值与所述指令的另一个选定操作数相乘以获得乘积。使用所述乘积以及所述指令的选定操作数执行算术运算以获得中间结果。从所述中间结果获得结果,以及将所述结果放置在选定位置中。
5.通过使用单个指令来执行乘法和算术运算,提高了性能,并减少了资源的利用率。通过使用单个架构化指令来执行乘法和算术运算,可以比使用软件范例更有效地执行某些任务,例如乘法和算术运算。乘法和/或算术运算执行得更快,从而减少执行时间且改进处理器和/或整体系统性能。
6.通过使用被配置为执行多个运算的单个指令,性能得到改进,并且资源的利用率得到降低。通过使用被配置为执行乘法和算术运算或仅算术运算(其中执行乘法以提供算术运算的更高精度)的单个架构化指令,可以比使用软件范例更有效地执行某些任务,例如乘法和算术运算。乘法和算术运算执行得更快,从而减少执行时间,以及改进处理器和/或整体系统性能。
7.此外,在一个示例中,通过使用也执行算术的乘法指令来执行算术(例如,加法),准确度提高,以及通过使用单个指令而不是多个指令,复杂度降低,性能提高,并且对系统资源的使用减少。例如,两个操作数的相乘产生两倍宽度的乘积,并且通过将算术运算合并在单个指令中,完整的两倍宽度乘积可以参与算术而不是经舍入或经截断的乘积。作为一个示例,两个6十六进制数位的相乘产生12十六进制数位乘积。假如它们是单独的运算,则
在下一个运算之前该乘积将被截断为6个十六进制数位。通过利用完整的中间结果,合并运算更加准确。换句话说,对于具有截断的浮点简单运算,通常获得0到1个最后位置单位(ulp)的误差。如果存在乘法和截断,则乘积具有1个ulp的误差,然后如果存在乘积与加数的相加,则这导致另一个1个ulp的误差,总共2个ulp的误差。然而,如果这是一个复合运算,则仅有1个ulp的误差。对于二进制浮点是如此,对于十六进制浮点,情况甚至更糟。
8.在一个示例中,使用所述预定值作为所述选定操作数的所述值包括:在不从所述选定操作数位置读取所述选定操作数的情况下使用所述预定值。所述选定操作数位置是例如至少一个寄存器。这通过消除对例如一个或多个寄存器的读取而改进了系统性能。
9.作为一个示例,所述预定值包括值1。
10.在一个实例中,执行所述指令还包括:确定舍入运算是否将被执行,以及基于确定所述舍入运算将被执行,对所述中间结果的版本执行所述舍入运算以获得所述结果。所述中间结果的所述版本包括例如归一化结果。
11.通过使用单个指令来执行乘法、算术和/或舍入运算,改进了性能,且减少了资源的利用率。通过使用单个架构化指令来执行乘法、算术、算术和/或舍入运算,可以比使用软件范例更有效地执行某些任务,例如乘法、算术和/或舍入运算。乘法、算术和/或舍入运算执行得更快,从而减少执行时间,且改进处理器和/或整体系统性能。此外,舍入在两个方向上将绝对误差降低到1/2ulp。非融合乘-加具有双舍入误差,而融合乘-加具有单舍入误差。
12.在一个实例中,确定所述舍入运算是否将被执行包括:检查所述指令的舍入模式控件,以及基于所述舍入模式控件等于一个值,所述舍入运算将被执行。通过包括舍入模式控件作为单个指令的一部分,能够控制误差的方向和大小。
13.在一个示例中,获得所述结果包括:将所述中间结果进行归一化以获得归一化结果,以及使用所述归一化结果获得所述结果。此外,使用所述归一化结果获得所述结果包括:例如确定舍入运算是否将被执行,以及基于确定所述舍入运算将被执行,对所述归一化结果进行舍入以获得所述结果。此外,在一个示例中,基于确定所述舍入运算将不被执行,截断所述归一化结果以获得所述结果。
14.通过使用单个指令来执行乘法、算术、归一化、舍入和/或截断运算,改进了性能,且减少了资源的利用率。通过使用单个架构化指令来执行乘法、算术、归一化、舍入和/或截断运算,可以比使用软件范例更有效地执行某些任务,例如乘法、算术、归一化、舍入和/或截断运算。乘法、算术、归一化、舍入和/或截断运算执行得更快,从而减少了执行时间,并改进了处理器和/或整体系统性能。
15.作为示例,所述选定位置包括由所述指令的至少一个字段指定的至少一个寄存器。
16.在一个示例中,所述控件是仅加控件,所述算术运算包括加法运算。基于所述控件具有所述第二值,所述控件指示所述指令将执行仅加运算,其中所述另一个选定操作数被乘以所述预定值1。此外,基于所述控件具有所述第一值,所述控件指示所述指令将执行乘并加运算并且所述另一个选定操作数被乘以从所述选定操作数位置读取的所述值。
17.通过使用被配置为执行多个操作的单个指令,性能得到改进,并且资源的利用率得到降低。通过使用被配置为执行乘与加运算和/或仅加运算(其中执行乘法以提供用于加法操作的更高精度但不以其他方式影响求和)的单个架构化指令,可以比使用软件范例更
有效地执行某些任务,例如乘法和加法运算。乘法和加法运算执行得更快,从而减少执行时间且改进处理器和/或整体系统性能。
18.此外,在一个示例中,通过使用还执行加法的乘法指令来执行加法,准确度提高,以及通过使用单个指令而不是多个指令,复杂度降低,性能提高,并且对系统资源的使用减少。
19.本文还描述并要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,本文还描述并可以要求保护与一个或多个方面相关的服务。
20.通过本文所述的技术实现了额外的特征和优点。其它实施例和方面在本文中详细描述,且被视为所要求保护的方面的一部分。
附图说明
21.在说明书结尾处的权利要求中作为示例特别指出并清楚地要求保护一个或多个方面。从以下结合附图的详细描述中,一个或多个方面的上述内容和目的、特征和优点将变得显而易见,在附图中:
22.图1a描绘了用于结合和使用本发明的一个或多个方面的计算环境的一个示例;
23.图1b描绘了根据本发明的一个或多个方面的图1a的处理器的进一步细节;
24.图2a描绘了根据本发明的一个或多个方面的乘与加指令(multiply and add instruction)的格式的一个示例;
25.图2b描绘了根据本发明的一个或多个方面的乘与加指令的掩码字段的进一步细节的一个示例;
26.图2c描绘了根据本发明的一个或多个方面的乘与加指令的格式的另一个示例;
27.图3描绘了根据本发明的一个或多个方面的与乘与加指令的执行相关联的处理的一个示例;
28.图4描绘了根据本发明的一个或多个方面的与获得乘与加指令的结果相关联的进一步细节的一个示例;
29.图5a-5c描绘了根据本发明的一个或多个方面的促进计算环境内的处理的一个示例;
30.图6a描绘了用于结合和使用本发明的一个或多个方面的计算环境的另一个示例;
31.图6b描绘了根据本发明的一个或多个方面的图6a的存储器的进一步细节的一个示例;
32.图6c描绘了根据本发明的一个或多个方面的图6a的存储器的进一步细节的另一个示例;
33.图7a描绘了用于结合和使用本发明的一个或多个方面的计算环境的又一个示例;
34.图7b描绘了根据本发明一个或多个方面的图7a的存储器的进一步细节;
35.图8描绘了根据本发明的一个或多个方面的云计算环境的一个实施例;以及
36.图9描绘了根据本发明的一个或多个方面的抽象模型层的一个示例。
具体实施方式
37.根据本发明的一个方面,提供了促进计算环境中的处理的能力。作为一个示例,提
供了单个指令(例如,在硬件/软件接口处的单个架构化硬件机器指令),其被配置为执行多个运算,包括例如乘法与算术(例如,加法)运算以及在此被称为仅算术(例如,仅加法)运算的运算。该指令(在此称为乘与加指令)是通用处理器指令集架构(isa)的一部分,其由处理器(例如通用处理器)上的程序分派。(在另一个示例中,该指令可以是专用处理器(例如被配置用于特定功能的协处理器)的一部分。)
38.作为执行单个指令(例如,乘与加指令)的一部分,可以执行各种运算,包括相乘、相加、归一化、舍入和/或截断。这些运算中的每一个都作为执行单个指令的一部分来执行,从而提高了系统性能,并减少了对系统资源的使用。
39.此外,根据本发明的一个方面,能够执行乘法与算术运算(例如,乘与加运算)的该单个指令还能够执行仅算术运算(例如,仅加法运算)。如本文所使用的,算术或仅加法表示当执行相乘时,乘数为1(例如,以十六进制浮点格式)并且被执行以便为算术(例如加法)提供更高的精度,但是除此之外不影响算术,例如值的相加。在仅加法运算中的乘数不必从寄存器文件中被读取,对寄存器的依赖性较小,并且寄存器不必保持常数1.0。
40.此外,在一个方面,该单个指令包括舍入模式说明符,该舍入模式说明符可以在截断结果或最接近于离开零的舍入之间进行选择。这控制了舍入误差的方向和数量。
41.在一个示例中,该指令的操作数是十六进制浮点格式,这是一种是用于编码浮点数的格式。在一个示例中,十六进制浮点数包括符号位、特征(例如,7位)和小数(例如,6、14或28位)。该特征表示带符号指数,并且通过将例如64加到指数值来获得。该特征的范围是0到127,其对应于例如-64到+63的指数范围。十六进制浮点数的大小是其小数与提升到由其特征表示的指数的幂的数16的乘积。该数字是正的或负的,这取决于符号位例如是0还是1。
42.十六进制浮点数可以以多种不同的格式表示,包括短格式(例如32位)、长格式(例如64位)和扩展格式(例如128位)。在每种格式中,第一位(例如,最左边的第一位,位0)是符号位;接下来的选定数量的位(例如七位)是特征,而在短格式和长格式中,其余的位是小数,其分别包括例如六个或十四个十六进制数字。在扩展格式中,小数是例如28位小数,并且扩展十六进制浮点数包括两个长格式数,这两个长格式数被称为高阶部分和低阶部分。高阶部分是任何长十六进制浮点数。高阶部分的小数包含例如28位小数的最左侧的14个十六进制数字,低阶部分的小数包含例如28位小数的最右侧的14个十六进制数字。高阶部分的特征和符号是扩展十六进制浮点数的特征和符号,而扩展操作数的低阶部分的特征和符号被忽略。
43.参考图1a描述了用于结合和使用本发明的一个或多个方面的计算环境的一个实施例。作为示例,计算环境基于由纽约阿蒙克的国际商业机器公司提供的硬件架构。在题为“z/architecture principles of operation”的出版物(ibm出版物编号sa22-7832-12,第十三版,2019年9月,其全部内容通过引用并入本文)中描述了z/architecture硬件架构的一个实施例。然而,z/architecture硬件架构仅是一个示例架构;国际商业机器公司和/或其他实体的其他架构和/或其他类型的计算环境可以包括和/或使用本发明的一个或多个方面。
44.参考图1a,计算环境100包括例如以通用计算设备的形式示出的计算机系统102。计算机系统102可以包括但不限于经由一个或多个总线和/或其他连接110彼此耦合的一个或多个处理器或处理单元104(例如,中央处理单元(cpu))、存储器106(也称为系统存储器、
主存储器、主存装置、中央存储装置或存储装置)以及一个或多个输入/输出(i/o)接口108。
45.总线110表示多个类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,这些架构包括工业标准架构(isa)、微通道架构(mca)、增强型isa(eisa)、视频电子标准协会(vesa)局部总线和外围组件互连(pci)。
46.存储器106可以包括例如高速缓存112(诸如共享高速缓存),其可以耦合到处理器104的本地高速缓存114。此外,存储器106可以包括一个或多个程序或应用116以及至少一个操作系统118。示例操作系统包括由纽约阿蒙克的国际商业机器公司提供的操作系统。z/os是国际商业机器公司在至少一个司法管辖区内的商标或注册商标。也可使用由国际商业机器公司和/或其它实体提供的其它操作系统。存储器106还可以包括一个或多个计算机可读程序指令120,其可以被配置为执行本发明的各方面的实施例的功能。
47.计算机系统102可以经由例如i/o接口108与一个或多个外部设备130(诸如用户终端、磁带驱动器、指点设备、显示器和一个或多个数据存储设备134等)通信。数据存储设备134可以存储一个或多个程序136、一个或多个计算机可读程序指令138和/或数据等。计算机可读程序指令可以被配置为执行本发明的各方面的实施例的功能。
48.计算机系统102还可以经由例如i/o接口108与网络接口132通信,这使得计算机系统102能够与一个或多个网络(诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,因特网))通信,从而提供与其他计算设备或系统的通信。
49.计算机系统102可以包括和/或耦合到可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,它可以包括和/或耦合到不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)、用于从可移动的、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器、和/或用于从可移动的、非易失性光盘(诸如cd-rom、dvd-rom或其它光学介质)读取或向其写入的光盘驱动器。应当理解,其它硬件和/或软件组件可以与计算机系统102结合使用。实例包括但不限于:微码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、raid系统、磁带驱动器和数据归档存储系统等。
50.计算机系统102可以与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统102一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机(pc)系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
51.在一个示例中,处理器(例如,处理器104)包括用于执行指令的多个功能组件。如图1b所示,这些功能组件包括例如:指令取回组件150,用于取回要执行的指令;指令解码单元152,用于对所取回的指令进行解码并获得所解码的指令的操作数;一个或多个指令执行组件154,用于执行解码的指令;存储器访问组件156,用于在必要时访问存储器以用于指令执行;以及写回组件158,用于提供所执行的指令的结果。一个或多个组件可以在指令处理中访问和/或使用一个或多个寄存器160。此外,根据本发明的一个或多个方面,一个或多个组件可以包括一个或多个其它组件的至少一部分或可以访问一个或多个其它组件,该一个或多个其它组件用于执行乘法与算术(例如,加法)运算和/或例如乘与加指令的仅算术运算(或可以使用本发明的一个或多个方面的其它处理),如本文所述。一个或多个其它组件
包括例如乘法/算术组件(或一个或多个其它组件)170。
52.根据本发明的一个方面,提供了一种指令(在此称为乘与加指令)以作为执行该单个指令的一部分而至少执行相乘、相加、归一化、舍入和/或截断运算。该指令被配置为执行多个运算,包含例如乘与加运算以及仅加运算,其中执行乘法(例如,乘1)以提供相加中所采用的乘积的准确性。
53.例如,两个操作数的相乘产生两倍宽度的乘积,并且通过将算术运算合并在单个指令中,完整的两倍宽度乘积可以参与算术而不是经舍入或经截断的乘积。作为一个示例,两个6十六进制数位的相乘产生12十六进制数位乘积。假如它们是单独的运算,则在下一个运算之前该乘积将被截断为6个十六进制数位。通过利用完整的中间结果,合并运算更加准确。换句话说,对于具有截断的浮点简单运算,通常获得0到1个最后位置单位(ulp,unit of last place)的误差。如果存在乘法和截断,则乘积具有1个ulp的误差,然后如果存在乘积与加数的相加,则这导致另一个1个ulp的误差,总共2个ulp的误差。然而,如果这是一个复合运算,则仅有1个ulp的误差。对于二进制浮点是如此,对于十六进制浮点,情况甚至更糟。
54.作为一个示例,十六进制浮点加法被定义为使用指数来对齐小数并保持1个保护数位。如果具有较大指数的操作数具有前导零,则1个保护数位不足以得到准确的结果。定义十六进制浮点乘与加运算以在舍入之前保持中间结果精确。使用被乘数等于1的十六进制浮点乘-加运算产生更准确的相加。
55.例如:
[0056][0057]
[0058]
十六进制浮点加的最坏情况示例是当具有大指数的零被加到数字并且所有精度都丢失时。例如:
[0059][0060]
结果偏离了大约16^56并且没有精度位。如果这是用十六进制浮点乘-加来完成的,则结果等于b并且是精确的。
[0061]
参考图2a描述了用于执行乘与加运算和/或仅加运算的乘与加指令的一个实施例。在一个示例中,使用通用处理器(例如,处理器104)来执行该指令。在本文的描述中,指示了特定位置、特定字段和/或字段的特定大小(例如,特定字节和/或位)。然而,可以提供其他位置、字段和/或大小。此外,尽管可以指定将位设置为特定值,例如1或0,但是这仅是示例。在其它实例中,位可以被设置为不同的值,例如相反值或另一个值。许多变型是可能的。
[0062]
在一个实例中,乘与加指令具有rrd格式,其表示具有扩展操作码(opcode)和额外寄存器的寄存器与寄存器操作。如图2a所示,在一个示例中,乘与加指令200具有多个字段,并且字段可以具有与之相关联的下标数字。与指令的字段相关联的下标数字表示该字段所应用到的操作数。例如,与寄存器r1相关联的下标数字1表示使用r1指定的寄存器包括第一操作数,以此类推。寄存器操作数是一个寄存器的长度,其例如为64位。
[0063]
在一个实施例中,乘与加指令200包括:操作码(opcode)字段202(例如,位0-15),其至少指示乘与加运算;第一寄存器(r1)字段204(例如,位16-19),其用于指定至少一个第一寄存器;掩码(m4)字段206(例如,位20-23);第二寄存器(r2)字段210(例如,位28-31),其用于指定至少一个第二寄存器;以及第三寄存器(r3)字段208(例如,位24-27),其用于指定至少一个第三寄存器,下面描述每个寄存器。在一个实施例中,字段是彼此分离和独立的;然而,在其它实施例中,可以组合多于一个字段。下面描述关于这些字段的进一步信息。
[0064]
在一个实施例中,寄存器(r1)字段204用于指示包括第一操作数的至少一个寄存器,该第一操作数是在指令的执行中要相加的值,并且第一操作数位置(例如,至少r1)用于存储指令的执行结果。第二操作数包含在使用寄存器(r2)字段210指定的至少一个寄存器中,并且例如是十六进制浮点数,而第三操作数包含在使用寄存器(r3)字段208指定的至少一个寄存器中,并且例如是十六进制浮点数。
[0065]
在一个示例中,在执行指令时使用一个或多个控件。示例控件包括在m4字段206中。参考图2b,m4字段206包括:
[0066]
仅加220:当该控件(例如,位0)为0时,所执行的功能是乘与加。当该控件为1时,所执行的功能是仅加,其中执行相乘与相加,并且假设第三操作数为1.0。该运算等同于具有
无限保护数位的加法,随后是归一化和舍入,并且舍入模式由下面描述的舍入模式控件来确定。
[0067]
舍入模式222:当该控件(例如,位3)为0时,归一化中间结果被截断以形成结果。当该控件为1时,归一化中间结果被舍入到最接近于离开零。归一化中间结果包括分别用于扩展格式、长格式和短格式的乘与加结果的29、15或7个最高有效十六进制数位,其在右侧包括一个保护数位。1被加到中间结果的保护数位的最左侧位,任何进位被传播到左侧,并且保护数位被丢弃以产生结果小数。当舍入的中间结果导致小数溢出时,小数被右移一个十六进制数位位置,并且特征递增。
[0068]
在一个示例中,位1-2被忽略并且应当包含0。
[0069]
参照图2c描述乘与加指令的格式的另一个示例。在一个实施例中,乘与加指令250具有rxf格式,其表示寄存器及索引存储运算、扩展操作码字段及额外的寄存器字段。它包括例如:操作码(opcode)字段252a、252b(例如,位0-7和位40-47),其至少指示乘与加运算;第一寄存器(r1)字段262(例如,位32-35),其用于指定至少一个第一寄存器;掩码(m4)字段264(例如,位36-39);第三寄存器(r3)字段254(例如,位8-11),其用于指定至少一个第三寄存器;以及多个字段,例如索引(x2)字段256(例如,位12-15)、基数(b2)字段258(例如,位16-19)和位移(d2)字段260(例如,位20-31),其用于指定第二操作数的地址。例如,由x2和b2字段指定的通用寄存器的内容被加到d2字段的内容,以形成第二操作数的地址。下面描述每个字段。在一个实施例中,字段是彼此分离和独立的;然而,在其它实施例中,可以组合多于一个字段。
[0070]
如本文所述,在一个实施例中,寄存器(r1)字段262用于指示包括第一操作数的至少一个寄存器,该第一操作数是在指令的执行中要相加的值,并且第一操作数位置用于存储指令的执行结果。如上所述,从使用x2字段256、b2字段258和d2字段260定义的地址获得的第二操作数例如是十六进制浮点数,而第三操作数包含在使用寄存器(r3)字段254指定的至少一个寄存器中并且例如是十六进制浮点数。
[0071]
在一个示例中,在一个实施例中在执行指令时使用一个或多个控件。示例控件包括在m4字段264中并且如以上参考图2b所述。
[0072]
在执行乘与加指令(200,250)的一个实施例时,第三操作数(例如,如以下所述获得)被乘以第二操作数(例如,使用r2寄存器或从第二操作数地址获得)以获得乘积(在本文中也称为中间乘积),且接着第一操作数(例如,使用r1寄存器获得)被加到该乘积。在一个实施例中,对于仅加运算,如果m4字段206、264位0(仅加220)是例如1,则该运算是将第二操作数加到第一操作数。来自第三操作数浮点寄存器的值被忽略(例如,不从寄存器读取该值并且被假定是预定值,例如1)。和被放置在第一操作数位置。
[0073]
乘与加运算可以被概括为:
[0074]
op1=op
3 x op2+op1[0075]
第三和第二十六进制浮点操作教被相乘,从而形成中间乘积,然后第一操作数被代数地加到中间乘积,从而形成中间结果。精确地保持中间乘积的指数和分数以及中间结果。如果中间结果为非零,则中间结果被归一化并被截断为操作数格式,且随后被放置在第一操作数位置处。在一个示例中,对于仅加运算,如果m4字段206、264位3(舍入模式222)为1,则中间结果被归一化并舍入到最接近于离开零的操作数格式,然后被放置在第一操作数
位置处。
[0076]
结果的符号由代数规则确定,除非中间结果小数为零,在这种情况下,使结果为正的真零。
[0077]
当归一化结果的特征将超过127并且小数不为零时,存在十六进制浮点指数溢出异常。通过使结果特征128小于正确值来完成该运算,并且发生十六进制浮点指数溢出的程序中断。结果被归一化,并且符号和小数保持正确。
[0078]
假设可以用正确的特征来表示归一化结果,则不针对中间值识别十六进制浮点指数溢出。
[0079]
当归一化结果的特征将小于零并且分数不为零时,存在十六进制浮点下溢异常。如果控制寄存器中的十六进制浮点指数下溢掩码位(例如程序状态字)是1,则通过使结果特征128大于正确值来完成运算,并且发生针对十六进制浮点指数下溢的程序中断。结果被归一化,并且符号和分数保持正确。如果控制寄存器中的十六进制浮点指数下溢掩码位为0,则不发生程序中断;相反,通过使结果为正的真零来完成运算。
[0080]
假设可以用正确的特性来表示归一化结果,则不针对输入操作数和中间值识别十六进制浮点指数下溢。
[0081]
参考图3-4描述了根据本发明的一个或多个方面的基于乘与加指令的执行的处理的一个实施例的进一步细节。在一个示例中,处理器(诸如通用处理器104)被用于执行指令。作为示例,处理器的硬件被用于执行指令。硬件可以在处理器内或耦合到处理器以用于从处理器接收指令,处理器例如获得、解码和设置指令以在硬件上执行。其它变型是可能的。
[0082]
参考图3,首先,获得(例如,取回、接收、提供等)300并执行310诸如乘与加指令之类的指令。在一个示例中,获得312第一操作数和第二操作数。此外,在一个实施例中,获得314在此被称为仅加控件220的控件。如果控件指示将执行乘与加运算(例如,仅加控件被设置为零)316,则获得第三操作数(例如,从使用r3指定的一个或多个寄存器读取第三操作数)318,并且将第二操作数和第三操作数相乘以获得乘积320。否则,如果控件指示要执行仅加运算(例如,仅加控件被设置为1)316,则假定第三操作数的值为1,并且不读取r3指定的一个或多个寄存器。将第二操作数和第三操作数(例如,第三操作数具有十六进制浮点的预定值1)相乘以获得乘积320。
[0083]
将第一操作数与该乘积相加以获得中间结果322。从中间结果获得结果324,并将该结果放置于第一操作数位置中(例如,使用r1指定的一个或多个寄存器中)326。在一个示例中,可以执行舍入来获得结果,如本文所述。
[0084]
参考图4描述关于从中间结果获得结果324的进一步细节。在一个示例中,中间乘积的指数和小数以及中间结果被精确地保持400。如果中间结果为非零410,则中间结果被归一化以提供归一化结果420。此外,确定是否要执行舍入430。作为一个示例,通过检查舍入模式控件222来进行该确定。如果将不执行舍入,则归一化结果被截断为操作数格式,从而提供将被放置在第一操作数位置处的结果440。然而,如果将执行舍入430,则归一化结果被舍入到例如最接近于离开零的操作数格式,以获得将被放置在第一操作数位置处的结果450。在一个示例中,舍入模式仅用于仅加运算。在其他示例中,舍入模式可以用于其他运算。
[0085]
尽管描述了乘与加指令的各个字段和寄存器,但是本发明的一个或多个方面可以使用其它的、附加的和/或更少的字段和/或寄存器,和/或其它大小的字段和/或寄存器等。许多变型是可能的。例如,可以使用隐式寄存器来代替指令的显式指定的寄存器和/或字段,和/或可以使用显式指定的寄存器和/或字段来代替隐式寄存器和/或字段。其它变型也是可能的。
[0086]
如本文所述,在一个方面,提供单个指令(例如,硬件/软件接口处的单个架构化机器指令,例如,乘与加指令)以执行乘法、加法、归一化、截断和/或舍入运算。该指令例如是在指令集架构(isa)中定义的直接执行乘与加运算和/或仅加运算的硬件指令。降低了与执行乘与加运算相关的程序的复杂度。此外,改进了操作的性能,并因此改进了处理器的性能。硬件指令执行减少了执行时间并提高了性能。
[0087]
通过使用单个指令而不是多个指令来执行至少乘和加运算(以及可选地,归一化、截断和/或舍入;和/或其它运算),由于不需要多次通过硬件/软件接口而提高了性能。此外,通过作为一个指令的一部分执行处理,处理保持在执行运算的处理单元(例如,浮点处理单元)中,而不需要在完成处理之前更新处理器的寄存器文件的寄存器(即,用于在存储器和功能单元(例如,浮点处理单元)之间存储数据的处理器寄存器阵列)。这改进了执行时间并减少了对处理器资源的使用。
[0088]
根据一个或多个方面,通过使用乘法指令(其也将算术作为一个指令的一部分来执行)来执行算术(例如,加法),准确度得以增加,且通过使用单个指令而非多个指令,复杂性得以降低,性能得以改进,且对系统资源的使用得以减少。此外,通过还提供舍入模式作为一个指令的一部分,在一个示例中,误差可以被扰动为全部在一个方向上或者在两个方向上为绝对误差的一半。截断的误差是0到+1ulp,但是舍入在-1/2ulp到+1/2ulp之间,其中ulp表示操作数的最后位置中的单元的权重。
[0089]
尽管在本文的一个示例中,算术运算是加法,但是在其他示例中,可以执行其他算术运算,包括但不限于减法。许多变型是可能的。
[0090]
本发明的一个或多个方面不可分地依赖于计算机技术,并促进计算机内的处理,从而提高其性能。使用单个架构化机器指令来至少执行乘和加运算,以及可选地执行归一化、舍入和/或截断,通过降低复杂度、减少对资源使用以及提高处理速度来改进计算环境内的性能。此外,使用单个架构化机器指令来执行乘和加(并且在一个实施例中,对结果进行归一化、舍入和/或截断和/或执行其他运算)通过降低复杂度、减少对资源的使用以及提高处理速度来改进计算环境中的性能。数据和/或指令可以用于许多技术领域,例如计算机处理、医疗处理、工程、汽车技术、制造等。借助提供执行算术运算中的优化,通过减少执行时间来改进这些技术领域。
[0091]
参考图5a-5c描述了与本发明的一个或多个方面相关的促进计算环境内的处理的实施例的进一步细节。
[0092]
参考图5a,在一个实施例中,执行指令以执行从针对该指令所配置的多个操作中选择的操作500。在一个实例中,执行指令包括确定指令的选定操作数(例如,第三操作数)的值502。确定选定操作数的值是基于指令的控件504,且包括例如基于指令的控件具有第一值,从选定操作数位置读取指令的选定操作数以获得选定操作数的值506,以及基于指令的控件具有第二值,使用预定值作为选定操作数的值508。将该值与指令的另一个选定操作
数(例如,第二操作数)相乘以获得乘积510。使用该乘积及指令的选定操作数(例如,第一操作数)执行算术运算以获得中间结果512。从中间结果获得结果514,以及将该结果放置在选定位置中516。
[0093]
通过使用单个指令来执行乘法和算术运算,提高了性能,并减少了资源的利用率。通过使用单个架构化指令来执行乘法和算术运算,可以比使用软件范例更有效地执行某些任务,例如乘法和算术运算。乘法和/或算术运算执行得更快,从而减少执行时间且改进处理器和/或整体系统性能。
[0094]
通过使用被配置为执行多个运算的单个指令,性能得到改进,并且资源的利用率得到降低。通过使用被配置为执行乘法和算术运算或仅算术运算(其中执行乘法以提供算术运算的更高精度)的单个架构化指令,可以比使用软件范例更有效地执行某些任务,例如乘法和算术运算。乘法和算术运算执行得更快,从而减少执行时间,以及改进处理器和/或整体系统性能。
[0095]
此外,在一个示例中,通过使用也执行算术的乘法指令来执行算术(例如,加法),准确度提高,以及通过使用单个指令而不是多个指令,复杂度降低,性能提高,并且对系统资源的使用减少。例如,两个操作数的相乘产生两倍宽度的乘积,并且通过将算术运算合并在单个指令中,完整的两倍宽度乘积可以参与算术而不是经舍入或经截断的乘积。作为一个示例,两个6十六进制数位的相乘产生12十六进制数位乘积。假如它们是单独的运算,则在下一个运算之前该乘积将被截断为6个十六进制数位。通过利用完整的中间结果,合并运算更加准确。换句话说,对于具有截断的浮点简单运算,通常获得0到1个最后位置单位(ulp)的误差。如果存在乘法和截断,则乘积具有1个ulp的误差,然后如果存在乘积与加数的相加,则这导致另一个1个ulp的误差,总共2个ulp的误差。然而,如果这是一个复合运算,则仅有1个ulp的误差。对于二进制浮点是如此,对于十六进制浮点,情况甚至更糟。
[0096]
在一个实例中,使用预定值作为选定操作数的值包括:在不从选定操作数位置(例如,至少一个寄存器)读取选定操作数的情况下使用预定值518。这通过消除对一个或多个寄存器的读取而改进了系统性能。
[0097]
作为示例,参考图5b,预定值包括值1 520。
[0098]
在一个实例中,执行指令还包括:确定舍入运算是否将被执行522,以及基于确定舍入运算将被执行,对中间结果的版本执行舍入运算以获得结果524。中间结果的版本包括例如归一化结果526。
[0099]
通过使用单个指令来执行乘法、算术、舍入和/或归一化运算,改进了性能,且减少了资源的利用率。通过使用单个架构化指令来执行乘法、算术、舍入和/或归一化运算,可以比使用软件范例更有效地执行某些任务,例如乘法、算术、舍入和/或归一化运算。乘法、算术、舍入和/或归一化运算执行得更快,从而减少执行时间,且改进处理器和/或整体系统性能。
[0100]
在一个实例中,确定舍入运算是否将被执行包括:检查指令的舍入模式控件528,且基于舍入模式控件等于一个值,舍入运算将被执行530。此外,在一个实施例中,通过包括舍入模式控件作为单个指令的一部分,可以控制误差的方向和大小。在一个示例中,误差可以被扰动为全部在一个方向上或者在两个方向上为绝对误差的一半。截断的误差是0到+1ulp,但是舍入在-1/2ulp到+1/2ulp之间。
[0101]
在一个示例中,获得结果包括将中间结果归一化以获得归一化结果532,以及使用归一化结果来获得结果534。
[0102]
此外,参考图5c,在一个示例中,使用归一化结果来获得结果包括:确定舍入运算是否将被执行540,以及基于确定舍入运算将被执行,对归一化结果进行舍入以获得结果542。此外,在一个示例中,基于确定舍入运算将不被执行,截断归一化结果以获得结果544。
[0103]
通过使用单个指令来执行乘法、算术、归一化、舍入和/或截断运算,改进了性能,且减少了资源的利用率。通过使用单个架构化指令来执行乘法、算术、归一化、舍入和/或截断运算,可以比使用软件范例更有效地执行某些任务,例如乘法、算术、归一化、舍入和/或截断运算。乘法、算术、归一化、舍入和/或截断运算执行得更快,从而减少了执行时间,并改进了处理器和/或整体系统性能。
[0104]
作为示例,选定位置包括由指令的至少一个字段指定的至少一个寄存器546。
[0105]
在一个示例中,该控件是仅加控件,算术运算包括加法运算548。基于控件具有第二值,控件指示指令将执行仅加运算,其中另一个选定操作数被乘以预定值1 550。此外,基于控件具有第一值,控件指示指令将执行乘并加运算并且另一个选定操作数被乘以从选定操作数位置读取的值552。
[0106]
通过使用单个指令来执行乘与加运算,提高了性能,并且减少了资源的利用率。通过使用单个架构化指令来执行乘与加运算,可以比使用软件范例更有效地执行某些任务,例如乘法和加法运算。乘法和加法运算执行得更快,从而减少执行时间,并改进处理器和/或整体系统性能。
[0107]
通过使用被配置为执行多个操作的单个指令,性能得到改进,并且资源的利用率得到降低。通过使用被配置为执行乘与加运算和/或仅加运算(其中执行乘法以提供用于加法操作的更高精度但不以其他方式影响求和)的单个架构化指令,可以比使用软件范例更有效地执行某些任务,例如乘法和加法运算。乘法和加法运算执行得更快,从而减少执行时间且改进处理器和/或整体系统性能。
[0108]
此外,在一个示例中,通过使用还在单个指令中执行算术的乘法指令来执行算术(例如,加法),准确度提高,以及通过使用单个指令而不是多个指令,复杂度降低,性能提高,并且对系统资源的使用减少。
[0109]
其它变型和实施例是可能的。
[0110]
本发明的各方面可由许多类型的计算环境使用。参考图6a描述了用于结合和使用本发明的一个或多个方面的计算环境的另一个示例。作为示例,图6a的计算环境基于由纽约阿蒙克的国际商业机器公司提供的硬件架构。然而,z/architecture硬件架构仅是一个示例架构。同样,计算环境可以基于其它架构,包括但不限于x86架构、国际商业机器公司的其它架构和/或其它公司的架构。intel是英特尔公司或其子公司在美国和其它国家/地区的商标或注册商标。
[0111]
在一个示例中,计算环境10包括中央电子复合体(cec)11。中央电子复合体11包括多个组件,例如耦合到一个或多个处理器(也称为中央处理单元(cpu))13和输入/输出(i/o)子系统14的存储器12(也称为系统存储器、主存储器、主存、中央存储、存储)。
[0112]
i/o子系统14可以是中央电子复合体的一部分或者与其分离。它引导主存储器12和耦合到中央电子复合体的输入/输出控制单元15以及输入/输出(i/o)设备16之间的信息
流。
[0113]
可以使用许多类型的i/o设备。一种特定类型是数据存储设备17。数据存储设备17可以存储一个或多个程序18、一个或多个计算机可读程序指令19和/或数据等。计算机可读程序指令可以被配置为执行本发明的各方面的实施例的功能。
[0114]
中央电子复合体11可包括和/或耦合到可移动/不可移动、易失性/非易失性计算机系统存储介质。例如,它可以包括和/或耦合到不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)、用于从可移动的、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器、和/或用于从可移动的、非易失性光盘(诸如cd-rom、dvd-rom或其它光学介质)读取或向其写入的光盘驱动器。可理解,其它硬件和/或软件组件可以与中央电子复合体11结合使用,示例包括但不限于:微码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据档案存储系统等。
[0115]
此外,中央电子复合体11可以与许多其它通用或专用计算系统环境或配置一起操作。适合与中央电子复合体11一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机(pc)系统、服务器计算机系统、瘦客户端、胖客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统以及包括任何上述系统或设备的分布式云计算环境等。
[0116]
中央电子复合体11在一个或多个实施例中提供逻辑分区和/或虚拟化支持。在一个实施例中,如图6b所示,存储器12包括例如一个或多个逻辑分区20、管理逻辑分区的系统管理程序21、以及处理器固件22,系统管理程序21的一个示例是由纽约阿蒙克的国际商业机器公司提供的处理器资源/系统管理器(pr/sm
tm
)。如这里所使用的,固件包括例如处理器的微代码。它包括例如在实现更高级的机器代码时使用的硬件级指令和/或数据结构。在一个实施例中,它包括例如专有代码,该专有代码通常作为包括可信软件的微代码或底层硬件专用的微代码来传递,并且控制操作系统对系统硬件的访问。pr/sm是国际商业机器公司在至少一个管辖区内的商标或注册商标。
[0117]
每个逻辑分区20能够作为单独的系统。即,每个逻辑分区可以被独立地重置,运行客户操作系统23(诸如由纽约阿蒙克的国际商业机器公司提供的操作系统),或其它控制代码24(诸如耦合设施控制代码(cfc)),并与不同的程序25一起操作。在逻辑分区中运行的操作系统或应用程序看似访问完全且完整的系统,但在现实中,仅其一部分可用。尽管z/os操作系统是作为示例提供的,但是根据本发明的一个或多个方面,也可以使用由国际商业机器公司和/或其它公司提供的其它操作系统。
[0118]
存储器12耦合到cpu 13(图6a),其是可分配给逻辑分区的物理处理器资源。例如,逻辑分区20包括一个或多个逻辑处理器,每个逻辑处理器代表可被动态分配给逻辑分区的物理处理器资源13的全部或一部分。
[0119]
在又一实施例中,中央电子复合体提供虚拟机支持(具有或不具有逻辑分区支持)。如图6c所示,中央电子复合体11的存储器12包括例如一个或多个虚拟机26、管理虚拟机的虚拟机管理器(例如系统管理程序27)以及处理器固件28。系统管理程序27的一个示例是由纽约阿蒙克的国际商业机器公司提供的管理程序。系统管理程序有时被称为主机。z/vm是国际商业机器公司在至少一个管辖区的商标或注册商标。
[0120]
中央电子复合体的虚拟机支持提供了操作大量虚拟机26的能力,每个虚拟机能够与不同的程序29一起操作并且运行客户操作系统30,诸如操作系统。每个虚拟机26能够用作单独的系统。也就是说,每个虚拟机可以被独立地重置,运行客户操作系统,并且利用不同的程序来操作。在虚拟机中运行的操作系统或应用程序看似访问整个系统,但是实际上,仅有一部分是可用的。尽管作为示例提供z/vm和linux,但是根据本发明的一个或多个方面,可以使用其它虚拟机管理器和/或操作系统。注册商标是根据来自linus torvalds的专有被许可人linux基金会的分许可人在全球基础上使用的。
[0121]
参考图7a描述了用于结合和使用本发明的一个或多个方面的计算环境的另一个实施例。在该示例中,计算环境36包括经由例如一个或多个总线40和/或其它连接彼此耦合的例如本机中央处理单元(cpu)37、存储器38、以及一个或多个输入/输出设备和/或接口39。作为示例,计算环境36可包括纽约阿蒙克的国际商业机器公司提供的处理器;加利福尼亚州帕罗奥图的惠普公司提供的具有ii处理器的hp superdome;和/或基于由国际商业机器公司、惠普、英特尔公司、甲骨文和/或其它公司提供的架构的其它机器。powerpc是国际商业机器公司在至少一个管辖区内的商标或注册商标。itanium是英特尔公司或其子公司在美国和其它国家/地区的商标或注册商标。
[0122]
本机中央处理单元37包括一个或多个本机寄存器41,诸如在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
[0123]
此外,本机中央处理单元37执行存储在存储器38中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器38中的仿真器代码42。该代码使得在一个架构中配置的计算环境能够仿真另一个架构。例如,仿真器代码42允许基于z/architecture硬件架构.之外的架构的机器(诸如powerpc处理器、hp superdome服务器或其它)来仿真z/architecture硬件架构,并且执行基于z/architecture硬件架构开发的软件和指令。
[0124]
参考图7b描述了与仿真器代码42有关的进一步细节。存储在存储器38中的客户指令43包括软件指令(例如,与机器指令相关),其被开发为在不同于本机cpu 37的架构中执行。例如,客户指令43可以被设计为在基于z/architecture硬件架构的处理器上执行,但是替代地,在本机cpu 37上被仿真,本机cpu 37可以是例如intel itanium ii处理器。在一个示例中,仿真器代码42包括指令取回例程44,以从存储器38获得一个或多个客户指令43,并且可选地为所获得的指令提供本地缓冲。它还包括指令转译例程45,以确定所获得的客户指令的类型,并且将客户指令转译成一个或多个对应的本机指令46。该转译包括例如标识要由客户指令执行的功能以及选择(一个或多个)本机指令来执行该功能。
[0125]
此外,仿真器代码42包括仿真控制例程47以使得执行本机指令。仿真控制例程47可以使本机cpu 37执行仿真一个或多个先前获得的客户指令的本机指令的例程,并且在该执行结束时,将控制返回到指令取回例程以仿真下一个客户指令或一组客户指令的获得。本机指令46的执行可包括将数据从存储器38加载到寄存器中;将数据从寄存器存储回存储器;或者执行由转换例程确定的某种类型的算术或逻辑运算。
[0126]
例如,每个例程以软件实现,该软件存储在存储器中并由本机中央处理单元37执行。在其它示例中,例程或操作中的一个或多个以固件、硬件、软件或其某种组合实现。被仿
真的处理器的寄存器可使用本机cpu的寄存器41或通过使用存储器38中的位置来仿真,在实施例中,客户指令43、本机指令46和仿真器代码42可驻留在同一个存储器中,或者可被分配在不同的存储器设备之间。
[0127]
根据本发明的一个或多个方面,可以被仿真的示例指令是本文描述的乘与加指令。
[0128]
上述计算环境仅是可以使用的计算环境的示例。可以使用其它环境,包括但不限于:非分区环境、分区环境、云环境和/或仿真环境;实施例不限于任何一种环境。尽管在此描述了计算环境的各种示例,但是本发明的一个或多个方面可以与许多类型的环境一起使用。本文提供的计算环境仅仅是示例。
[0129]
每个计算环境能够被配置为包括本发明的一个或多个方面。
[0130]
一个或多个方面可以涉及云计算。
[0131]
可理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
[0132]
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
[0133]
特征如下:
[0134]
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
[0135]
广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和pda)使用的标准机制来访问。
[0136]
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
[0137]
快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
[0138]
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明性。
[0139]
服务模型如下:
[0140]
软件即服务(saas):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
[0141]
平台即服务(paas):提供给消费者的能力是将消费者创建或获取的应用部署到云
基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
[0142]
基础设施即服务(iaas):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,该软件可包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
[0143]
部署模型如下:
[0144]
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
[0145]
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
[0146]
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
[0147]
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
[0148]
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
[0149]
现在参考图8,描述了说明性的云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点52,本地计算设备例如个人数字助理(pda)或蜂窝电话54a、台式计算机54b、膝上型计算机54c和/或汽车计算机系统54n。节点52可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施即服务、平台即服务和/或软件即服务,云消费者不需要为其维护本地计算设备上的资源。可理解,图8中所示的计算设备54a-n的类型仅旨在说明,并且计算节点52和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算机化设备通信。
[0150]
现在参考图9,示出了由云计算环境50(图8)提供的一组功能抽象层。可预先理解,图9中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
[0151]
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于risc(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
[0152]
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户机75。
[0153]
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计
算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的计帐单或开发票。在一个示例中,这些资源可包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其它资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(sla)规划和履行85提供对云计算资源的预安排和采购,其中根据sla预期未来需求。
[0154]
工作负载层90提供了可以利用云计算环境的功能的示例。可从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及乘与加(和/或归一化和/或舍入和/或截断处理)96。
[0155]
本发明的各方面可以是处于任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),该计算机可读程序指令用于使处理器执行本发明的各方面。
[0156]
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
[0157]
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0158]
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如smalltalk、c++等)和过程编程语言(例如“c”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
[0159]
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
[0160]
这些计算机可读程序指令可被提供给计算机或其它可编程数据处理装置的处理器以产生机器,使得经由计算机或其它可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其它设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的方面的指令。
[0161]
计算机可读程序指令还可以被加载到计算机、其它可编程数据处理装置或其它设备上,以使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其它可编程装置或其它设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
[0162]
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的顺序发生。例如,连续示出的两个框实际上可以作为一个步骤来实现,同时、基本同时、以部分或全部时间重叠的方式执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
[0163]
除了上述之外,可以由提供客户环境管理的服务提供商来提供、部署、管理、服务等一个或多个方面。例如,服务提供商可以创建、维护、支持等执行一个或多个客户的一个或多个方面的计算机代码和/或计算机基础设施。作为回报,服务提供商可以例如在订阅和/或费用协议下从客户接收支付。另外或替代地,服务提供商可以从向一个或多个第三方销售广告内容接收支付。
[0164]
在一个方面,可以部署应用以执行一个或多个实施例。作为一个示例,应用的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。
[0165]
作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。
[0166]
作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。计算机系统包括计算机可读介质,其中计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。
[0167]
尽管上文描述了各种实施例,但这些仅是实例。例如,其它架构的计算环境可用于结合和/或使用一个或多个方面。此外,可以使用不同的指令或操作。另外,可以使用不同类型的寄存器和/或不同的寄存器。许多变型是可能的。
[0168]
本文描述了各个方面。此外,在不背离本发明的各方面的精神的情况下,许多变化是可能的。应当注意,除非另外不一致,否则本文所述的每个方面或特征及其变型可与任何其它方面或特征组合。
[0169]
此外,其它类型的计算环境也可以受益并被使用。作为示例,适于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦合到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间采用的本地存储器、大容量存储装置和缓冲存储器,其提供至少一些程序代码的临时存储以减少在执行期间必须从大容量存储装置取得代码的次数。
[0170]
输入/输出或i/o设备(包括但不限于键盘、显示器、定点设备、dasd、磁带、cd、dvd、拇指驱动器和其它存储介质等)可以直接或通过中间i/o控制器耦合到系统。网络适配器也可耦合到系统,以使数据处理系统能够通过中间专用或公共网络耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是几种可用的网络适配器类型。
[0171]
本文所用的术语仅是为了描述特定实施例的目的,而不是旨在进行限制。如本文所用,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,在本说明书中使用术语“包括”和/或“包含”时,指定所描述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
[0172]
如果存在,下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与具体要求保护的其它要求保护的元件组合执行功能的任何结构、材料或动作。出于说明和描述的目的呈现了对一个或多个实施例的描述,但是该描述不旨在是穷尽的或者限于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域的其它普通技术人员能够理解具有适合于所设想的特定用途的各种修改的各种实施例。

技术特征:
1.一种用于促进计算环境内的处理的计算机程序产品,所述计算机程序产品包括:一个或多个计算机可读存储介质和共同存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令用于执行一种方法,所述方法包括:执行指令以执行从针对所述指令所配置的多个操作中选择的操作,执行所述指令包括:确定所述指令的选定操作数的值,其中,确定所述值是基于所述指令的控件并且包括:基于所述指令的所述控件具有第一值,从选定操作数位置读取所述指令的所述选定操作数以获得所述选定操作数的所述值;以及基于所述指令的所述控件具有第二值,使用预定值作为所述选定操作数的所述值;将所述值与所述指令的另一个选定操作数相乘以获得乘积;使用所述乘积以及所述指令的选定操作数执行算术运算以获得中间结果;从所述中间结果获得结果;以及将所述结果放置在选定位置中。2.根据权利要求1所述的计算机程序产品,其中,使用所述预定值作为所述选定操作数的所述值包括:在不从所述选定操作数位置读取所述选定操作数的情况下使用所述预定值,所述选定操作数位置包括至少一个寄存器。3.根据权利要求1或2所述的计算机程序产品,其中,所述预定值包括值1。4.根据前述权利要求中任一项所述的计算机程序产品,其中,执行所述指令还包括:确定舍入运算是否将被执行;以及基于确定所述舍入运算将被执行,对所述中间结果的版本执行所述舍入运算以获得所述结果。5.根据权利要求4所述的计算机程序产品,其中,所述中间结果的所述版本包括归一化结果。6.根据权利要求4所述的计算机程序产品,其中,确定所述舍入运算是否将被执行包括:检查所述指令的舍入模式控件,其中,基于所述舍入模式控件等于一个值,所述舍入运算将被执行。7.根据前述权利要求中任一项所述的计算机程序产品,其中,获得所述结果包括:将所述中间结果进行归一化以获得归一化结果;以及使用所述归一化结果获得所述结果。8.根据权利要求7所述的计算机程序产品,其中,使用所述归一化结果获得所述结果包括:确定舍入运算是否将被执行;基于确定所述舍入运算将被执行,对所述归一化结果进行舍入以获得所述结果;以及基于确定所述舍入运算将不被执行,截断所述归一化结果以获得所述结果。9.根据前述权利要求中任一项所述的计算机程序产品,其中,所述选定位置包括由所述指令的至少一个字段指定的至少一个寄存器。10.根据前述权利要求中任一项所述的计算机程序产品,其中,所述控件是仅加控件,所述算术运算包括加法运算,并且基于所述控件具有所述第二值,所述控件指示所述指令将执行仅加运算,其中所述另一个选定操作数被乘以所述预定值1,以及基于所述控件具有
所述第一值,所述控件指示所述指令将执行乘并加运算并且所述另一个选定操作数被乘以从所述选定操作数位置读取的所述值。11.一种用于促进计算环境内的处理的计算机系统,所述计算机系统包括:存储器;以及与所述存储器通信的处理器,其中,所述计算机系统被配置为执行一种方法,所述方法包括:执行指令以执行从针对所述指令所配置的多个操作中选择的操作,执行所述指令包括:确定所述指令的选定操作数的值,其中,确定所述值是基于所述指令的控件并且包括:基于所述指令的所述控件具有第一值,从选定操作数位置读取所述指令的所述选定操作数以获得所述选定操作数的所述值;以及基于所述指令的所述控件具有第二值,使用预定值作为所述选定操作数的所述值;将所述值与所述指令的另一个选定操作数相乘以获得乘积;使用所述乘积以及所述指令的选定操作数执行算术运算以获得中间结果;从所述中间结果获得结果;以及将所述结果放置在选定位置中。12.根据权利要求11所述的计算机系统,其中,使用所述预定值作为所述选定操作数的所述值包括:在不从所述选定操作数位置读取所述选定操作数的情况下使用所述预定值,所述选定操作数位置包括至少一个寄存器,其中,所述预定值包括值1。13.根据权利要求11或12所述的计算机系统,其中,执行所述指令还包括:确定舍入运算是否将被执行;以及基于确定所述舍入运算将被执行,对所述中间结果的版本执行所述舍入运算以获得所述结果。14.根据权利要求13所述的计算机系统,其中,确定所述舍入运算是否将被执行包括:检查所述指令的舍入模式控件,其中,基于所述舍入模式控件等于一个值,所述舍入运算将被执行。15.根据权利要求11至14中任一项所述的计算机系统,其中,获得所述结果包括:将所述中间结果进行归一化以获得归一化结果;以及使用所述归一化结果获得所述结果。16.一种促进计算环境内的处理的计算机实现的方法,所述计算机实现的方法包括:执行指令以执行从针对所述指令所配置的多个操作中选择的操作,执行所述指令包括:确定所述指令的选定操作数的值,其中,确定所述值是基于所述指令的控件并且包括:基于所述指令的所述控件具有第一值,从选定操作数位置读取所述指令的所述选定操作数以获得所述选定操作数的所述值;以及基于所述指令的所述控件具有第二值,使用预定值作为所述选定操作数的所述值;将所述值与所述指令的另一个选定操作数相乘以获得乘积;使用所述乘积以及所述指令的选定操作数执行算术运算以获得中间结果;从所述中间结果获得结果;以及
将所述结果放置在选定位置中。17.根据权利要求16所述的计算机实现的方法,其中,使用所述预定值作为所述选定操作数的所述值包括:在不从所述选定操作数位置读取所述选定操作数的情况下使用所述预定值,所述选定操作数位置包括至少一个寄存器,其中,所述预定值包括值1。18.根据权利要求16或17所述的计算机实现的方法,其中,执行所述指令还包括:确定舍入运算是否将被执行;以及基于确定所述舍入运算将被执行,对所述中间结果的版本执行所述舍入运算以获得所述结果。19.根据权利要求18所述的计算机实现的方法,其中,确定所述舍入运算是否将被执行包括:检查所述指令的舍入模式控件,其中,基于所述舍入模式控件等于一个值,所述舍入运算将被执行。20.根据权利要求16至19中任一项所述的计算机实现的方法,其中,获得所述结果包括:将所述中间结果进行归一化以获得归一化结果;以及使用所述归一化结果获得所述结果。

技术总结
执行指令以执行从针对该指令所配置的多个操作中选择的操作,执行指令包括:确定指令的选定操作数的值。确定值是基于指令的控件并且包括:基于指令的控件具有第一值,从选定操作数位置读取指令的选定操作数以获得选定操作数的值,以及基于指令的控件具有第二值,使用预定值作为选定操作数的值。将该值与指令的另一个选定操作数相乘以获得乘积。使用乘积以及指令的选定操作数执行算术运算以获得中间结果。从中间结果获得结果,以及将该结果放置在选定位置中。在选定位置中。在选定位置中。


技术研发人员:E
受保护的技术使用者:国际商业机器公司
技术研发日:2022.03.01
技术公布日:2023/10/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐