动态算法选择制造技术

技术编号:38655522 阅读:15 留言:0更新日期:2023-09-02 22:42
本发明专利技术涉及动态算法选择。通过以下操作动态选择乘法算法:接收操作数A和B,确定A与B之间的差值,如果所述差值低于阈值,则选择第一乘法算法,如果所述差值等于或超过所述阈值,则选择第二乘法算法,对所述操作数进行预缩放,计算所述经缩放的操作数的商,使用所述选择的算法将所述商反向相乘,产生乘积,从操作数A减去所述乘积,产生余数,并且提供所述余数作为输出。作为输出。作为输出。

【技术实现步骤摘要】
动态算法选择


[0001]本公开一般涉及处理器算法的动态选择。本专利技术尤其涉及根据输入数据动态选择处理器乘法算法。

技术介绍

[0002]面向公共业务的语言(COBOL)是一种计算机编程语言,其具有在世界各地使用的大量建立的遗留程序的基础。通过COBOL代码支持许多客户信息控制系统事务。每天每秒处理数百万的CICS事务。COBOL支持用于十进制数运算的宽范围的算术函数,包括向量余数十进制函数VRP,其接收输入(A,B)并且计算商和余数,使得A=具有余数的商*B,余数的绝对值<B的绝对值,余数的符号是A的符号。(注意:术语“CICS”可能受世界各地不同司法管辖区的商标权约束,此处仅在可能存在此类商标权的情况下用于指代由商标正确命名的产品或服务。)
[0003]余数的计算被分成计算商的除法部分和商乘以除数并且从被除数减去结果的余数部分。取决于商的值,在将商乘以除数时使用的算法可能需要更多或更少的计算周期来完成。由于每秒发生数百万个运算,因此针对每一此类运算选择更有效的乘法算法在完成VRP函数的处理中利用的数百万个较少计算周期方面产生益处。

技术实现思路

[0004]以下呈现了概述以提供对本公开的一个或多个实施例的基本理解。本概述不旨在标识关键或重要元素或描绘特定实施例的任何范围或权利要求的任何范围。其唯一目的是以简化形式呈现概念,作为稍后呈现的更详细描述的序言。在本文描述的一个或多个实施例中,设备、系统、计算机实现的方法、装置和/或计算机程序产品使得能够根据输入值动态选择乘法算法。
[0005]本专利技术的方面揭示与乘法算法的动态选择相关联的方法、系统和计算机可读介质,其通过以下操作进行:接收操作数A和B;确定A与B之间的差值;如果所述差值低于阈值,则选择第一乘法算法;如果所述差值等于或超过所述阈值,则选择第二乘法算法;对所述操作数进行预缩放;计算所述经缩放的操作数的商;使用所述选择的算法对所述商进行反向乘法;产生乘积;从操作数A中减去所述乘积;产生余数;以及提供所述余数作为输出。
附图说明
[0006]通过在附图中对本公开的一些实施例的更详细的描述,本公开的上述和其他目的、特征和优点将变得更加明显,其中相同的附图标记通常指代本公开的实施例中的相同的部件。
[0007]图1提供了根据本专利技术的实施例的计算环境的示意图;
[0008]图2提供了根据本专利技术的实施例的描述操作序列的流程图;
[0009]图3示出了根据本专利技术的实施例的云计算环境;以及
[0010]图4示出了根据本专利技术的实施例的抽象模型层。
具体实施方式
[0011]将参照附图更详细地描述一些实施例,在附图中已经示出了本公开的实施例。然而,本公开可以以各种方式实现,并且因此不应被解释为限于本文公开的实施例。
[0012]函数的余数输出的计算诸如VRP(A,B),包括除法运算,其中确定A除以B的商,以及从A减去商*B后的余数部分,留下余数作为最终输出。用于商计算的算法和用于反向乘法部分的算法的选择基于数据类型、面积要求、周期时间要求、性能等。对于十进制除,操作数预缩放后接着进行超过4个周期的逐位循环产生商。对于乘法,系统可以具有选择,要么是逐位乘法(digit wise multiplication)和部分乘积的连续求和,要么是多位乘法结合十进制归约树(decimal reduction tree)。每种算法具有优点和缺点,取决于操作数。对于至少一个操作数较短的实例,逐位乘法需要较少的计算周期来完成。对于较长的操作数,多位乘法花费较少的计算周期。
[0013]在一个实施例中,该方法确定操作数的相对大小,并根据该相对操作数大小来进行算法选择。在一实施例中,所述方法针对具有基于前导零差值小于四的商位数估计的操作数选择逐位乘法,且针对具有基于前导零差值等于或大于四的商位数估计的操作数选择多位乘法。在该实施例中,该方法通过以下公式根据输入的前导零来确定商位数估计:商位数=(前导_零_位数B

前导_零_位数A,前导_零_位数B

前导_零_位数A+1)。
[0014]本专利技术的各方面一般涉及通过根据输入值动态选择乘法算法来提高处理效率。在实施例中,计算系统接收计算(除法)请求,为了效率缩放操作数,估计商位数的同时确定商,根据估计的商位数选择反向乘法算法,使用选择的算法对商进行反向乘法,以及从被除数减去反向乘法的乘积以确定余数作为最终输出。根据所估计的商位数的定义的阈值选择算法使得计算系统能够更有效地处理除法运算并节省计算周期。
[0015]根据本专利技术的方面,存在一种用于动态地选择用于除法计算的适当的反向乘法算法的方法。该方法估计商的位数,并且基于所估计的商位数与四个所估计的商位数的定义的阈值的关系来选择算法。对于小于四位的商位数估计,选择具有部分积的连续求和的逐位乘法的第一算法,而对于四位或更多位的商位数估计,选择与十进制归约树组合的多位乘法。随着商位数进一步偏离四个,通过动态算法选择方法节省的计算周期的数目增加。
[0016]本专利技术的各方面提供了中央处理器计算指令执行
中的改进。对于具有三位的商,该方法通过选择逐位乘法节省了大约三个计算周期,对于五位的商,该方法通过选择多位乘法节省了一个周期。对于具有更多位的商,实现了更大的周期节省。减少的周期节省了处理时间和完成处理所需的能量,从而导致更高效的总体计算操作。
[0017]本专利技术的各方面还提供了对计算机功能的改进。特别地,本专利技术的实现针对处理器计算除法计算的方式的特定改进。所公开的方法减少了这种计算所需的周期次数,从而为这种系统的操作者节省了时间和能量。
[0018]在一个实施例中,系统的一个或多个组件可以采用硬件和/或软件来解决本质上是高度技术性的问题(例如,接收操作数、缩放操作数、计算操作数的商、估计商位数、根据商位数估计选择反向乘法算法、使用所选择的算法对商进行反向乘法、通过从被除数减去反向乘法的乘积来确定余数输出等)。这些解决方案不是抽象的,并且由于例如促进动态算
法选择所需的处理能力而不能作为一组精神动作由人执行。此外,所执行的一些过程可以由用于执行与数学计算有关的定义的任务的专用计算机来执行。例如,可以采用专用计算机来执行与包括动态算法选择等的数学计算相关的任务。
[0019]在一个实施例中,所公开的方法涉及由包括一个或多个处理器的计算系统处理指令。作为计算系统的正常操作的一部分,两个操作数(A,B)被传递到处理器以进行除法/余数计算,例如VRP,其提供操作A/B的余数作为其输出。最初,处理器将两个输入操作数归一化,用尾随的零位填充操作数以填充格式,并对除数B执行缩放操作。在缩放之后,该方法确定商A/B,需要根据商的位数而变化的周期数。在此实施例中,当该方法执行除法运算时,该方法同时估计商位数。在一个实施例中,该方法在输入归一化之前,将商位数估计为输入B中的前导零的数目与输入A中的前导零的数目之间的差值以及输入B中的前导零的数目与输本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于动态选择乘法算法的计算机实现的方法,包括:由一个或多个计算机处理器接收操作数A和B;由所述一个或多个计算机处理器确定A与B之间的差值;如果所述差值低于阈值,则由所述一个或多个计算机处理器选择第一乘法算法;以及如果所述差值等于或超过所述阈值,则由所述一个或多个计算机处理器选择第二乘法算法。2.根据权利要求1所述的计算机实现的方法,其中确定A和B之间的所述差值包括:由所述一个或多个计算机处理器确定B的前导零的数目减去A的前导零的数目之间的差值。3.根据权利要求1所述的计算机实现的方法,其中所述阈值是四。4.根据权利要求1所述的计算机实现的方法,其中所述第一算法包括逐位乘法和部分乘积的连续求和。5.根据权利要求1所述的计算机实现的方法,其中所述第二算法包括与十进制归约树组合的多位乘法。6.根据权利要求1所述的计算机实现的方法,还包括由所述一个或多个计算机处理器计算A和B的商;以及由所述一个或多个计算机处理器根据所述差值使用所述第一算法或所述第二算法将所述商和B反向相乘;由所述一个或多个计算机处理器确定所述商和B的乘积与A之间的第二差值;以及由所述一个或多个计算机处理器提供所述第二差值作为输出。7.一种用于动态选择乘法算法的计算机实现的方法,包括:接收操作数A和B;确定A和B之间的差值;根据A和B之间的差值估计商位数;如果所述估计的商位数低于阈值,则选择第一乘法算法;以及如果所述估计的商位数等于或超过所述阈值,则选择第二乘法算法。8.根据权利要求7所述的计算机实现的方法,其中确定A和B之间的所述差值包括:确定B的前导零的数目减去A的前导零的数目之间的差值。9.根据权利要求7所述的计算机实现的方法,其中所述阈值为四。10.根据权利要求7所述的计算机实现的方法,其中所述第一算法包括逐位乘法和部分乘积的连续求和...

【专利技术属性】
技术研发人员:K
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1