十进制移位和除法指令的制作方法

文档序号:17727650发布日期:2019-05-22 02:37阅读:617来源:国知局
十进制移位和除法指令的制作方法

一个或多个方面一般涉及计算环境内的处理,尤其涉及改进此类处理。

在计算环境的处理器内执行的应用程序控制处理器的行为。应用程序是使用编程语言创建的,此类编程语言旨在将指令传递给处理器。存在各种类型的编程语言,并且每种语言可以使用一种或多种类型的编码来表示数据。

例如,缩放的十进制整数(也被称为缩放的二进制编码的十进制/缩放的bcd)是许多cobol和pl/i程序中以及db2数据库管理系统中的公共数据类型。缩放的bcd数是bcd数加上格式描述符(n.k),其中bcd数被解释为在小数点之前具有n位并且在小数点之后具有k位(即,具有k个分数位),或者要被乘以10-k的十进制整数。

对具有同一k参数的缩放的bcd数据执行加法和减法是直接的,因为数据被正确对准并且结果具有相同的分数位数。除法是更复杂的,因为两个数字的整数除法提供了商的整数部分。缺少k个分数位。

例如,如果:

a=4444.44,b=3333.33,q=0001.333

正常的整数除法传递商q=1,但不传递分数位。此外,用于执行bcd除法运算的传统代码可能相当复杂,需要冗长的运算序列。



技术实现要素:

通过提供用于促进计算环境中的处理的计算机程序产品,克服了现有技术的缺点并提供了额外的优点。计算机程序产品包括存储介质,存储介质可由处理电路读取并存储用于由处理电路执行以执行方法的指令。方法例如包括获得用于执行的指令,指令用于执行移位和除法运算。执行指令,并且执行包括在指定方向以选择的量对值移位以提供被除数。所选择的量是用户定义的。由除数除以被除数以获得商。选择商的至少一个子集作为结果。将结果放在选择的位置,结果被用于计算环境内的处理。使用执行缩放的bcd除法运算的单个指令通过消除冗长的指令序列并减少要获取、解码和执行的指令的数量来改进性能。

在一个示例中,值是十进制整数,并且商的至少一个子集是商的所选择的位数。所选择的位数包括整数位数和分数位数。

此外,在一个实施例中,执行包括确定结果的符号,以及将符号包括在所选择的位置中。作为一个示例,确定符号包括检查由指令提供的控件。控件例如被提供在指令的掩码字段中。

此外,在一个实施例中,执行包括从指令的一个或多个字段获得值,检查值的有效性,以及基于该检查指示值是有效的而执行移位。

在示例中,指定方向是左,所选择的量是从指令的字段中获得的,并且所选择的位置是寄存器,该寄存器是使用指令的至少一个字段来指定的。至少一个字段包括指定寄存器编号的寄存器字段和指定要被附加到寄存器编号的扩展值的扩展字段。

本文还描述并要求保护与一个或多个方面有关的方法和系统。此外,本文还描述并可要求保护与一个或多个方面有关的服务。

通过本文描述的技术实现了额外的特征和优点。本文详细描述了其它实施例和方面,并且这些实施例和方面被认为是所要求保护的方面的一部分。

附图说明

在说明书结尾的权利要求中作为示例特别指出并清楚地要求保护一个或多个方面。通过结合附图的以下详细描述,一个或多个方面的前述和目的、特征和优点是显而易见的,在附图中:

图1a描绘了结合和使用本发明的一个或多个方面的计算环境的一个示例;

图1b描绘了根据本发明的一方面的图1a中的处理器的进一步细节;

图2a描绘了结合和使用本发明的一个或多个方面的计算环境的另一示例;

图2b描绘了图2a中的存储器的进一步细节;

图3a描绘了根据本发明的一方面的矢量移位和除法十进制指令的一个示例;

图3b描绘了根据本发明的一方面的图3a中的矢量移位和除法十进制指令的立即字段的一个实施例;

图3c描绘了根据本发明的一方面的图3a中的矢量移位和除法十进制指令的掩码字段的一个实施例;

图4描绘了根据本发明的一方面的执行矢量移位和除法十进制指令的框图的一个示例。

图5a图示了bcd除法运算的一个示例;

图5b图示了bcd除法运算的另一示例;

图5c-5d图示了根据本发明的一方面的bcd移位和除法运算的示例;

图6a-6b描绘了根据本发明的一方面的促进计算环境中的包括执行矢量移位和除法十进制指令的处理的一个示例;

图7描绘了云计算环境的一个实施例;以及

图8描绘了抽象模型层的一个示例。

具体实施方式

一个或多个方面涉及通过提供用于执行移位和除法运算的单个指令(例如,在硬件/软件接口处的单个架构机器指令)来替代冗长的指令序列的能力来改进计算环境内的处理。在一个示例中,指令(在本文中称为矢量移位和除法十进制指令)以由用户定义的量将输入值移位以提供被除数,并且然后由除数除以被除数以生成商。商的至少一部分被提供作为结果。

指令执行例如提供具有整数位加上k个分数位的商的十进制整数除法运算,其中k是输入到指令的输入参数。k指定要计算多少分数位数。

参考图1a描述结合和使用本发明的一个或多个方面的计算环境的一个实施例。在一个示例中,计算环境基于由纽约阿蒙克的国际商业机器公司(internationalbusinessmachinescorporation)提供的z/架构(z/architecture)。在2015年3月的ibm公开号为sa22-7832-10的“z/架构的工作原理(z/architectureprinciplesofoperation)”中描述了z/架构的一个实施例,其全部内容通过引用并入本文。z/architecture是美国纽约阿蒙克的国际商业机器公司的注册商标。

在另一个示例中,计算环境基于由纽约阿蒙克的国际商业机器公司提供的power架构。在2015年4月9日的国际商业机器公司的“powerisatm版本2.07b(powerisatmversion2.07b)”中描述了power架构的一个实施例,其全部内容通过引用并入本文。powerarchitecture是美国纽约阿蒙克的国际商业机器公司的注册商标。

计算环境还可以基于其它架构,包括但不限于intelx86架构。也存在其它示例。

如图1a所示,计算环境100例如包括具有例如计算机系统/服务器12的节点10,其可与许多其它通用或专用计算系统环境或配置一起操作。可适用于与计算机系统/服务器12一起操作的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机(pc)系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统以及包括任何上述系统或设备的分布式云计算环境等。

计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块可以包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在许多计算环境中实践,包括但不限于通过通信网络链接的远程处理设备执行的任务的分布式云计算环境。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。

如图1a所示,计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及总线18,总线18将各种系统组件(包括系统存储器28)耦接到处理器16。

总线18表示若干类型的总线结构中的任何一种或多种,包括使用各种总线架构中的任何总线架构的存储器总线或存储器控制器、外围总线、加速图形端口、以及处理器或本地总线。作为示例而非限制性地,此类架构包括工业标准架构(isa)总线、微通道架构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)本地总线和外围组件互连(pci)总线。

计算机系统/服务器12通常包括各种计算机系统可读介质。此类介质可以是计算机系统/服务器12可访问的任何可用介质,并且此类介质包括易失性和非易失性介质、可移动和不可移动介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为示例,可以提供存储系统34用于对不可移动的非易失性磁介质(未示出并且通常称为“硬盘驱动器”)进行读取和写入。尽管未示出,但是可以提供用于对可移动的非易失性磁盘(例如,“软盘”)进行读取和写入的磁盘驱动器,以及用于对可移动的非易失性光盘(诸如cd-rom,dvd-rom或其它光学介质的盘)进行读取或写入的光盘驱动器。在这种情况下,每个驱动器都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有被配置为执行本发明的实施例的功能的一组(例如,至少一个)程序模块。

作为示例而非限制性地,具有一组(至少一个)程序模块42的程序/实用程序40、以及操作系统、一个或多个应用程序、其它程序模块和程序数据可以存储在存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据中的每一个或其某种组合可以包括网络环境的实现。程序模块42通常执行如本文所描述的本发明实施例的功能和/或方法。

计算机系统/服务器12还可以与一个或多个外部设备14(例如,键盘、指向设备、显示器24等)通信,与一个或多个使得用户能够与计算机系统/服务器12交互的设备通信,和/或与使得计算机系统/服务器12能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)通信。此类通信可以通过输入/输出(i/o)接口22进行。此外,计算机系统/服务器12还可以经由网络适配器20通过一个或多个网络(例如,局域网(lan)、广域网(wan)和/或公共网络(例如,因特网))通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它组件通信。应该理解,尽管未示出,但是其它硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器和数据档案存储系统等。

在一个示例中,处理器16包括用于执行指令的多个功能组件。如图1b所示,这些功能组件例如包括用于获取要执行的指令的指令获取组件120、用于解码所获取的指令并获得解码的指令的操作数的指令解码单元122、用于执行解码的指令的指令执行组件124、用于访问用于指令执行的存储器的存储器访问组件126(在需要的情况下)、以及用于提供所执行的指令的结果的写回组件130。根据本发明的一方面,这些组件中的一个或多个可用于执行十进制移位和除法运算136,如下面进一步描述的。

在一个实施例中,处理器16还包括由一个或多个功能组件使用的一个或多个寄存器140。

参考图2a描述了结合和使用一个或多个方面的计算环境的另一实施例。在该示例中,计算环境200例如包括经由例如一个或多个总线208和/或其它连接彼此耦接的本机中央处理单元(cpu)202、存储器204、以及一个或多个输入/输出设备和/或接口206。作为示例,计算环境200可以包括由纽约阿蒙克的国际商业机器公司提供的powerpc处理器或pseries服务器、由加利福尼亚州帕洛阿尔托的惠普公司(hewlettpackardco.)提供的配备intelitaniumii处理器的hpsuperdome、和/或基于国际商业机器公司、惠普、英特尔(intel)、甲骨文(oracle)或其它公司提供的架构的其它机器。

本机中央处理单元202包括一个或多个本机寄存器210,例如在环境内处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括代表任何特定时间点的环境状态的信息。

此外,本机中央处理单元202执行存储在存储器204中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器204中的仿真器代码212。该代码使得在一个架构中配置的计算环境能够仿真另一架构。例如,仿真器代码212允许基于除z/架构之外的体系结构的机器(例如,powerpc处理器、pseries服务器、hpsuperdome服务器等)仿真z/架构并执行基于z/架构开发的软件和指令。

参考图2b描述了与仿真器代码212有关的进一步细节。存储在存储器204中的访客指令250包括被开发为在不同于本机cpu202的架构中执行的软件指令(例如,与机器指令相关)。例如,访客指令250可能已被设计为在z/架构处理器上执行,但是相反地,在本机cpu202上进行仿真,本机cpu202可以是例如intelitaniumii处理器。在一个示例中,仿真器代码212包括指令获取例程252以从存储器204获得一个或多个访客指令250并且可选地为所获得的指令提供本地缓存。仿真器代码212还包括指令转换例程254以确定已获得的访客指令的类型并将访客指令转换成一个或多个相应的本机指令256。该转换例如包括识别要由访客执行的功能并选择执行该功能的(多个)本机指令。

此外,仿真器212包括仿真控制例程260以使本机指令被执行。仿真控制例程260可以使本机cpu202执行仿真一个或多个先前获得的访客指令的本机指令的例程,并且在该执行结束时将控制返回到指令获取例程以仿真获得下一访客指令或一组访客指示。本机指令256的执行可以包括将数据从存储器204加载到寄存器中,将数据从寄存器存储回存储器,或者执行如由转换例程确定的某种类型的算术或逻辑运算。

每个例程例如以软件实现,该软件存储在存储器中并由本机中央处理单元202执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或一些其组合来实现。仿真处理器的寄存器可以使用本机cpu的寄存器210或通过使用存储器204中的位置来仿真。在实施例中,访客指令250、本机指令256和仿真器代码212可以驻留在同一存储器中或者可以分配在不同的存储器设备中。

如本文所使用的,固件包括例如处理器的微代码、毫代码和/或宏代码。例如,固件包括用于实现更高级机器代码的硬件级指令和/或数据结构。在一个实施例中,固件例如包括通常作为微代码传送的专有代码,其包括针对底层硬件的受信软件或微代码并控制对系统硬件的操作系统访问。

已获得、转换并执行的访客指令250例如是本文描述的矢量移位和除法十进制指令。具有一种架构(例如,z/架构)的指令从存储器中被获取、转换并表示为另一架构(例如,powerpc、pseries、英特尔等)的一系列本机指令256。这些本机指令然后被执行。

本文描述了涉及矢量移位和除法十进制指令的实施例的细节,包括由至少一个处理器(在本机或仿真系统中)执行和指令的字段。根据本发明的一方面,矢量移位和除法十进制指令以用户定义的量将输入值移位以提供被除数,然后将由除数除以被除数来产生商。商的至少一部分(例如,最右边的31位)被提供作为结果。该结果包括整数位和k个分数位,其中k等于移位量。这通过采用单个指令(例如,单个架构的机器指令)替换冗长的指令序列来执行bcd除法运算来改进计算机性能。因此,本发明的各方面与计算机技术和计算机处理的改进密不可分。

在一个实施例中,矢量移位和除法十进制指令是矢量设施的一部分,其提供例如范围从一到十六个元素的固定大小的矢量。每个矢量包括由该设施中定义的矢量指令操作的数据。在一个实施例中,如果矢量由多个元素组成,则每个元素与其它元素并行处理。指令完成不会在完成所有元素的处理之前发生。在其它实施例中,元素被部分地并行和/或顺序处理。

矢量指令可以实现为各种架构的一部分,包括但不限于z/架构、power架构、x86、ia-32、ia-64等。尽管本文描述的实施例是针对z/架构的,但是本文描述的矢量指令和一个或多个其它方面可以基于许多其它架构。z/架构只是一个示例。

在其中矢量设施被实现为z/架构的一部分以使用矢量寄存器和指令的一个实施例中,矢量启用控件和在指定控制寄存器(例如,控制寄存器0)中的寄存器控件例如被设置为1。如果安装了矢量设施并且在没有启用控制集的情况下执行矢量指令,则数据异常被识别。如果未安装矢量设施并执行矢量指令,则操作异常被识别。

在一个实施例中,存在32个矢量寄存器,并且其它类型的寄存器可以映射到矢量寄存器的象限。例如,寄存器文件可以包括32个矢量寄存器,每个寄存器的长度为128位。16个浮点寄存器(长度为64位)可以覆盖矢量寄存器。因此,作为示例,当修改浮点寄存器2时,矢量寄存器2也被修改。针对其它类型的寄存器的其它映射也是可能的。

矢量数据呈现在存储器中,例如,以与其它数据格式相同的从左到右的顺序呈现。数据格式的编号为0-7的位构成存储器中最左边(最低编号)的字节位置中的字节,位8-15构成下一连续位置中的字节,依此类推。在另一示例中,矢量数据可以以另一顺序(例如,从右到左)呈现在存储器中。

参考图3a-3c描述矢量移位和除法十进制指令的一个示例。如图所示,该指令具有多个字段,并且字段可以具有与其相关联的下标编号。与指令的字段相关联的下标编号表示该字段应用的操作数。例如,与矢量寄存器v1相关联的下标编号1表示寄存器在v1中包括第一操作数,依此类推。寄存器操作数的长度是一个寄存器,例如128位。

参见图3a,在一个实施例中,矢量移位和除法十进制指令300包括指示矢量移位和除法十进制运算的操作数字段302a、302b、用于指定第一矢量寄存器(v1)的第一矢量寄存器字段304、用于指定第二矢量寄存器(v2)的第二矢量寄存器字段306、用于指定第三矢量寄存器(v3)的第三矢量寄存器字段308、掩模字段(m5)310、立即字段(i4)312、以及寄存器扩展位(rxb)字段314,下面将描述其中的每一个。在一个实施例中,字段是分开的并且彼此独立。然而,在其它实施例中,多于一个字段可被组合。下面描述关于这些字段的进一步信息。

矢量寄存器字段304用于指示要存储第一操作数的矢量寄存器,第一操作数是如下的结果:移位第二操作数以获得被除数,由第三操作数(除数)除以被除数以获得商,并选择商的至少一部分作为结果。第二操作数包含在使用矢量寄存器字段306指定的矢量寄存器中,第三操作数(除数)包含在使用矢量寄存器字段308指定的矢量寄存器中。在一个示例中,矢量寄存器字段304、306、308中的每一个与rxb字段314一起使用以指定矢量寄存器。

例如,rxb字段314包括用于矢量寄存器指定的操作数的最高有效位。未由指令指定的寄存器标志数据(designation)的位被保留并设置为0。例如,将最高有效位连接到矢量寄存器字段的四位寄存器标志数据的左侧,以创建五位矢量寄存器标志数据。

在一个示例中,rxb字段包括四位(例如,位0-3),并且位被如下定义:

0:用于指令的第一矢量寄存器标志数据(例如,在位8-11中)的最高有效位。

1:用于指令的第二矢量寄存器标志数据(例如,在位12-15中)的最高有效位(如果存在)。

2:用于指令的第三矢量寄存器标志数据(例如,在位16-19中)的最高有效位(如果存在)。

3:用于指令的第四矢量寄存器标志数据(例如,在位32-35中)的最高有效位(如果存在)。

例如,每个位由汇编器取决于寄存器编号而设置为0或1。例如,对于寄存器0-15,位被设置为0,对于寄存器16-31,位被设置为1,等等。

在一个实施例中,每个rxb位是用于包括一个或多个矢量寄存器的指令中的特定位置的扩展位。例如,rxb的位0是位置8-11(其例如被分配给v1)的扩展位,等等。特别地,对于矢量寄存器,使用例如寄存器字段的四位字段来指定包含操作数的寄存器,其中添加其对应的寄存器扩展位(rxb)作为最高有效位。例如,如果四位字段是0110并且扩展位是0,则五位字段00110指示寄存器数6。在另一实施例中,rxb字段包括附加位,并且多于一位用作针对每个矢量或位置的扩展。

立即(i4)字段312指定包括移位控件的第四操作数。如图3b所示,例如,i4字段312包括以下:

保留:位0-2被保留并包含零。在其它方面,在一个示例中,识别出规范异常。

移位量(shamt)330:位3-7包含无符号的二进制数,其指定第二操作数被移位(例如,左)以形成被除数的位数。符号位置不参与移位。向空的位的位置提供零。

在一个示例中,m5字段310包括以下控件,如图3c所示:

强制(force)操作数2正(p2)340:当位0为1时,第二操作数符号被视为正号,并且不检查其的有效性。当位0为0时,在运算中使用第二操作数符号并检查其有效性。

强制操作数3正(p3)342:当位1为1时,第三操作数符号被视为正号,并且不检查其有效性。当位1为0时,在运算中使用第三操作数符号并检查其有效性。

强制操作数1正(p1)344:当位2为1时,放在第一操作数中的结果的符号被强制为正,并使用符号代码1111。当位2为0时,放在第一操作数中的结果的符号是用于商的符号的选择的符号代码。

条件代码设置(cs)346:当第3位为0时,条件代码未设置并且保持不变。当位3为1时,条件代码按照下面的结果条件代码部分中指定的来设置。

结果条件代码:

在一个示例中,当cs位为1时,如下设置条件代码:

0结果为0,没有溢出

1结果小于0,没有溢出

2结果大于0,没有溢出

3溢出

尽管描述了各种字段和寄存器,但是本发明的一个或多个方面可以使用其它的、附加的或更少的字段或寄存器,或其它大小的字段或寄存器等。许多变形是可能的。例如,可以使用隐含寄存器而不是指令的明确指定的寄存器或字段。此外,可以使用除了矢量寄存器之外的寄存器。同样,其它变化也是可能的。

在操作中,以第四操作数中指定的位数向左移位(被除数)的第二操作数被第三操作数(除数)除,并且所选择的位数(例如,商的最右边的三十一位数)被放在第一操作数位置。操作数和结果例如是带符号的压缩十进制格式。

在一个示例中,在带符号的压缩十进制格式中,每个字节包含两个十进制数字(d),除了最右边的字节,其包含十进制数字右侧的符号(s)。十进制算术使用操作数来执行,并以带符号的压缩十进制格式生成结果。

第二和第三操作数的符号代码可被修改以分别用于强制操作数2正(p2)控件和强制操作数3正(p3)控件的操作中。

在一个示例中,检查所有数字代码的有效性。除被强制操作数2正(p2)控件或强制操作数3正(p3)控件所覆盖外,检查符号代码的有效性。

如果第一操作数不能包含商的所有最左边的非零位,则发生十进制溢出。操作完成,并且通过忽略溢出位来获得结果。如果条件代码集(cs)标志为1,则设置条件代码3。如果所包括的程序掩码中的十进制溢出控件(例如,作为程序状态字的一部分),则发生用于十进制溢出的程序中断。

当商的最右边的31位为非0并且强制操作数1正(p1)控件为0时,根据被除数和除数符号的代数规则确定结果的符号并使用所选择的符号代码。当商的最右边的31位为0并且p1控件为0时,结果的符号为正,采用所选择的符号代码1100。当p1控件为1时,结果的符号为正,采用符号代码1111。

如果除数为零并且使用的除数符号代码有效,则识别出十进制除法异常。这包括用零除零的情况。当强制操作数3正(p3)位为0时所使用的除数符号代码是第三操作数符号代码,以及当强制操作数3正(p3)位为1时所使用的除数符号代码是正号代码。

参考图4描述关于指令的操作的进一步细节。在一个示例中,基于获得并执行矢量移位和除法十进制指令,由至少一个处理器执行图4的逻辑。

参见图4,首先,在步骤400,从使用指令的v2和v3字段指定的寄存器获得第二操作数和第三操作数(除数)。在一个示例中,检查第二操作数和第三操作数的数字的有效性。特别地,在一个示例中,检查所有数字代码的有效性。在一个示例中,如果一个或多个数字无效,则查询402,然后处理完成并且可以指示错误。然而,如果第二操作数和第三操作数的数字有效,则在步骤404,继续处理以获得移位量。在一个示例中,移位量是用户定义的并由指令提供(例如,i4312)。

在步骤406,在指定方向(例如,左)上以移位量移位第二操作数以获得被除数。在步骤408,由第三操作数除以被除数以获得商。在步骤410,商的所选择的位的范围(例如,最右边的31位)被选择作为结果,其被放置在第一操作数位置(例如,使用v1指定的寄存器)。

此外,在步骤412,确定结果的符号。例如,当商的最右边的31位是非零并且强制操作数1正(p1)控件为0时,根据被除数和除数符号的代数规则确定结果的符号,并使用所选择的符号代码。当商的最右边的31位为0并且p1控件为0时,结果的符号为正,采用选择的符号代码1100。当p1控件为1时,结果的符号为正,采用符号代码1111。

如果除数为零并且使用的除数符号代码有效,则识别出十进制除法异常。这包括用零除零的情况。当强制操作数3正(p3)位为0时,使用的除数符号代码是第三操作数符号代码,当强制操作数3为正(p3)位为1时,使用的除数符号代码是正号代码。

在步骤414,所确定的符号的符号代码被放置在第一操作数位置(例如,在右侧)。这完成了移位和除法指令的一个实施例的处理。

在另一实施例中,移位可以向右和/或移位的方向可以通过指令的控制来选择。其它变化是可能的。

以下提供关于十进制整数除法的进一步细节。

一个先前的十进制除法指令(dp)计算由b除以a的商q和余数r,使得a=q*b+r。a最多可以有31位长度,但b最多可以有15位并且位数比a少。通过限制除数的长度,对除数类型进行严格的限制。

采用另一十进制指令vdp,a和b都可以具有最多31位的全宽,从而放宽dp指令的长度限制。然而,两个指令均只提供整数部分,而不提供分数位。

对于缩放的bcd除法(n.k),除了商的整数部分之外,还使用具有多个除法运算的冗长例程来获得k个分数位。

参考图5a-5b进一步描述以上内容。

如图5a所示,当执行两个全宽bcd数502a、502b(例如,31位)的整数除法500时,商504是bcd整数,其最多具有例如31位,而不提供分数位。

对于缩放的bcd除法运算,输入的31位被解释为一些“n”整数位(在小数点之前)和一些“k”分数位(在小数点之后)。期望的商通常具有与操作数相同的分数位数。

如图5b所示,考虑示例:q(7.3)=a(4.3)/b(4.3)。

图5b和以下示例表明即使增强的vdp也仅提供商的整数部分,而不提供期望的分数位。

以下是一些示例:

a=8888.888b=0000.003→q=2962962.666

b=3333.333→q=0000002.666

为了获得所期望的商的分数位数,需要一些额外的处理。

对于具有(n.k)的缩放bcd除法,考虑以下情况:

1.n+k+k<32:则在除法运算之前,“a”可以右移k,得到a’=a*10k。然后可以通过a’(n+k,0)和b(n.k)的常规十进制除法获得具有k个分数位的期望的商。

2.n+k+k>31:“a”不向右移动k,因为会超过最大位数。这使b是否只可具有半长(dp)或b是否可具有全长(vdp)会有所不同。

在半长的情况下,并且k<15

dp:a=q1*b+r1:计算商和余数;应注意,r1<b…最多具有15位

srp:r’=r1<<k

dp:r’=q2*b+r2:不需要计算商和余数

q=(q1<<k)+q2

在b是31位的情况下,上述算法不工作,因此,操作数被转换为十进制浮点(dfp),执行浮点除法,并且提取期望的尾数位。此外,根据dfp实施,这仍然可能还不够,并且将使用更加复杂的技术。

因此,在任一情况下,执行缩放的bcd除法是冗长的例程。

根据本发明的一方面,以执行十进制移位和除法运算的单个指令(例如,诸如架构硬件指令的架构指令)替换执行缩放的bcd除法的冗长指令序列。

在一个实施例中,如图5c所示,根据本发明的一方面,指令(矢量移位和除法十进制)指定宽度sh(550)。a操作数(552)向左移位sh位,获得a’=a<<sh=a*10sh。然后用b操作数(554)除以a,得到整数商q(556)。在一个示例中,选择最右边的31位作为结果(558)。当商q具有多于31个有效位时,检测到溢出(560)。

如图5d所示,这也可以被解释为计算a/b的商570的整数和分数部分,并且因此选择sh分数位(572)和31-sh整数位(574)。

根据本发明的一方面提供的指令将具有宽度(n.k)的缩放bcd除法运算转换为具有sh=k的单一移位和除法指令,从而采用单个指令替换冗长的指令序列,由此提高执行缩放bcd除法运算的速度,并改进计算环境内的处理。该指令还提供了更大的灵活性,因为提供了具有任意(即,不固定、可变的)缩放比例k的缩放除法。该指令提供商的整数和分数位的位组的任意定义,并基于任意位组执行溢出检查。此类操作可以由多种类型的应用程序以及计算环境的其它处理使用。

参考图6a-6b描述与促进计算环境内的处理有关的进一步细节,包括执行用于执行移位和除法运算的指令。

参见图6a,在步骤600,获得执行移位和除法运算的指令(例如,架构机器指令),并且在步骤602由至少一个处理器执行。该执行例如包括:在步骤604,在指定方向上以选择的量对值进行移位以提供被除数,所选择的量是用户定义的。在步骤606,用除数除以被除数以获得商。在步骤608,选择商的至少一个子集(例如,最右边的31位)作为结果。在步骤610,将结果放置在所选择的位置,该结果将用于计算环境中的处理。

作为一个示例,该值是十进制整数(612),并且商的至少一个子集是商的所选择的位数,所选择的位数包括整数位数和分数位数(614)。

在另一实施例中,执行还包括:在步骤616确定结果的符号,在步骤618将符号包括在所选择的位置。在一个示例中,在步骤620,确定符号包括检查由指令提供的控件,以及控件被提供在例如指令的掩码字段中(622)。

此外,参考图6b,在一个示例中,执行包括:在步骤624,从指令的一个或多个字段获得值,在步骤626,检查该值的有效性,在步骤628,基于该检查指示值有效而执行移位。

作为示例,指定方向是左(630);从指令的字段获得所选择的量(632),并且所选择的位置是寄存器,使用指令的至少一个字段来指定寄存器(634)。该至少一个字段包括指定寄存器号的寄存器字段和指定要附加到寄存器号的扩展值的扩展字段(636)。

本文描述的是使用单个架构指令来执行bcd除法的设施。该指令取代了冗长的指令序列,并改进了计算机处理和性能。

尽管提供了各种示例,但是在不脱离所要求保护的方面的精神的情况下,可以进行变化。例如,在其它实施例中,包括在由指令使用的寄存器和/或字段中的值可以在其它位置,例如存储器位置等。许多其它变体是可能的。

一个或多个方面可以涉及云计算。

应当预先理解,尽管本公开包括关于云计算的详细描述,但是本文所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。

云计算是服务交付的模型,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源能够以最小的管理成本或与服务提供商进行最少的交互来快速部署和释放。可配置计算资源例如是:网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务。这种云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。

特征包括:

按需自助式服务:云的消费者在无需与服务提供商进行人为交互的情况下,能够单方面自动地按需部署计算能力,诸如服务器时间和网络存储。

广泛的网络接入:计算能力通过网络获得,并通过标准机制访问,该标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如,移动电话,膝上型电脑和pda)的使用。

资源池:提供商的计算资源被归入资源池,以使用多租户模式为多个消费者提供服务,其中根据需求动态分配和重新分配不同的实体资源和虚拟资源。通常消费者不能控制或者并不知晓所提供的资源的确切位置,但是可能能够在更高抽象级别(例如,国家,州或数据中心)指定位置,因此具有位置无关性。

迅速弹性:可以迅速、有弹性地(有时是自动地)部署计算能力,以快速扩展,并且能迅速释放来快速缩小。对于消费者来说,用于部署的可用计算能力通常显得是无限的,并能在任意时候都能获取任意数量的计算能力。

可测量的服务:云系统通过利用适于服务类型(例如,存储,处理,带宽和活跃用户帐户)的某种抽象级别的计量能力来自动控制和优化资源使用。可以监视,控制和报告资源使用,从而为所使用的服务的提供者和消费者提供透明度。

服务模型如下:

软件即服务(saas):提供给消费者的能力是使用提供商在云基础架构上运行的应用。可以通过诸如网络浏览器(例如,基于网络的电子邮件)的瘦客户机接口从各种客户机设备访问应用。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统、存储、甚至单个应用能力,可能的例外是有限的特定于用户的应用配置设置。

平台即服务(paas):提供给消费者的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用由提供商支持的编程语言和工具创建。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统或存储,但可以控制已部署的应用以及可能的应用托管环境配置。

基础架构即服务(iaas):提供给消费者的能力是部署处理、存储、网络和其它基础计算资源,其中消费者能够部署和运行任意软件,该软件可以包括操作系统和应用。消费者既不管理也不控制底层云基础设施,而是控制操作系统,存储,部署的应用,以及可能对选择的网络组件(例如,主机防火墙)的有限控制。

部署模型如下:

私有云:云基础架构仅为组织运行。它可以由组织或第三方管理,可以存在于该组织内部或外部。

共同体云:云基础架构由多个组织共享,并支持具有共同利害关系(例如,任务使命,安全要求,策略和合规考虑)的特定共同体。它可能由组织或第三方管理,并且可能存在于该共同体内部或外部。

公共云:云基础架构向公众或大型产业群提供,并由销售云服务的组织所有。

混合云:云基础架构由两个或多个云(私有云,共同体云或公共云)组成,这些云仍然是独特的实体,但通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发流量分担技术)绑定在一起。

云计算环境是面向服务的,特点集中在无状态,低耦合性,模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础设施。一个这样的节点是图1a中描绘的节点10。

计算节点10仅是合适的云计算节点的一个示例,并且不旨在对本文描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,云计算节点10能够实现和/或执行上文阐述的任何功能。

现在参考图7,描绘了示意性的云计算环境50。如图所示,云计算环境50包括云的消费者使用本地计算设备可以与其通信的一个或多个计算节点10,本地计算设备例如是个人数字助理(pda)或蜂窝电话54a,台式计算机54b,膝上型计算机54c和/或汽车计算机系统54n。节点10可以彼此通信。它们可以在一个或多个网络中物理地或虚拟地分组(未示出),例如如上所述的私有云,共同体云,公共云或混合云,或其组合。这样,云的消费者无需维护本地计算设备上的资源就能够允许云计算环境50提供基础架构即服务、平台即服务和/或软件即服务。应该理解,图7中所示的计算设备54a-n的类型仅仅是示意性的,而计算节点10和云计算环境50可以(例如,使用网络浏览器)通过任何类型的网络和/或网络可寻址连接与任何类型的计算设备通信。

现在参考图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应该事先理解图8中所示的组件、层和功能仅仅是示意性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:

硬件和软件层60包括硬件和软件组件。硬件组件的示例包括主机61;基于risc(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。

虚拟层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73(包括虚拟私有网络);虚拟应用和操作系统74;和虚拟客户端75。

在一个示例中,管理层80可以提供下面描述的功能。资源供应功能81提供用于在云计算环境内执行任务的计算资源和其它资源的动态获取。计量和定价功能82在云计算环境内对资源的使用进行成本跟踪,并且提供用于消费这些资源的帐单或发票。在一个示例中,这些资源可以包括应用软件许可。安全功能为云的消费者和任务提供身份认证,以及为数据和其它资源提供保护。用户门户功能83为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84提供云计算资源的分配和管理,以满足所需的服务水平。服务水平协议(sla)计划和履行功能85为根据sla预测的对云计算资源未来需求提供预先安排和供应。

工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制与导航91;软件开发和生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;和指令处理96。

本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个(或多个)计算机可读存储介质,其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。

计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字通用光盘(dvd)、记忆棒、软盘、机械编码设备(诸如在其上记录有指令的打孔卡或凹槽内凸起结构)、以及前述的任何合适的组合。如在此使用的计算机可读存储介质不应被解释为暂态信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。

在此描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是以一种或多种编程语言的任意组合编写的汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或源代码或目标代码,该一种或多种编程语言包括诸如smalltalk、c++等的面向对象的编程语言,以及诸如“c”编程语言或类似的编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立的软件包执行、部分地在用户的计算机上且部分地在远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,经由使用互联网服务提供商的互联网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化定制电子电路以执行计算机可读程序指令,以便执行本发明的各方面。

在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实施。

这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以制造机器,使得经由计算机的处理器或其它可编程数据处理装置执行的指令创建用于实施流程图和/或框图的一个框或多个框中指定的功能/动作的部件。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机、可编程数据处理装置和/或其它设备以特定方式作用,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实施流程图和/或框图的一个框或多个框中指定的功能/动作的各方面的指令。

计算机可读程序指令还可以被加载到计算机、其它可编程数据处理装置或其它设备上,以使得一系列操作步骤在计算机、其它可编程装置或其它设备上执行以产生计算机实施的过程,这样在计算机、其它可编程装置或其它设备上执行的指令实施在流程图和/或框图的一个框或多个框中指定的功能/动作。

附图中的流程图和框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示模块、区段或指令的一部分,其包括用于实施指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所标注的功能可以不按图中所示的顺序发生。例如,视所涉及的功能而定,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作或执行专用硬件和计算机指令的组合的基于硬件的专用系统来实施。

除了上述之外,可以由提供客户环境管理的服务提供商提供、给予、部署、管理、服务一个或多个方面。例如,服务提供商可以创建、维护、支持计算机代码和/或为一个或多个客户执行一个或多个方面的计算机基础设施。作为回报,服务提供商可以例如根据订阅和/或费用协议从客户接收付款。附加地或替代地,服务提供商可以从向一个或多个第三方销售广告内容来接收付款。

在一个方面,可以部署应用程序以执行一个或多个实施例。作为一个示例,应用程序的部署包括提供可操作以执行一个或多个实施例的计算机基础结构。

作为另一方面,可以部署计算基础设施,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。

作为又一方面,可以提供一种用于集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统中。该计算机系统包括计算机可读介质,其中该计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。

尽管以上描述了各种实施例,但这些仅是示例。例如,具有其它体系结构的计算环境可用于合并和使用一个或多个实施例。此外,可以使用不同的指令,指令格式,指令字段和/或指令值。许多变化是可能的。

此外,其它类型的计算环境可以受益并被使用。作为示例,适用于存储和/或执行程序代码的数据处理系统是可用的,其包括通过系统总线直接或间接耦接到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间使用的本地存储器,大容量存储和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少执行期间必须从大容量存储重新取回代码的次数。

输入/输出或i/o设备(包括但不限于键盘,显示器,指示设备,dasd,磁带,cd,dvd,拇指驱动器和其它存储介质等)可以直接耦接到系统或通过介入i/o控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。

这里使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。

以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1