CN109791479A - 十进制乘法和移位指令 - Google Patents

十进制乘法和移位指令 Download PDF

Info

Publication number
CN109791479A
CN109791479A CN201780060587.7A CN201780060587A CN109791479A CN 109791479 A CN109791479 A CN 109791479A CN 201780060587 A CN201780060587 A CN 201780060587A CN 109791479 A CN109791479 A CN 109791479A
Authority
CN
China
Prior art keywords
result
instruction
computer
value
described instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780060587.7A
Other languages
English (en)
Other versions
CN109791479B (zh
Inventor
S·M·穆勒
R·科普兰
J·布拉德伯里
S·卡罗格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN109791479A publication Critical patent/CN109791479A/zh
Application granted granted Critical
Publication of CN109791479B publication Critical patent/CN109791479B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/491Computations with decimal numbers radix 12 or 20.
    • G06F7/4915Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Control Of Transmission Device (AREA)

Abstract

执行用于执行乘法和移位运算的指令。执行包括将由指令获得的第一值和第二值相乘以获得乘积。乘积在指定方向上被移动用户定义的选择的量以提供结果,并将结果放在选定的位置中。该结果被用于计算环境内的处理。

Description

十进制乘法和移位指令
背景技术
一个或多个方面一般涉及计算环境内的处理,尤其涉及改进此类处理。
在计算环境的处理器内执行的应用程序控制处理器的行为。应用程序是使用编程语言创建的,此类编程语言旨在将指令传递给处理器。存在各种类型的编程语言,并且每种语言可以使用一种或多种类型的编码来表示数据。
例如,缩放的十进制整数(也被称为缩放的二进制编码的十进制/缩放的BCD)是许多COBOL和PL/I程序中以及DB2数据库管理系统中的公共数据类型。缩放的BCD数是BCD数加上格式描述符(n.k),其中BCD数被解释为在小数点之前具有n位并且在小数点之后具有k位(即,具有k个分数位),或者要被乘以10-k的十进制整数。
对具有同一k参数的缩放的BCD数据执行加法和减法是直接的,因为数据被正确对准并且结果具有相同的分数位数。乘法是更复杂的,因为两个(n.k)数字的全宽中间乘积具有(2n.2k)位,但期望的结果通常是(2n.k)。
传统的十进制乘法指令传递最低有效L位,并且可能具有严格的长度限制。用于执行缩放BCD乘法的代码可能相当复杂,需要多次相乘、移位和加法运算。
发明内容
通过提供用于促进计算环境中的处理的计算机程序产品,克服了现有技术的缺点并提供了额外的优点。计算机程序产品包括存储介质,存储介质可由处理电路读取并存储用于由处理电路执行以执行方法的指令。方法例如包括获得用于执行的指令,指令用于执行乘法和移位运算。执行指令,并且执行包括将由指令获得的第一值和第二值相乘以获得乘积。乘积在指定方向上以选择的量被移位以提供结果,所选择的量是用户定义的。结果被放在选择的位置中,并被用于计算环境内的处理。使用执行缩放的BCD乘法运算的单个指令通过消除冗长的指令序列并减少要获取、解码和执行的指令的数量来改进性能。
作为一个示例,结果包括基于以所选择的量的移位而选择的乘积的多个位。
此外,在一个实施例中,执行包括确定结果的符号,并且将符号包括在所选择的位置中,结果和符号提供要在计算环境内的处理中使用的选择的值。
在一个实施例中,确定符号包括检查由指令提供的控件。控件例如被提供在指令的掩码字段中。
此外,在一个实施例中,执行包括从指令的一个或多个字段获得第一值和第二值,检查第一值和第二值的有效性,以及基于该检查指示第一值和第二值是有效的而执行相乘。
在示例中,指定方向是右,所选择的量是从指令的字段中获得的,并且所选择的位置是寄存器,该寄存器是使用指令的至少一个字段来指定的。至少一个字段包括指定寄存器编号的寄存器字段和指定要被附加到寄存器编号的扩展值的扩展字段。
本文还描述并要求保护与一个或多个方面有关的方法和系统。此外,本文还描述并可要求保护与一个或多个方面有关的服务。
通过本文描述的技术实现了额外的特征和优点。本文详细描述了其它实施例和方面,并且这些实施例和方面被认为是所要求保护的方面的一部分。
附图说明
在说明书结尾的权利要求中作为示例特别指出并清楚地要求保护一个或多个方面。通过结合附图的以下详细描述,一个或多个方面的前述和目的、特征和优点是显而易见的,在附图中:
图1A描绘了结合和使用本发明的一个或多个方面的计算环境的一个示例;
图1B描绘了根据本发明的一方面的图1A中的处理器的进一步细节;
图2A描绘了结合和使用本发明的一个或多个方面的计算环境的另一示例;
图2B描绘了图2A中的存储器的进一步细节;
图3A描绘了根据本发明的一方面的矢量乘法和移位十进制指令的一个示例;
图3B描绘了根据本发明的一方面的图3A中的矢量乘法和移位十进制指令的立即字段的控件的一个实施例;
图3C描绘了根据本发明的一方面的图3A中的矢量乘法和移位十进制指令的掩码字段的控件的一个实施例;
图4描绘了根据本发明的一方面的执行矢量乘法和移位十进制指令的框图的一个示例。
图5A图示了BCD乘法运算的一个示例;
图5B图示了BCD乘法运算的另一示例;
图5C图示了根据本发明的一方面的BCD乘法和移位运算的示例;
图6A-6B描绘了根据本发明的一方面的促进计算环境中的包括执行矢量乘法和移位十进制指令的处理的一个示例;
图7描绘了云计算环境的一个实施例;以及
图8描绘了抽象模型层的一个示例。
具体实施方式
一个或多个方面涉及通过提供用于执行缩放的二进制编码的十进制(BCD)运算的单个指令(例如,在硬件/软件接口处的单个架构机器指令)来替代冗长的指令序列的能力来改进计算环境内的处理。在一个示例中,该指令(在此称为矢量乘法和移位十进制指令)将两个全宽BCD输入(例如,每个31位)相乘,生成全宽中间乘积(例如,62位),然后允许选择中间乘积的多个位(例如,任何31位范围)作为结果。当到指定位数(例如,31位数范围)的任何剩余的数字为非零时,检测到溢出。这也可以看作是对中间乘积应用向右移位:R=(A*B)>>sh,其中sh是移位。
该指令允许选择结果作为完整乘积的任意位集,并根据该任意位集执行溢出检查。
参考图1A描述结合和使用本发明的一个或多个方面的计算环境的一个实施例。在一个示例中,计算环境基于由纽约阿蒙克的国际商业机器公司(International BusinessMachines Corporation)提供的z/架构(z/Architecture)。在2015年3月的IBM公开号为SA22-7832-10的“z/架构的工作原理(z/Architecture Principles of Operation)”中描述了z/架构的一个实施例,其全部内容通过引用并入本文。Z/ARCHITECTURE是美国纽约阿蒙克的国际商业机器公司的注册商标。
在另一个示例中,计算环境基于由纽约阿蒙克的国际商业机器公司提供的Power架构。在2015年4月9日的国际商业机器公司的“Power ISA TM版本2.07B(Power ISA TMVersion 2.07B)”中描述了Power架构的一个实施例,其全部内容通过引用并入本文。POWERARCHITECTURE是美国纽约阿蒙克的国际商业机器公司的注册商标。
计算环境还可以基于其它架构,包括但不限于Intel x86架构。也存在其它示例。
如图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服务器、由加利福尼亚州帕洛阿尔托的惠普公司(Hewlett Packard Co.)提供的配备Intel Itanium II处理器的HP Superdome、和/或基于国际商业机器公司、惠普、英特尔(Intel)、甲骨文(Oracle)或其它公司提供的架构的其它机器。
本机中央处理单元202包括一个或多个本机寄存器210,例如在环境内处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括代表任何特定时间点的环境状态的信息。
此外,本机中央处理单元202执行存储在存储器204中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器204中的仿真器代码212。该代码使得在一个架构中配置的计算环境能够仿真另一架构。例如,仿真器代码212允许基于除z/架构之外的体系结构的机器(例如,PowerPC处理器、pSeries服务器、HP Superdome服务器等)仿真z/架构并执行基于z/架构开发的软件和指令。
参考图2B描述了与仿真器代码212有关的进一步细节。存储在存储器204中的访客指令250包括被开发为在不同于本机CPU 202的架构中执行的软件指令(例如,与机器指令相关)。例如,访客指令250可能已被设计为在z/架构处理器上执行,但是相反地,在本机CPU202上进行仿真,本机CPU 202可以是例如Intel Itanium II处理器。在一个示例中,仿真器代码212包括指令获取例程252以从存储器204获得一个或多个访客指令250并且可选地为所获得的指令提供本地缓存。仿真器代码212还包括指令转换例程254以确定已获得的访客指令的类型并将访客指令转换成一个或多个相应的本机指令256。该转换例如包括识别要由访客执行的功能并选择执行该功能的(多个)本机指令。
此外,仿真器212包括仿真控制例程260以使本机指令被执行。仿真控制例程260可以使本机CPU 202执行仿真一个或多个先前获得的访客指令的本机指令的例程,并且在该执行结束时将控制返回到指令获取例程以仿真获得下一访客指令或一组访客指示。本机指令256的执行可以包括将数据从存储器204加载到寄存器中,将数据从寄存器存储回存储器,或者执行如由转换例程确定的某种类型的算术或逻辑运算。
每个例程例如以软件实现,该软件存储在存储器中并由本机中央处理单元202执行。在其它示例中,一个或多个例程或操作以固件、硬件、软件或一些其组合来实现。仿真处理器的寄存器可以使用本机CPU的寄存器210或通过使用存储器204中的位置来仿真。在实施例中,访客指令250、本机指令256和仿真器代码212可以驻留在同一存储器中或者可以分配在不同的存储器设备中。
如本文所使用的,固件包括例如处理器的微代码、毫代码和/或宏代码。例如,固件包括用于实现更高级机器代码的硬件级指令和/或数据结构。在一个实施例中,固件例如包括通常作为微代码传送的专有代码,其包括针对底层硬件的受信软件或微代码并控制对系统硬件的操作系统访问。
已获得、转换并执行的访客指令250例如是本文描述的矢量乘法和移位十进制指令。具有一种架构(例如,z/架构)的指令从存储器中被获取、转换并表示为另一架构(例如,PowerPC、pSeries、英特尔等)的一系列本机指令256。这些本机指令然后被执行。
本文描述了涉及矢量乘法和移位十进制指令的实施例的细节,包括由处理器(在本机或仿真系统中)执行和指令的字段。根据本发明的一方面,矢量乘法和移位十进制指令将两个全宽BCD输入(例如,每个31位)相乘,生成全宽度中间乘积(例如,62位),然后允许选择中间乘积的任意范围(例如,31位)作为结果,当到指定31位范围的任何剩余的数字为非零时检测溢出。这通过采用单个指令(例如,单个架构的机器指令)替换冗长的指令序列来执行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是被分配给例如V1的位置8-11的扩展位,等等。特别地,对于矢量寄存器,使用例如寄存器字段的四位字段来指定包含操作数的寄存器,其中添加其对应的寄存器扩展位(RXB)作为最高有效位。例如,如果四位字段是0110并且扩展位是0,则五位字段00110指示寄存器编号6。在另一实施例中,RXB字段包括附加位,并且多于一位用作针对每个矢量或位置的扩展。
立即(I4)字段312指定包括移位控制的第四操作数。如图3B所示,例如,I4字段312包括以下:
保留:位0-2被保留并包含零。在其它方面,识别出规范异常。
移位量(SHAMT)330:位3-7包含无符号的二进制数,其指定乘积被移位的位数(例如,右)在最右面的31位之前,在一个示例中,被放置在第一操作数中。符号位置不参与移位。
在一个示例中,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)控件340和强制操作数3正(P3)控件342的操作中。
在一个示例中,检查数字代码的有效性,包括由于移位量而对结果没有影响的数字。除被强制操作数2正(P2)控件或强制操作数3正(P3)控件所覆盖外,检查符号代码的有效性。除被强制操作数2正(P2)控件或强制操作数3正(P3)控件所覆盖外,检查符号代码的有效性。
当移位后的结果为非零并且强制操作数1正(P1)控件344为零时,根据乘数和被乘数符号的代数规则确定结果的符号,并且使用所选择的符号代码。当移位后的结果为零并且P1控件为零时,结果的符号为正,采用所选择的符号代码1100。当P1控件为1时,结果的符号为正,采用符号代码1111。
在一个实施例中,如果第一操作数不包含移位乘积的所有最左边的非零数字,则发生十进制溢出。如果条件代码集(CS)位为1,操作完成,并且设置条件代码,例如条件代码3。如果包括的程序掩码中的十进制溢出控件(例如,作为程序状态字的一部分)是1,则发生对十进制溢出的程序中断。
参考图4描述关于指令的操作的进一步细节。在一个示例中,基于获得并执行矢量乘法和移位十进制指令,由至少一个处理器执行图4的逻辑。
参见图4,首先,在步骤400,从使用指令的V2和V3字段指定的寄存器获得第二操作数(被乘数)和第三操作数(除数)。在一个示例中,检查第二操作数和第三操作数的数字的有效性。特别地,在一个示例中,检查所有数字代码的有效性,包括对由于移位量的结果没有影响的数字。在一个示例中,如果一个或多个数字无效,则查询402,然后处理完成并且可以指示错误。然而,如果第二操作数和第三操作数的数字有效,则在步骤404,继续处理以获得移位量。在一个示例中,移位量是用户定义的并由指令提供(例如,I4 312)。
此外,在步骤406,将第二操作数和第三操作数相乘以获得乘积。在步骤408,在指定方向(例如,右)上以移位量移位乘积以获得结果。在步骤410,该结果被放置在第一操作数位置(例如,使用V1指定的寄存器)。
此外,在步骤412,确定结果的符号。例如,当移位后的结果是非零并且强制操作数1正(P1)控件为零时,根据乘数和被乘数符号的代数规则确定结果的符号,并使用所选择的符号代码。当移位后的结果为零并且P1控件为零时,结果的符号为正,采用选择的符号代码1100。当P1控件为1时,结果的符号为正,采用符号代码1111。在步骤414,所确定的符号的符号代码被放置在第一操作数位置(例如,在右侧)。这完成了乘法和移位指令的一个实施例的处理。
在另一实施例中,移位可以向左和/或移位的方向可以通过指令的控制来选择。其它变化是可能的。
先前的十进制乘法指令MP计算R=A*B,其中R位于A的位置。A最多可以有31位长度,但B最多可以有15位数。B的长度限制更严重,其长度L2应小于操作数A(L1)的长度。中间乘积具有最多2*(L1+L2)-2位,并且对于最终结果,选择最低有效2*L1-1位。如果乘积具有更多有效位,则检测到溢出并且可以识别一般操作数数据异常。所选择的位是固定的,且不可选择的。
采用另一十进制指令VMP,操作数都可以具有最多31位,从而放宽MP指令的长度限制。对于VMP指令,中间全宽乘积最多具有62位,并且对于最终结果,选择最低有效31位。当全宽乘积超过31位时检测到溢出。同样,所选的位是固定的,且不可选择的。
然而,对于缩放的BCD数字的乘法,当它们在DB2中或许多COBOL和PL/I应用中使用时,结果通常需要与在操作数中相同的分数位数。这由于结果的固定格式而变得复杂。
参考图5A-5C进一步描述以上内容。
如图5A所示,当执行两个全宽BCD数字502a、502b(例如,31位)的相乘500时,全宽中间乘积具有两倍的位504(例如,62)。常规BCD乘法指令选择固定数量的位,例如最低有效31位(或更少)506,然后相应地检查溢出508。
对于缩放的BCD乘法运算,输入的31位被解释为一些“n”整数位(在小数点之前)和一些“k”分数位(在小数点之后)。期望的乘积通常具有与操作数相同的分数位数,这只是全宽乘积中可用的分数位数的一半。
考虑示例:R(24.6)=A(12.6)*B(12.6)。
图5B指示即使增强BCD乘法VMP的结果520也没有足够的位来采集期望的缩放BCD结果522的所有前导位。
为了获得期望的结果,使用如下的指令序列:
B’(12.0)=B(12.6)>>6
T1(24.6)=A(12.6)*B’(12.0)
B”(0.6)=B(12.6)和“0…..0FFF”
T2(13.12)=A(12.6)*B”(0.6)
T3(13.6)=T2(13.12)>>6
R(24.6)=T1(24.6)+T3(13.6)
根据本发明的一方面,指令序列由执行十进制乘法和移位运算的单个指令(例如,诸如架构硬件指令的架构指令)代替。指令将十进制乘法与移位运算组合在一起。如图5C所示,指令计算多个操作数550a、550b的全宽乘积552,并将乘积例如向右移位sh位554。从右边移出的数字会丢失。然后返回例如移位乘积的最低有效31位作为结果556,并检查在移位乘积中所选结果数字的左边是否有任何非零数字的溢出条件558。
因此,可以选择全宽乘积的任何31位范围作为结果。此外,上面指出的指令序列可以由单个乘法和移位运算代替:R(24.6)=(A(12.6)*B(12.6)>>6。
根据本发明的一方面提供的指令显着地提高了执行缩放BCD乘法运算的速度,从而改进了计算环境内的处理。此类操作可以由许多类型的应用程序和计算环境的其它处理使用。
参考图6A-6B描述与促进计算环境内的处理有关的进一步细节,包括执行用于执行十进制乘法和移位运算的指令。
参见图6A,在步骤600,获得执行乘法和移位运算的指令(例如,架构机器指令),并且在步骤602执行。该执行例如包括:在步骤604,将由指令获得的第一值和第二值相乘以获得乘积;在步骤606,在指定方向上以所选择的量移位乘积以提供结果,所选择的量是用户定义的;在步骤608,将结果放置在所选择的位置中,该结果将用于计算环境内的处理。
作为一个示例,结果包括基于所选择的量的移位而选择的乘积的多个位(610)。
在另一实施例中,执行还包括:在步骤612,确定结果的符号;在步骤614,将该符号包括在所选择的位置中,结果和符号提供选择的值以在计算环境内的处理中使用。
此外,在一个示例中,执行包括:在步骤616,从指令的一个或多个字段获得第一值和第二值;在步骤618,检查第一值和第二值的有效性;以及在步骤620,基于该检查指示第一值和第二值为有效来执行相乘。
作为示例,并参考图6B,指定方向是右(630);从指令的字段获得所选择的量(632),并且所选择的位置是寄存器,使用指令的至少一个字段来指定寄存器(634)。该至少一个字段包括指定寄存器号的寄存器字段和指定要附加到寄存器号的扩展值的扩展字段(636)。
在一个实施例中,在步骤638,确定符号包括检查由指令提供的控件;并且控件例如在指令的掩码字段中被提供(640)。
本文描述的是使用单个架构指令来执行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控制器而耦接到系统。网络适配器还可以耦接到系统,以使数据处理系统能够通过介入私有或公共网络而耦接到其它数据处理系统或远程打印机或存储设备。调制解调器,电缆调制解调器和以太网卡只是可用类型的网络适配器中的一小部分。
这里使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对一个或多个实施例的描述,但是并不旨在穷举或限制于所公开的形式。许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释各个方面和实际应用,并且使本领域普通技术人员能够理解具有各种修改的各种实施例适合于预期的特定用途。

Claims (20)

1.一种计算机程序产品,其用于促进计算环境内的处理,所述计算机程序产品包括:
计算机可读存储介质,其能够由处理电路读取并存储用于由所述处理电路执行的指令,用于执行包括以下方法的方法:
获得用于执行的指令,所述指令用于执行乘法和移位运算;以及
执行所述指令,所述执行包括:
将由所述指令获得的第一值和第二值相乘以获得乘积;
在指定方向上以选择的量移动所述乘积以提供结果,所选择的量是用户定义的;以及
将所述结果放在选择的位置中,所述结果被用于所述计算环境内的处理。
2.根据权利要求1所述的计算机程序产品,其中,所述结果包括基于所选择的量的移位而选择的所述乘积的多个位。
3.根据权利要求1所述的计算机程序产品,其中,所述执行还包括:
确定所述结果的符号;以及
将所述符号包括在所选择的位置中,所述结果和所述符号提供要在所述计算环境内的处理中使用的选择的值。
4.根据权利要求3所述的计算机程序产品,其中,确定所述符号包括检查由所述指令提供的控件。
5.根据权利要求4所述的计算机程序产品,其中,所述控件被提供在所述指令的掩码字段中。
6.根据权利要求1所述的计算机程序产品,其中,所述执行还包括:
从所述指令的一个或多个字段中获得所述第一值和所述第二值;
检查所述第一值和所述第二值的有效性;以及
基于所述检查指示所述第一值和所述第二值有效,执行所述相乘。
7.根据权利要求1所述的计算机程序产品,其中,所述指定方向是右。
8.根据权利要求1所述的计算机程序产品,其中,所述执行还包括从所述指令的字段获得所选择的量。
9.根据权利要求1所述的计算机程序产品,其中,所选择的位置是寄存器,所述寄存器使用所述指令的至少一个字段来指定。
10.根据权利要求9所述的计算机程序产品,其中,所述至少一个字段包括指定寄存器数的寄存器字段和指定要附加到所述寄存器数的扩展值的扩展字段。
11.一种计算机系统,其用于促进计算环境内的处理,所述计算机系统包括:
存储器;以及
处理器,其与所述存储器通信,其中,所述计算机系统被配置为执行方法,所述方法包括:
获得用于执行的指令,所述指令用于执行乘法和移位运算;以及
执行所述指令,所述执行包括:
将由所述指令获得的第一值和第二值相乘以获得乘积;
在指定方向上以选择的量移动所述乘积以提供结果,所选择的量是用户定义的;以及
将所述结果放在选择的位置中,所述结果被用于所述计算环境内的处理。
12.根据权利要求11所述的计算机系统,其中,所述结果包括基于所选择的量的移位而选择的所述乘积的多个位。
13.根据权利要求11所述的计算机系统,其中,所述执行还包括:
确定所述结果的标志;以及
将所述符号包括在所选择的位置中,所述结果和所述符号提供要在所述计算环境内的处理中使用的选择的值。
14.根据权利要求13所述的计算机系统,其中,确定所述符号包括检查由所述指令提供的控件。
15.根据权利要求11所述的计算机系统,其中,所述执行还包括从所述指令的字段获得所选择的量。
16.一种计算机实现的方法,其用于促进计算环境内的处理,所述计算机实现的方法包括:
由处理器获得用于执行的指令,所述指令用于执行乘法和移位运算;以及
执行所述指令,所述执行包括:
将由所述指令获得的第一值和第二值相乘,以获得乘积;
在指定方向上以选择的量移动所述乘积以提供结果,所选择的量是用户定义的;以及
将所述结果放在选择的位置中,所述结果被用于所述计算环境内的处理。
17.根据权利要求16所述的计算机实现的方法,其中,所述结果包括基于所选择的量的移位而选择的所述乘积的多个位。
18.根据权利要求16所述的计算机实现的方法,其中,所述执行还包括:
确定所述结果的符号;以及
将所述符号包括在所选择的位置中,所述结果和所述符号提供要在所述计算环境内的处理中使用的选择的值。
19.根据权利要求18所述的计算机实现的方法,其中,确定所述符号包括检查由所述指令提供的控件。
20.根据权利要求16所述的计算机实现的方法,其中,所述执行还包括从所述指令的字段获得所选择的量。
CN201780060587.7A 2016-09-30 2017-09-21 十进制乘法和移位指令 Active CN109791479B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/281,223 2016-09-30
US15/281,223 US10127015B2 (en) 2016-09-30 2016-09-30 Decimal multiply and shift instruction
PCT/EP2017/073877 WO2018060041A1 (en) 2016-09-30 2017-09-21 Decimal multiply and shift instruction

Publications (2)

Publication Number Publication Date
CN109791479A true CN109791479A (zh) 2019-05-21
CN109791479B CN109791479B (zh) 2023-04-28

Family

ID=59955559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780060587.7A Active CN109791479B (zh) 2016-09-30 2017-09-21 十进制乘法和移位指令

Country Status (16)

Country Link
US (2) US10127015B2 (zh)
EP (1) EP3519940B1 (zh)
JP (1) JP7101930B2 (zh)
KR (1) KR102178290B1 (zh)
CN (1) CN109791479B (zh)
AU (1) AU2017333769B2 (zh)
BR (1) BR112019006632B1 (zh)
CA (1) CA3036123A1 (zh)
ES (1) ES2811033T3 (zh)
IL (1) IL264722B (zh)
MX (1) MX2019003610A (zh)
PL (1) PL3519940T3 (zh)
RU (1) RU2717965C1 (zh)
TW (1) TWI653576B (zh)
WO (1) WO2018060041A1 (zh)
ZA (1) ZA201902290B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US10127015B2 (en) * 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484300A (en) * 1980-12-24 1984-11-20 Honeywell Information Systems Inc. Data processor having units carry and tens carry apparatus supporting a decimal multiply operation
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5696959A (en) * 1993-11-30 1997-12-09 Texas Instruments Incorporated Memory store from a selected one of a register pair conditional upon the state of a selected status bit
US6173305B1 (en) * 1993-11-30 2001-01-09 Texas Instruments Incorporated Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder
EP1102161A2 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6711602B1 (en) * 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US20080270756A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Shift significand of decimal floating point data
US20090055005A1 (en) * 2007-08-23 2009-02-26 Horizon Semiconductors Ltd. Audio Processor
US20100191788A1 (en) * 2009-01-27 2010-07-29 Laurent Le-Faucheur Multiplier with Shifter
CN102298515A (zh) * 2010-06-22 2011-12-28 国际商业机器公司 执行对两个操作数的操作并随后存储原始值的方法和系统
CN103078732A (zh) * 2013-01-08 2013-05-01 武汉大学 一种素域椭圆曲线加密的点乘加速电路
CN103119532A (zh) * 2010-09-24 2013-05-22 英特尔公司 能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4390961A (en) * 1980-12-24 1983-06-28 Honeywell Information Systems Inc. Data processor performing a decimal multiply operation using a read only memory
JPH0383127A (ja) 1989-08-28 1991-04-09 Nec Corp 10進除算器
US5426600A (en) 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
RU2113010C1 (ru) * 1995-11-16 1998-06-10 Акциоерное общество "Научно-исследовательский институт вычислительных комплексов им.М.А.Карцева" Многопроцессорная векторная эвм
US5969326A (en) 1998-01-14 1999-10-19 Intermec Ip Corp. Method and apparatus of autodiscriminating in symbol reader employing prioritized and updated table of symbologies
JP2001034472A (ja) 1999-07-16 2001-02-09 Mitsubishi Electric Corp データ処理装置および除算、剰余算アルゴリズム
US7330864B2 (en) * 2001-03-01 2008-02-12 Microsoft Corporation System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations
US6813627B2 (en) * 2001-07-31 2004-11-02 Hewlett-Packard Development Company, L.P. Method and apparatus for performing integer multiply operations using primitive multi-media operations that operate on smaller operands
JP3886870B2 (ja) 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7167889B2 (en) 2003-05-12 2007-01-23 International Business Machines Corporation Decimal multiplication for superscaler processors
US7689641B2 (en) 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US7383420B2 (en) * 2005-03-24 2008-06-03 Qualcomm Incorporated Processor and method of indirect register read and write operations
US7584237B1 (en) 2005-10-11 2009-09-01 Advanced Micro Devices, Inc. Fast hardware divider
US7912890B2 (en) 2006-05-11 2011-03-22 Intel Corporation Method and apparatus for decimal number multiplication using hardware for binary number operations
US8725786B2 (en) 2009-04-29 2014-05-13 University Of Massachusetts Approximate SRT division method
US9335993B2 (en) * 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
JP5966763B2 (ja) 2012-08-22 2016-08-10 富士通株式会社 除算装置及び除算方法
JP5966764B2 (ja) 2012-08-22 2016-08-10 富士通株式会社 乗算装置及び乗算方法
US9524143B2 (en) 2014-06-26 2016-12-20 Arm Limited Apparatus and method for efficient division performance
US10019229B2 (en) 2014-07-02 2018-07-10 Via Alliance Semiconductor Co., Ltd Calculation control indicator cache
US10127015B2 (en) * 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484300A (en) * 1980-12-24 1984-11-20 Honeywell Information Systems Inc. Data processor having units carry and tens carry apparatus supporting a decimal multiply operation
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5696959A (en) * 1993-11-30 1997-12-09 Texas Instruments Incorporated Memory store from a selected one of a register pair conditional upon the state of a selected status bit
US6173305B1 (en) * 1993-11-30 2001-01-09 Texas Instruments Incorporated Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder
EP1102161A2 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6711602B1 (en) * 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US20080270756A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Shift significand of decimal floating point data
US20090055005A1 (en) * 2007-08-23 2009-02-26 Horizon Semiconductors Ltd. Audio Processor
US20100191788A1 (en) * 2009-01-27 2010-07-29 Laurent Le-Faucheur Multiplier with Shifter
CN102298515A (zh) * 2010-06-22 2011-12-28 国际商业机器公司 执行对两个操作数的操作并随后存储原始值的方法和系统
CN103119532A (zh) * 2010-09-24 2013-05-22 英特尔公司 能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元
CN103078732A (zh) * 2013-01-08 2013-05-01 武汉大学 一种素域椭圆曲线加密的点乘加速电路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RUBY B.LEE,ET AL: "PLX:An Instruction Set Architecture and Testbed for Multimedia Information Processing", 《JOURNAL OF VLSI SIGNAL PROCESSING》 *

Also Published As

Publication number Publication date
CN109791479B (zh) 2023-04-28
JP2019535075A (ja) 2019-12-05
RU2717965C1 (ru) 2020-03-27
PL3519940T3 (pl) 2020-11-02
TWI653576B (zh) 2019-03-11
TW201816593A (zh) 2018-05-01
EP3519940A1 (en) 2019-08-07
KR20190075055A (ko) 2019-06-28
ZA201902290B (en) 2019-11-27
BR112019006632A2 (pt) 2019-07-02
JP7101930B2 (ja) 2022-07-19
WO2018060041A1 (en) 2018-04-05
MX2019003610A (es) 2019-06-17
US20180095721A1 (en) 2018-04-05
BR112019006632B1 (pt) 2022-06-07
US20180095723A1 (en) 2018-04-05
AU2017333769B2 (en) 2019-08-15
AU2017333769A1 (en) 2019-04-04
US10127015B2 (en) 2018-11-13
KR102178290B1 (ko) 2020-11-12
IL264722B (en) 2021-02-28
US10331408B2 (en) 2019-06-25
ES2811033T3 (es) 2021-03-10
CA3036123A1 (en) 2018-04-05
EP3519940B1 (en) 2020-07-08

Similar Documents

Publication Publication Date Title
CN109891387A (zh) 具有可选择比较属性的浮点指令
TWI651649B (zh) 用於執行正負號運算十進位指令的電腦程式產品、電腦系統及電腦實施方法
US10606588B2 (en) Conversion of Boolean conditions
CN109791479A (zh) 十进制乘法和移位指令
CN109791478A (zh) 十进制移位和除法指令
US11036519B2 (en) Simultaneously capturing status information for multiple operating modes
CN109791491A (zh) 十进制加载立即指令
US20220276867A1 (en) Vector convert hexadecimal floating point to scaled decimal instruction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40004091

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant