CN110073328B - 符号幅度加法器的溢出检测 - Google Patents
符号幅度加法器的溢出检测 Download PDFInfo
- Publication number
- CN110073328B CN110073328B CN201780075729.7A CN201780075729A CN110073328B CN 110073328 B CN110073328 B CN 110073328B CN 201780075729 A CN201780075729 A CN 201780075729A CN 110073328 B CN110073328 B CN 110073328B
- Authority
- CN
- China
- Prior art keywords
- result
- carry
- operand
- term
- overflow
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
提供了一种电路,包括算术计算逻辑(201),其被配置为加上或减去可变长度的操作数以产生以符号幅度数据格式的结果。该电路还包括溢出检测器(210),以提供指示结果是否符合指定的结果长度l的溢出信号。溢出检测器(210)在算术计算逻辑(201)产生结果之前对操作数进行操作,以独立于算术计算逻辑(201)产生的结果确定结果是否适合指定的结果长度l。
Description
背景技术
定点二进制编码的十进制(BCD)数据格式是商业应用中广泛使用的格式,例如公司和政府的商业、金融和管理系统。例如,处理财务数据的金融应用程序(例如许多银行应用程序和本地银行代码)通常采用这种格式。这些应用程序或代码使用的通用编程语言通常是COBOL或PL/1。该特定数据格式也是某些数据库的默认数据类型,例如由纽约Armonk的国际商业机器公司提供的DB2TM和由德国Walldorf的SAP SE提供的SAP服务器。
当对二进制编码的十进制数据执行某些类型的算术运算时,必须知道操作的结果是否在结果的目标数据宽度内。例如,这是COBOL代码中广泛使用的功能,其中输入和结果可能具有不同的宽度,并且应用程序期望COBOL检查操作的有效性。检查有效性的一种方法是生成结果,然后对结果应用掩码以识别潜在的溢出数字,并检查溢出中的任何数字是否为非零。
发明内容
在一个或多个方面,通过提供包括算术计算逻辑和溢出检测器的电路,克服了现有技术的缺点并提供了额外的优点。算术计算逻辑被配置为加上或减去可变长度的操作数以产生以符号幅度数据格式的结果。溢出检测器提供指示结果是否符合指定的结果长度l的溢出信号。溢出检测器在算术计算逻辑产生结果之前对操作数进行操作,以独立于算术计算逻辑产生的结果确定结果是否适合指定的结果长度l。
在一个或多个其他方面,提供了一种方法,包括提供执行算术运算的电路。该提供包括提供算术计算逻辑,该算术计算逻辑被配置为加上或减去可变长度的操作数以产生以符号幅度数据格式的结果。另外,该提供包括提供溢出检测器以产生指示结果是否适合指定的结果长度l的溢出信号。溢出检测器在算术计算逻辑产生结果之前对操作数进行操作以独立于算术计算逻辑产生的结果确定结果是否适合指定的结果长度l。
在一个或多个其他方面,提供了一种用于检测加上或减去操作的溢出的计算机程序产品。该计算机程序产品包括计算机可读存储介质,其具有嵌入其中的程序指令,所述程序指令可由处理器执行以执行一种方法,该方法包括:算术地加上或减去可变长度的操作数以产生以符号幅度数据格式的结果;并产生指示结果是否符合指定的结果长度l的溢出信号,产生溢出信号包括在算术加上或减去产生所述结果之前对操作数进行操作,以独立于算术计算逻辑产生的结果确定结果是否适合指定的结果长度l。
通过本发明的技术实现了其他特征和优点。本文详细描述了本发明的其他实施例和方面,并将其视为要求保护的发明的一部分。
附图说明
作为在说明书的结论的权利要求中的例子,特别指出并清楚地要求保护本发明的一个或多个方面。通过以下结合附图的详细描述,本发明的前述和其他目的、特征和优点是显而易见的,其中:
图1是电路或设备的一个实施例的示意图,该电路或设备包括算术计算逻辑和用于检查由算术计算逻辑产生的结果的溢出的溢出检测器;
图2是根据本发明的一个或多个方面的电路或设备的一个实施例的示意图,该电路或设备包括算术计算逻辑和溢出检测器;
图3A是根据本发明的一个或多个方面提供给算术计算逻辑的两个操作数的示例和获得的结果,其中结果大于指定的结果长度l,并进行识别;
图3B示出了根据本发明的一个或多个方面的溢出检测器的溢出检测过程的示例,该溢出检测器与被配置为执行加上操作的算术计算逻辑相关联;
图4A是根据本发明的一个或多个方面的两个操作数的示例以及溢出检测器检测到溢出的结果,该溢出检测器与被配置为执行减去运算的算术计算逻辑相关联;
图4B描绘了根据本发明的一个或多个方面的溢出检测器的溢出检测处理示例,该溢出检测器与执行减去操作的算术计算逻辑相关联,其中减去操作中操作数A大于操作数B;
图4C示出了根据本发明的一个或多个方面的溢出检测器的溢出检测处理示例,该溢出检测器与执行减去操作的算术计算逻辑相关联,其中减去操作中操作数B大于操作数A;
图5A和B示出了根据本发明的一个或多个方面的用于执行具有溢出检测的算术加上或减去运算的过程的一个实施例;以及
图6是根据本发明的一个或多个方面的数据处理系统的一个实施例的框图,该数据处理系统可以实现算术加上或减去运算和溢出检测的一个或多个方面。
具体实施方式
以下描述包括体现本发明技术的示例性设备、系统、方法、技术和指令序列。然而,应该理解,在一个或多个方面,可以在没有这些具体细节的情况下实践所描述的发明。在其他情况下,没有详细示出公知的协议、结构和技术,以免模糊本发明。本领域普通技术人员将理解,所描述的技术和机制可以应用于对值进行排序的各种体系结构。
如上所述,定点十进制数据格式(BCD)广泛用于商业应用,例如金融业(包括银行业务、会计等)中的商业应用。用于这些应用的通用编程语言包括COBOL、PL/1、Java,C++。此外,该格式用作某些数据库(例如上述DB2TM数据库和SAPTM服务器)的缺省数据类型。利用这些应用程序,数据可以是多个字节的可变数据宽度,例如,+123,-00123。因此,通常为算术运算提供指定的结果长度l。当前数据库最常见的数据宽度是9个字节。
在对二进制编码的十进制(BCD)或更一般地,符号幅度数据执行算术运算时,重要的是知道结果是否适合目标数据宽度。否则,最重要的数字可能会丢失。如上所述,这是某些应用程序,例如COBOL代码,中广泛使用的功能。在这些应用程序中,输入或操作数以及结果可以具有不同的宽度。许多现有应用程序期望检查操作的有效性。
图1描绘了用于执行具有相关溢出检查的算术运算的电路的现有技术实施例的一种状态。如图所示,操作数A和B 100被送到算术计算逻辑或电路101,例如符号幅度(sign-magnitude)加法器,以进行加上或减去操作,算术计算逻辑101产生结果R 102。提供溢出检测器110,其接收指定的结果长度l 111作为输入并生成112掩码113,然后逐位与(AND)114以识别掩码数字115,并确定掩蔽数字115是否为非零116,其表示溢出信号(OVF)。
注意,利用图1的方法,首先生成结果R,然后对结果应用掩码以识别可能溢出的数字,并检查这些数字中的任何一个是否为非零。使用这种方法,还要注意溢出检测在实际计算之后发生,因此必然会增加完整操作的延迟。这不仅减慢了执行速度,而且还减少了推测分支预测和/或执行的窗口,这具有高性能成本,因为分支使用的溢出结果需要更长的时间来计算。例如,错误预测的分支至少花费25个处理器核周期。请注意在这方面,溢出信号通常用于设置过程的返回代码,例如if-then-else代码。
一般而言,本文公开了用于检测对诸如二进制编码的十进制数据的数据的算术运算的结果是否在指定的结果长度l内的快速且有效的方法。
在一个或多个实施方式中,根据本发明的一个或多个方面,与由通过使用对操作数但不对操作的结果操作的特殊检查硬件执行与实际算术运算或计算并行而发生溢出检测。如这里所述,甚至可以在获得算术运算的最终结果之前计算溢出。这有利地缩短了操作的整体等待时间。此外,鉴于本公开,溢出检测器可以仅具有有限的附加硬件,由本领域普通技术人员实现。
图2描绘了根据本发明的一个或多个方面的具有溢出检测的电路或设备的一个示例。在该实现中,在算术计算逻辑201处(例如符号幅度加法器,其被配置为对操作数执行算术加上或减去运算)接收操作数A和B 100。另外,提供溢出检测器210,其还接收操作数A和B100以及指定的结果宽度l 111。另外,在一个或多个实施例中,提供具有对操作数A和B的长度指定符(例如,来自算术计算逻辑201)的溢出检测器210。如图所示,溢出检测器210产生与算术计算逻辑产生的结果R 202并行的溢出信号(OVF)。特别地,在一个或多个实施例中,溢出检测器210与算术计算逻辑201并行地对操作数100进行操作。此外,溢出检测器210可以在算术计算逻辑201产生结果R之前或与之并行地以符号幅度数据格式提供溢出信号OVF。
下面参考图3A-5B进一步描述根据本发明的一个或多个方面实现溢出检测的各种实施例。注意,这里公开的溢出检测设备可以用于二进制符号幅度加法器,以及十进制符号幅度加法器。作为说明,描述了十进制版本,因为它具有更高的复杂性,并且基于本文提供的描述,二进制版本对于本领域普通技术人员而言是直截了当的。
如下面进一步解释的,提供了算术引擎,其被配置为以符号幅度数据格式对可变长度操作数进行操作。算术引擎、单元、电路、逻辑等适用于:接收操作数以及结果的长度指定符,以接收遵循长度规范的操作数,以计算以符号幅度格式的作为操作数的和或差的结果,以及从而提供溢出信号以指示结果是否符合所请求的长度。执行溢出检查独立于算术运算产生的结果,并与实际的算术运算并行。
如下面进一步解释的,溢出检查或检测可以包括使用基于结果的长度指定符生成的填充向量。溢出信号包括或可以被检测为填充矢量和两个操作数的3路和或差的进位输出(carry-out)。在一个或多个实施例中,数据可以是任何BCD格式,并且可以使用修改的数字生成和传播逻辑来执行溢出检查的进位输出检测,该逻辑包含给定数字的填充,然后使用常规的进位输出从修改的数字生成和数字传播信号中导出进位输出信号,根据这里提供的描述这对于本领域技术人员来说是显而易见的。
有两种情况需要检查:有效的加上和有效的减去。
1.有效的加上案例:
图3A描绘了操作数A和操作数B的相加。如果结果R大于指定的结果长度l,则发生溢出。请注意,10^l是一个位串,其后跟尾随零的l。在下面的等式(1)中,它表示给定位串的值。下面的等式(1)显示了基于操作数、截断结果、以及期望的结果长度l的最大长度n确定的溢出:
OVF=1<=>A+B>=10^l (1)
<=>A+B+(10^n-10^l)>=10^n
如上所述,传统的实现方式将生成两个操作数的和,然后检查结果的长度是否大于l。
利用本公开,可以减少溢出检测以仅检查完整的n位数字加法器的输出进位。这可以通过填充结果长度l左边的位来完成。然后,结果长度左边的输出进位将传播到最左边的位置并生成输出进位。图3B中描绘了其一个实施例。
该方法的实现如下。通过以常规方式添加两个操作数和填充向量,进行3:2的加法,然后将所得的和和进位向量相加以得到结果和溢出。
本文公开的溢出检测的另一实现是使用用于数字生成(g)和传播(p)信号,包括9填充的修改的等式对A和B的单独的进位树。采用的等式如下:
令M(n-1,...,0)为位向量,如果k<l,则M(k)=0,以及如果k>=l,则M(k)=1
数字k的g项:A(k)+B(k)+9*M(k)>=10 (2)
(数字A(k)和B(k)以及潜在的9填充生成进位)
数字k的p项:A(k)+B(k)+9*M(k)>=9 (3)
(数字k传播进位)。
2.有效的减去案例:
由于需要计算绝对差值,因此需要区分两种情况,即计算A-B或B-A。
abs(A–B)=>情况1:对于A>B为A–B
情况2:对于B>=A为B–A
图4A描绘了操作数A和操作数B的减法。如果结果R大于指定的结果长度l,则发生溢出结果。注意,参考图4A:
OVF=1<=>R=A–B>=10^l。
<=>A>=B+10^l
众所周知,进位输出cout(X+!Y)=1表示Y<X,而cout(X+!Y)=0表示Y>=X。
对于情况1(A>B<=>A-B),其中A=Y且((B+10^l)=X,进位输出cout(X+!Y),OVF检测可以表示为:
cout(X+!Y)=0<=>Y>=X
<=>A>=B+10^l
<=>A–B>=10^l
<=>R>=10^l
<=>OVF=1
如上所示,如果没有计算的进位输出,则得到溢出。
对于情况2(B>=A<=>B-A),存在与情况1相同的假设:
R>=10^l=>OVF=1
因此可以获得以下等式:
R<=>(B–A)<=>B–A>=10^l
<=>B>=A+10^l.
现在,在Y=B且X=(A+10^l)的情况下,获得以下结果:
cout(X+!Y)=0<=>Y>=X
<=>B>=A+10^l
<=>B–A>=10^l
<=>R>=10^l
<=>OVF=1
因此,对于有效减法情况,可以使用以下两个等式检测溢出(并且因此R>10^l):
A>B情况1(A-B):cout(B+!A+10^l)=0<=>OVF=1
B>=情况2(B-A):cout(A+!B+10^l)=0<=>OVF=1
这两种情况的例子分别示于图4B和4C中。与有效加上情况类似,上述等式使用两个独立的专用进位树使其进行快速OVF检测。这两个进位树使用以下修改的等式用于数字生成和传播信号,包括10^l填充:
设M(n-1,...,0)为位向量,且如果k!=l,则M(k)=0,并且如果k=l,则M(k)=1
对于情况1(A–B):
数字k的g项:!!A(k)+B(k)+1*M(k)>=16 (4)
(数字A(k)和B(k)以及潜在的1填充产生进位。)
数字k的p项:!A(k)+B(k)+1*M(k)>=15 (5)
(数字k传播进位。)
对于情况2(B–A):
数字k的g项:A(k)+!B(k)+1*M(k)>=16 (6)
(数字A(k)和B(k)以及潜在的1填充产生进位。)
数字k的p项:A(k)+!B(k)+1*M(k)>=15 (7)
(这个数字k传播一个进位。)
注意,上述双进位树讨论仅作为示例提供。如果需要,在替换实施例中可以采用使用端到端进位的单个进位树。
图5A和5B描绘了根据本发明的一个或多个方面的各种过程的概述的一个实施例。如图5A和5B所示,公开了提供电路以执行算术运算的方法500。提供电路可以包括:提供算术计算逻辑,其被配置为加上或减去各种长度的操作数以生成以符号幅度格式的结果;以及提供溢出检测器以提供指示结果是否符合指定的结果长度的溢出信号,溢出检测器在算术计算逻辑产生结果之前对操作数进行操作以独立于算术计算逻辑产生的结果确定结果是否适合指定的结果长度l。
在一个或多个实现中,溢出检测器与算术计算逻辑505并行地对操作数进行操作。此外,溢出检测器可以在算术计算逻辑产生符号幅度数据格式510的结果之前或与之并行地提供溢出信号。
在一个或多个实施例中,溢出检测器通过基于指定的结果长度l生成填充向量P来确定结果是否适合指定的结果长度,并且评估操作数和填充向量P的相应的加上或减去以确定是否存在进位,溢出信号基于进位515。例如,操作数可以是两个操作数,并且溢出检测器检查两个操作数和填充向量P520的三路加上或减去的进位。在一个或多个实施例中,进位是n位加法器的,其中n是大于指定的结果长度l,并且填充矢量P由指定的结果长度l左侧的填充位产生,其中结果长度的进位被传播到最左侧位置以生成由溢出检测器525检查的进位。
在一个或多个实施例中,操作数可以包括操作数A和操作数B,并且算术计算逻辑被配置为添加可变长度的操作数,并且溢出检测器使用以下等式为操作数A和操作数B实现单独的进位树,该等式用于数字生成信号(g项)和数字传播信号(p项),包括9填充,并从g项和p项导出一个进位,溢出信号基于进位:M(n-1,...,0)是位向量,如果k<l则M(k)=0,并且如果k>=l则M(k)=1,其中:数字k的g项:A(k)+B(k)+9*M(k)>=10,其中数字A(k)和B(k)以及潜在的9填充生成进位;数字k的p项:A(k)+B(k)+9*M(k)>=9,数字k传播进位530。
在一个或多个其他实施例中,操作数包括操作数A和操作数B,并且算术计算逻辑被配置为减去可变长度的操作数,并且溢出检测器使用以下等式为操作数A和操作数实现单独的进位树,该等式用于数字生成信号(g项)和数字传播信号(p项),包括使用10l的填充,其中l是指定的结果长度l:M(n-1,…,0)是一个矢量,如果k!=l,M(k)=0;并且如果k=l,则M(k)=1;对于A>B(A-B):对于数字k的g项:!A(k)+B(k)+1*M(k)>=16(数字A(k)和B(k)以及潜在的1填充生成进位),数字k的p项:!A(k)+B(k)+1*M(k)>=15(数字k传播一个进位);并且对于B>=A(B-A):数字k的g项:A(k)+!B(k)+1*M(k)>=16(数字A(k)和B(k)和潜在的1填充产生进位),数字k的p项:A(k)+!B(k)+1*M(k)>=15(数字k传播进位)535。
在一个或多个实施例中,操作数可以是二进制编码的十进制格式,并且算术计算逻辑可以包括符号幅度加法器540。
参见图6,其示出了数据处理系统的框图,其中可以实现本发明的说明性方面。
如图所示,数据处理系统600包括计算系统612。可适用于计算机系统612的众所周知的计算系统、环境和/或配置的示例包括但不限于工作站、计算机、服务器等。
可以在由计算机系统执行的计算机系统可执行指令(例如程序模块)的一般上下文中描述计算系统612。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。
如图6所示,计算系统612以通用计算设备的形式示出。计算系统612的组件可以包括但不限于一个或多个处理器或处理单元616、存储器623、以及将包括系统存储器623的各种系统组件耦合到处理器616的总线618。
在一个实施例中,处理器616可以是基于国际商业机器公司提供的或者是由国际商业机器公司或其他公司提供的其他架构。是美国纽约Armonk的国际商业机器公司的注册商标。在操作原理”(IBM的第SA22-7832-10号出版物,2015年3月出版)中描述了/>的一个实施例,其全部内容通过引用合并于此。
在其他示例中,它可以基于其他架构,诸如国际商业机器公司提供的Power架构。国际商业机器公司2015年4月9日公开的“PowerISATM TM Version 2.07B中描述了Power架构的一个实施例,其全部内容通过引用合并于此。POWER ARCHITECTURE是美国纽约Armonk的国际商业机器公司的注册商标。此处使用的其他名称可能是国际商业机器公司或其他公司的注册商标、商标或产品名称。
总线618表示几种类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何总线架构的处理器或本地总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线。
计算系统612可包括各种计算机系统可读介质。这样的介质可以是计算系统612可访问的任何可用介质,并且它包括易失性和非易失性介质,可移动和不可移动介质。
系统存储器623可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)630和/或高速缓冲存储器632。计算系统612还可以包括其他可移动/不可移动,易失性/非易失性计算机系统存储介质。仅作为示例,可以提供存储系统634用于从不可移动的非易失性磁介质(未示出并且通常称为“硬盘驱动器”)读取和写入。尽管未示出,但是用于可以提供读取和写入可移动的非易失性磁盘(例如,“软盘”)的磁盘驱动器,以及用于读取或写入可移动的非易失性光学器件的光盘驱动器,诸如CD-ROM,DVD-ROM或其他光学介质的盘。在这种情况下,每个可以通过一个或多个数据介质接口连接到总线618。如下所述,存储器623可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,这些程序模块被配置为执行本发明的实施例的功能。
具有一组(至少一个)程序模块642的程序/实用程序640可以作为示例而非限制地存储在存储器632中、以及操作系统、一个或多个应用程序、其他程序模块和程序数据。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或其某种组合可以包括网络环境的实现。程序模块642通常执行如本文所述的本发明实施例的功能和/或方法。或者,可以在计算环境612内提供单独的溢出检测设备、模块、逻辑等601(诸如本文所述)。
计算系统612还可以与一个或多个外部设备614,例如键盘、指示设备、显示器624等通信;一个或多个使用户能够与计算系统612交互的设备;和/或使计算系统612能够与一个或多个其他计算设备通信的任何设备(例如,网卡,调制解调器等)。这种通信可以通过输入/输出(I/O)接口622进行。此外,计算系统612还可以与一个或多个网络,例如局域网(LAN)、通用广域网(WAN)和/或或者通过网络适配器620公共网络(例如,因特网)通信。如图所示,网络适配器620通过总线618与计算系统612的其他组件通信。应该理解,尽管未示出,但是其他硬件和/或软件组件可以与计算系统612结合使用。示例包括但不限于:微代码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据存档存储系统等。
本领域技术人员应该注意到,图6所示的系统示例以及本文引用的其他示例并不意味着暗示架构限制。
本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括计算机可读存储介质或多个介质,其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、例如在其上记录有指令的凹槽中的穿孔卡或凸起结构的机械编码装置,以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过的光脉冲)光纤电缆)或通过电线传输的电信号。
本文描述的计算机可读程序指令可以经由网络,例如,因特网、局域网、广域区域网络和/或无线网络,从计算机可读存储介质或外部计算机或外部存储设备下载到相应的计算/处理设备。网络可以包括铜传输电缆、光传输光纤、无线传输,路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、用于集成电路的配置数据、或以一种或多种编程语言,包括诸如Smalltalk、C++等的面向对象的编程语言,以及诸如“C”编程语言的过程编程语言、或类似的编程语言的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上、部分在用户的计算机上、作为独立的软件包、部分地在用户的计算机上且部分地在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(用于例如,通过使用互联网服务提供商的互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化电子电路来执行计算机可读程序指令,以执行本发明的各方面。
这里参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。将理解,流程图示和/或框图的每个框以及流程图示和/或框图中的框的组合可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,诸如指令使得其通过计算机的处理器或其他可编程数据处理设备执行,创建用于实现在流程图和/或框图块中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机、可编程数据处理装置和/或其他设备以特定方式起作用,使得具有存储在其中的指令的计算机可读存储介质包括一种制品,该制品包括实现流程图和/或框图块中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机,其他可编程装置或其他设备上执行的指令实现在流程图和/或框图块中指定的功能/动作。
附图中的流程图和框图显示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示模块、段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图示的每个框以及框图和/或流程图示中的框的组合可以由执行特定功能或动作或者执行专用硬件和计算机指令的组合的专用基于硬件的系统来实现。
这里使用的术语仅用于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,术语“包括”(和任何形式的包括,例如“包括”和“包含”),“具有”(和任何形式的具有,例如“具有”和“具有”),“包括”(以及任何形式的包括,例如“包括”和“包括”)和“包含”(以及包含任何形式,例如“包含”和“包含”)是开放式连接动词。结果,“包含”,“具有”,“包括”或“包含”一个或多个步骤或元件的方法或设备拥有那些一个或多个步骤或元件,但不限于仅拥有那些一个或多个步骤或元素。同样地,“包括”,“具有”,“包括”或“包含”一个或多个特征的设备的方法或元件的步骤具有那些一个或多个特征,但不限于仅拥有那些特征或者一个或多个特征。此外,以某种方式配置的设备或结构至少以这种方式配置,但是也可以以未列出的方式配置。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物(如果有的话)旨在包括用于结合如具体要求保护的其他要求保护的元件的执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对本发明的描述,但是并不旨在穷举或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的一个或多个方面的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明用于各种各样的实施例的一个或多个方面,其适合于预期的特定用途的修改。
Claims (18)
1.一种电路,包括:
算术计算逻辑,被配置为加上或减去可变长度的操作数以产生以符号幅度数据格式的结果;
溢出检测器,提供指示所述结果是否符合指定的结果长度l的溢出信号,所述溢出检测器在所述算术计算逻辑产生所述结果之前,对所述操作数进行操作,以独立于所述算术计算逻辑产生的所述结果确定所述结果是否适合所述指定的结果长度l;
其中所述操作数包括操作数A和操作数B,并且所述算术计算逻辑被配置为加上可变长度的所述操作数,并且所述溢出检测器使用用于数字生成信号(g项)和数字传播信号(p项),包括9填充的以下等式为操作数A和操作数B实现单独的进位树,并从g项和p项导出进位,所述溢出信号基于进位输出:
M(n-1,…,0)是位向量,如果k<l则M(k)=0,并且如果k>=l则M(k)=1,其中:
数字k的g项:A(k)+B(k)+9*M(k)>=10,其中数字A(k)和B(k)以及潜在的9填充产生进位;以及
数字k的p项:A(k)+B(k)+9*M(k)>=9,数字k传播进位。
2.如权利要求1所述的电路,其中所述溢出检测器与所述算术计算逻辑并行地对所述操作数进行操作。
3.如权利要求1所述的电路,其中所述溢出检测器在所述算术计算逻辑产生以所述符号幅度数据格式的所述结果之前,或与所述算术计算逻辑产生以所述符号幅度数据格式的所述结果并行地提供所述溢出信号。
4.如权利要求1所述的电路,其中所述溢出检测器通过基于所述指定的结果长度l生成填充向量P来确定所述结果是否符合所述指定的结果长度,并且评估所述操作数和所述填充向量P的相应的加上或减去以确定是否存在进位输出,所述溢出信号基于所述进位输出。
5.如权利要求4所述的电路,其中所述操作数包括两个操作数,并且所述溢出检测器检查所述两个操作数和所述填充向量P的3路加上或减去的所述进位输出。
6.如权利要求4所述的电路,其中所述进位输出是n位加法器的,其中n大于指定的结果长度l,并且填充矢量P是通过填充所述指定的结果长度的左边的位产生的,其中所述结果长度的进位输出被传播到最左侧位置,以产生由所述溢出检测器检查的所述进位输出。
7.如权利要求1所述的电路,其中所述操作数是二进制编码的十进制格式,并且所述算术计算逻辑包括符号幅度加法器。
8.一种电路,包括:
算术计算逻辑,被配置为加上或减去可变长度的操作数以产生以符号幅度数据格式的结果;
溢出检测器,提供指示所述结果是否符合指定的结果长度l的溢出信号,所述溢出检测器在所述算术计算逻辑产生所述结果之前,对所述操作数进行操作,以独立于所述算术计算逻辑产生的所述结果确定所述结果是否适合所述指定的结果长度l;
其中所述操作数包括操作数A和操作数B,并且所述算术计算逻辑被配置为减去可变长度的所述操作数,并且所述溢出检测器使用用于数字生成信号(g项)和数字传播信号(p项),包括使用10l的填充的以下等式为操作数A和操作数B实现单独的进位树,其中l是指定的结果长度l:
M(n-1,…,0)是位向量,如果k!=l,则M(k)=0,如果k=l,则M(k)=1:
对于A>B(A-B):
数字k的g项:!A(k)+B(k)+1*M(k)>=16(数字A(k)和B(k)和潜在的1填充生成进位),
数字k的p项:!A(k)+B(k)+1*M(k)>=15(数字k传播进位);以及
对于B>=A(B-A):
数字k的g项:A(k)+!B(k)+1*M(k)>=16(数字A(k)和B(k)和潜在的1填充生成进位),
数字k的p项:A(k)+!B(k)+1*M(k)>=15(数字k传播进位)。
9.一种方法,包括:
提供执行算术运算的电路,该提供包括:
提供算术计算逻辑,配置为加上或减去可变长度的操作数以产生以符号幅度数据格式的结果;以及
提供溢出检测器以提供指示所述结果是否符合指定的结果长度l的溢出信号,所述溢出检测器在所述算术计算逻辑产生所述结果之前,对所述操作数进行操作,以独立于所述算术计算逻辑产生的所述结果确定所述结果是否适合所述指定的结果长度l;
其中所述操作数包括操作数A和操作数B,并且所述算术计算逻辑被配置为加上可变长度的所述操作数,并且所述溢出检测器使用用于数字生成信号(g项)和数字传播信号(p项),包括9填充的以下等式为操作数A和操作数B实现单独的进位树,并从g项和p项导出进位,所述溢出信号基于进位输出:
M(n-1,…,0)是位向量,如果k<l则M(k)=0,并且如果k>=l则M(k)=1,其中:
数字k的g项:A(k)+B(k)+9*M(k)>=10,其中数字A(k)和B(k)以及潜在的9填充产生进位;以及
数字k的p项:A(k)+B(k)+9*M(k)>=9,数字k传播进位。
10.如权利要求9所述的方法,其中所述溢出检测器与所述算术计算逻辑并行地对所述操作数进行操作。
11.如权利要求9所述的方法,其中所述溢出检测器在所述算术计算逻辑产生以所述符号幅度数据格式的所述结果之前,或与所述算术计算逻辑产生以所述符号幅度数据格式的所述结果并行地提供所述溢出信号。
12.如权利要求9所述的方法,其中所述溢出检测器通过基于所述指定的结果长度l生成填充向量P来确定所述结果是否符合所述指定的结果长度,并且评估所述操作数和所述填充向量P的相应的加上或减去以确定是否存在进位输出,所述溢出信号基于所述进位输出。
13.如权利要求12所述的方法,其中所述操作数包括两个操作数,并且所述溢出检测器检查所述两个操作数和所述填充向量P的3路加上或减去的所述进位输出。
14.如权利要求12所述的方法,其中所述进位输出是n位加法器的,其中n大于指定的结果长度l,并且填充矢量P是通过填充所述指定的结果长度的左边的位产生的,其中所述结果长度的进位输出被传播到最左侧位置,以产生由所述溢出检测器检查的所述进位输出。
15.如权利要求9所述的方法,其中所述操作数是二进制编码的十进制格式,并且所述算术计算逻辑包括符号幅度加法器。
16.一种方法,包括:
提供执行算术运算的电路,该提供包括:
提供算术计算逻辑,配置为加上或减去可变长度的操作数以产生以符号幅度数据格式的结果;以及
提供溢出检测器以提供指示所述结果是否符合指定的结果长度l的溢出信号,所述溢出检测器在所述算术计算逻辑产生所述结果之前,对所述操作数进行操作,以独立于所述算术计算逻辑产生的所述结果确定所述结果是否适合所述指定的结果长度l;
其中所述操作数包括操作数A和操作数B,并且所述算术计算逻辑被配置为减去可变长度的所述操作数,并且所述溢出检测器使用用于数字生成信号(g项)和数字传播信号(p项),包括使用10l的填充的以下等式为操作数A和操作数B实现单独的进位树,其中l是指定的结果长度l:
M(n-1,…,0)是位向量,如果k!=l,则M(k)=0,如果k=l,则M(k)=1:
对于A>B(A-B):
数字k的g项:!A(k)+B(k)+1*M(k)>=16(数字A(k)和B(k)和潜在的1填充生成进位),
数字k的p项:!A(k)+B(k)+1*M(k)>=15(数字k传播进位);以及
对于B>=A(B-A):
数字k的g项:A(k)+!B(k)+1*M(k)>=16(数字A(k)和B(k)和潜在的1填充生成进位),
数字k的p项:A(k)+!B(k)+1*M(k)>=15(数字k传播进位)。
17.一种用于检测加上或减去操作的溢出的计算机可读存储介质,其具有嵌入其中的程序指令,所述程序指令可由处理器执行以执行包括以下的方法:
算术地加上或减去可变长度的操作数,以产生以符号幅度数据格式的结果;以及
产生指示所述结果是否符合指定的结果长度l的溢出信号,所述产生在算术加上或减去产生所述结果之前,对所述操作数进行操作,以独立于算术计算逻辑产生的所述结果确定所述结果是否适合所述指定的结果长度l;
其中所述操作数包括操作数A和操作数B,并且所述算术计算逻辑被配置为加上可变长度的所述操作数,并且使用用于数字生成信号(g项)和数字传播信号(p项),包括9填充的以下等式为操作数A和操作数B实现单独的进位树,并从g项和p项导出进位,所述溢出信号基于进位输出:
M(n-1,…,0)是位向量,如果k<l则M(k)=0,并且如果k>=l则M(k)=1,其中:
数字k的g项:A(k)+B(k)+9*M(k)>=10,其中数字A(k)和B(k)以及潜在的9填充产生进位;以及
数字k的p项:A(k)+B(k)+9*M(k)>=9,数字k传播进位。
18.如权利要求17所述的计算机可读存储介质,其中在产生以所述符号幅度数据格式的所述结果之前,或与产生以所述符号幅度数据格式的所述结果并行地提供所述溢出信号。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/372,867 US10067744B2 (en) | 2016-12-08 | 2016-12-08 | Overflow detection for sign-magnitude adders |
US15/372,867 | 2016-12-08 | ||
PCT/IB2017/057532 WO2018104830A1 (en) | 2016-12-08 | 2017-11-30 | Overflow detection for sign-magnitude adders |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110073328A CN110073328A (zh) | 2019-07-30 |
CN110073328B true CN110073328B (zh) | 2023-09-05 |
Family
ID=62489380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780075729.7A Active CN110073328B (zh) | 2016-12-08 | 2017-11-30 | 符号幅度加法器的溢出检测 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10067744B2 (zh) |
JP (1) | JP6975234B2 (zh) |
CN (1) | CN110073328B (zh) |
DE (1) | DE112017004690T5 (zh) |
GB (1) | GB2572719B (zh) |
WO (1) | WO2018104830A1 (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4021655A (en) * | 1976-03-30 | 1977-05-03 | International Business Machines Corporation | Oversized data detection hardware for data processors which store data at variable length destinations |
US4379338A (en) * | 1979-11-22 | 1983-04-05 | Nippon Electric Co., Ltd. | Arithmetic circuit with overflow detection capability |
US4768160A (en) * | 1985-04-16 | 1988-08-30 | Nec Corporation | Arithmetic unit with simple overflow detection system |
US4890253A (en) * | 1988-12-28 | 1989-12-26 | International Business Machines Corporation | Predetermination of result conditions of decimal operations |
US5448509A (en) * | 1993-12-08 | 1995-09-05 | Hewlett-Packard Company | Efficient hardware handling of positive and negative overflow resulting from arithmetic operations |
US5615113A (en) * | 1995-06-16 | 1997-03-25 | Cyrix Corporation | Early signaling of no-overflow for nonrestoring twos complement division |
US7206800B1 (en) * | 2000-08-30 | 2007-04-17 | Micron Technology, Inc. | Overflow detection and clamping with parallel operand processing for fixed-point multipliers |
CN103116529A (zh) * | 2011-07-18 | 2013-05-22 | 英飞凌科技股份有限公司 | 用于实时检测缓冲区溢出致堆内存损坏的方法和设备 |
CN104335165A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务开始/结束指令 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4366548A (en) | 1981-01-02 | 1982-12-28 | Sperry Corporation | Adder for exponent arithmetic |
JPS6211933A (ja) * | 1985-07-09 | 1987-01-20 | Nec Corp | 演算回路 |
US5675528A (en) | 1995-06-16 | 1997-10-07 | Cyrix Corporation | Early detection of overflow and exceptional quotient/remainder pairs for nonrestoring twos complement division |
US6151616A (en) | 1999-04-08 | 2000-11-21 | Advanced Micro Devices, Inc. | Method and circuit for detecting overflow in operand multiplication |
EP1102163A3 (en) * | 1999-11-15 | 2005-06-29 | Texas Instruments Incorporated | Microprocessor with improved instruction set architecture |
DE60015119D1 (de) | 2000-08-01 | 2004-11-25 | St Microelectronics Sa | Sättigung in einer Arithmetik-Einheit |
US7725522B2 (en) * | 2005-04-14 | 2010-05-25 | Texas Instruments Incorporated | High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area |
JP5014920B2 (ja) * | 2007-08-17 | 2012-08-29 | ラピスセミコンダクタ株式会社 | 回路設計方法、ならびにその方法により製造される集積回路 |
US8554822B2 (en) | 2010-06-24 | 2013-10-08 | International Business Machines Corporation | Decimal adder with end around carry |
US9213523B2 (en) * | 2012-06-29 | 2015-12-15 | Intel Corporation | Double rounded combined floating-point multiply and add |
GB2530989B (en) * | 2014-10-06 | 2016-08-17 | Ibm | Decimal and binary floating point rounding |
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
-
2016
- 2016-12-08 US US15/372,867 patent/US10067744B2/en active Active
-
2017
- 2017-11-30 CN CN201780075729.7A patent/CN110073328B/zh active Active
- 2017-11-30 GB GB1909646.0A patent/GB2572719B/en active Active
- 2017-11-30 DE DE112017004690.4T patent/DE112017004690T5/de active Pending
- 2017-11-30 JP JP2019525996A patent/JP6975234B2/ja active Active
- 2017-11-30 WO PCT/IB2017/057532 patent/WO2018104830A1/en active Application Filing
-
2018
- 2018-05-01 US US15/967,812 patent/US10228910B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4021655A (en) * | 1976-03-30 | 1977-05-03 | International Business Machines Corporation | Oversized data detection hardware for data processors which store data at variable length destinations |
US4379338A (en) * | 1979-11-22 | 1983-04-05 | Nippon Electric Co., Ltd. | Arithmetic circuit with overflow detection capability |
US4768160A (en) * | 1985-04-16 | 1988-08-30 | Nec Corporation | Arithmetic unit with simple overflow detection system |
US4890253A (en) * | 1988-12-28 | 1989-12-26 | International Business Machines Corporation | Predetermination of result conditions of decimal operations |
US5448509A (en) * | 1993-12-08 | 1995-09-05 | Hewlett-Packard Company | Efficient hardware handling of positive and negative overflow resulting from arithmetic operations |
US5615113A (en) * | 1995-06-16 | 1997-03-25 | Cyrix Corporation | Early signaling of no-overflow for nonrestoring twos complement division |
US7206800B1 (en) * | 2000-08-30 | 2007-04-17 | Micron Technology, Inc. | Overflow detection and clamping with parallel operand processing for fixed-point multipliers |
CN103116529A (zh) * | 2011-07-18 | 2013-05-22 | 英飞凌科技股份有限公司 | 用于实时检测缓冲区溢出致堆内存损坏的方法和设备 |
CN104335165A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 事务开始/结束指令 |
Also Published As
Publication number | Publication date |
---|---|
US10067744B2 (en) | 2018-09-04 |
WO2018104830A1 (en) | 2018-06-14 |
CN110073328A (zh) | 2019-07-30 |
GB2572719B (en) | 2020-05-20 |
US10228910B2 (en) | 2019-03-12 |
GB2572719A (en) | 2019-10-09 |
US20180253282A1 (en) | 2018-09-06 |
US20180165063A1 (en) | 2018-06-14 |
DE112017004690T5 (de) | 2019-07-04 |
JP2020513612A (ja) | 2020-05-14 |
JP6975234B2 (ja) | 2021-12-01 |
GB201909646D0 (en) | 2019-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102447636B1 (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
US10540142B2 (en) | Accuracy-conserving floating-point value aggregation | |
US3800130A (en) | Fast fourier transform stage using floating point numbers | |
CN110168493B (zh) | 在128位宽的操作数上的融合乘加浮点运算 | |
US9696964B2 (en) | Multiply adder | |
US9959093B2 (en) | Binary fused multiply-add floating-point calculations | |
US10095475B2 (en) | Decimal and binary floating point rounding | |
JP2021525403A (ja) | 改良された低精度の2進浮動小数点形式設定 | |
US20160124713A1 (en) | Fast, energy-efficient exponential computations in simd architectures | |
US10379811B2 (en) | Normalization of a product on a datapath | |
US20160098249A1 (en) | Decimal and binary floating point arithmetic calculations | |
US10140090B2 (en) | Computing and summing up multiple products in a single multiplier | |
US9430190B2 (en) | Fused multiply add pipeline | |
US10296294B2 (en) | Multiply-add operations of binary numbers in an arithmetic unit | |
CN110073328B (zh) | 符号幅度加法器的溢出检测 | |
US20130227250A1 (en) | Simd accelerator for data comparison | |
Vlăduţiu et al. | The Representation of Numbers in Computing Systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |