CN112394904A - 一种浮点数据处理方法、运算器及电子设备 - Google Patents
一种浮点数据处理方法、运算器及电子设备 Download PDFInfo
- Publication number
- CN112394904A CN112394904A CN202011284032.0A CN202011284032A CN112394904A CN 112394904 A CN112394904 A CN 112394904A CN 202011284032 A CN202011284032 A CN 202011284032A CN 112394904 A CN112394904 A CN 112394904A
- Authority
- CN
- China
- Prior art keywords
- source operand
- bit width
- mantissa
- data
- exponent
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 238000001514 detection method Methods 0.000 claims abstract description 28
- 238000010606 normalization Methods 0.000 claims abstract description 24
- 230000008859 change Effects 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 39
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Images
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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请涉及一种浮点数据处理方法、运算器及电子设备,属于计算机技术领域。浮点数据处理方法包括:获取待运算的源操作数,并对所述源操作数进行格式检测;若所述源操作数为非规约形式数据,则对所述源操作数进行规格化处理,以将非规约形式数据的源操作数变为规约形式数据的源操作数;对规格化处理后的源操作数进行运算。本申请实施例中,在遇到非规约形式数据时,不再是直接默认为规约形式数据或者当作0值进行处理,而是通过对其进行规格化处理,将其变为规约形式数据的源操作数,然后再进行运算,有效提高了运算的准确性,且只需执行一次运算就能得到正确的运算结果,无需进行抹掉(flush)流水线的操作,提高了流水线的运行效率。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种浮点数据处理方法、运算器及电子设备。
背景技术
浮点数据的格式分为单精度(Single Precision,SP),双精度(Double Precison,DP),扩展双精度(Extended Precison,EP)等。以双精度的浮点数为例,一共有64bit,分为尾数,带偏移的指数和符号位。其中,尾数为52bit,带偏移的指数为11bit,符号位为1bit。双精度浮点数的尾数还包含1bit隐含位(implied bit)。按照指数和尾数的数值不同,浮点数据又可以分为规约形式数据(normal数据),非规约形式数据(denormal)数据。其中,指数为0,尾数不全为0的数据称为denormal数据。
现行的浮点运算单元功能单一,在通常的浮点运算过程中,默认将输入的SP和DP格式的数据当成normal数据来计算,即将implied bit(隐含位)当成1参与运算。或者,在遇到denormal数据时,直接将denormal数据当作0值处理。第一种处理方法默认所有的SP和DP格式的数据均为normal数据,其缺点是计算准确性差,若需要得到正确的结果,需要抹掉(flush)流水线,重新进行第二次运算,导致运算性能下降。第二种方法虽然会区分数据是normal数据还是denormal数据,但是由于是直接将denormal数据当作0值进行处理,同样存在准确性差的问题。
发明内容
鉴于此,本申请的目的在于提供一种浮点数据处理方法、运算器及电子设备,以改善现有对浮点数据运算存在准确性差的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种浮点数据处理方法,包括:获取待运算的源操作数,并对所述源操作数进行格式检测;若所述源操作数为非规约形式数据,则对所述源操作数进行规格化处理,以将非规约形式数据的源操作数变为规约形式数据的源操作数;对规格化处理后的源操作数进行运算。本申请实施例中,通过对获取的待运算的源操作数进行格式检测,若源操作数为非规约形式数据时,不再是直接默认为规约形式数据或者当作0值进行处理,而是通过对其进行规格化处理,将其变为规约形式数据的源操作数,然后再进行运算,有效提高了运算的准确性,且只需执行一次运算就能得到正确的运算结果,无需进行抹掉(flush)流水线的操作,提高了流水线的运行效率。
结合第一方面实施例的一种可能的实施方式,对所述源操作数进行规格化处理,包括:对所述源操作数进行尾数前导零检测,确定尾数需要左移的位数;根据所述位数对所述源操作数的尾数进行左移,并将所述源操作数的指数减去所述位数。本申请实施例中,通过对源操作数进行尾数前导零检测,以此来确定尾数需要左移的位数,并根据该位数对源操作数的尾数进行左移,并将源操作数的指数减去相应的位数,便可快速将非规约形式数据的源操作数变为规约形式数据的源操作数;同时由于对源操作数的指数减去相应的位数的过程是在运算之前完成,相对于在运算完成之后,再减去相应的位数的过程来说,可以简化控制逻辑复杂度。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:对所述源操作数的指数以及尾数分别进行位宽扩展;相应的,对所述源操作数进行规格化处理,包括:对位宽扩展后的源操作数进行规格化处理。本申请实施例中,还通过对源操作数的指数以及尾数分别进行位宽扩展,以提高运算精度。
结合第一方面实施例的一种可能的实施方式,对所述源操作数的指数进行位宽扩展,包括:将所述指数与初始指数位宽对应的偏移量相减,得到两者的差值;将所述差值与扩展后的指数位宽对应的偏移量相加,相加的结果即为扩展后的指数。本申请实施例中,在进行指数位宽扩展时,将扩展时额外引入的偏移量考虑在内,使得基于扩展后的数据进行运算时,不会出现运算结果不准确的情况。
结合第一方面实施例的一种可能的实施方式,对所述源操作数的尾数进行位宽扩展,包括:在所述尾数的首部增加一个所述源操作数的隐含位对应的数值,在所述尾数的尾部增加i-1个零,从而将所述尾数的位宽扩展i位,i为大于等于1的整数。本申请实施例中,在对尾数进行扩展时,将源操作数的隐含位(denormal数据隐含位为0,normal数据,隐含位为1)也考虑进去,在保证增加精度的同时,能有效保证计算结果的准确性。
结合第一方面实施例的一种可能的实施方式,对规格化处理后的源操作数进行运算之后,所述方法还包括:将运算结果转换为位宽与扩展前的位宽相同的标准数据。本申请实施例中,在对位宽扩展后的源操作数进行运算之后,还要将运算结果转换为位宽与扩展前的位宽相同的标准数据,以保证前后数据的一致性。
结合第一方面实施例的一种可能的实施方式,将运算结果转换为位宽与扩展前的位宽相同的标准数据,包括:对所述运算结果的尾数部分进行舍入操作,得到位宽与扩展前的位宽相同的尾数数据;将所述运算结果的指数部分减去扩展时引入的偏移量,得到位宽与扩展前的位宽相同的指数数据,其中,所述扩展时引入的偏移量为扩展后的指数位宽对应的偏移量与初始指数位宽对应的偏移量的差值。本申请实施例中,通过对尾数部分进行舍入操作,便可得到位宽与扩展前的位宽相同的尾数数据,对指数部分,需要减去扩展时引入的偏移量,以保证结果的准确性。
第二方面,本申请实施例还提供了一种运算器,包括:操作性选择单元、格式检测单元、规格化处理单元、运算单元;操作性选择单元,用于获取待运算的源操作数;格式检测单元,用于对所述源操作数进行格式检测;规格化处理单元,用于若所述源操作数为非规约形式数据,则对所述源操作数进行规格化处理,以将非规约形式数据的源操作数变为规约形式数据的源操作数;运算单元,用于对规格化处理后的源操作数进行运算。
结合第二方面实施例的一种可能的实施方式,所述规格化处理单元,用于:对所述源操作数进行尾数前导零检测,确定尾数需要左移的位数;根据所述位数对所述源操作数的尾数进行左移,并将所述源操作数的指数减去所述位数。
结合第二方面实施例的一种可能的实施方式,所述运算器还包括:位宽扩展单元,用于对所述源操作数的指数以及尾数分别进行位宽扩展;相应的,所述规格化处理单元,还用于对位宽扩展后的源操作数进行规格化处理。
结合第二方面实施例的一种可能的实施方式,所述位宽扩展单元,用于:将所述指数与初始指数位宽对应的偏移量相减,得到两者的差值;将所述差值与扩展后的指数位宽对应的偏移量相加,相加的结果即为扩展后的指数。
结合第二方面实施例的一种可能的实施方式,所述位宽扩展单元,用于在所述尾数的首部增加一个所述源操作数的隐含位对应的数值,在所述尾数的尾部增加i-1个零,从而将所述尾数的位宽扩展i位,i为大于等于1的整数。
结合第二方面实施例的一种可能的实施方式,所述运算器还包括:结果舍入单元,用于将运算结果转换为位宽与扩展前的位宽相同的标准数据。
结合第二方面实施例的一种可能的实施方式,结果舍入单元,用于:对所述运算结果的尾数部分进行舍入操作,得到位宽与扩展前的位宽相同的尾数数据;将所述运算结果的指数部分减去扩展时引入的偏移量,得到位宽与扩展前的位宽相同的指数数据,其中,所述扩展时引入的偏移量为扩展后的指数位宽对应的偏移量与初始指数位宽对应的偏移量的差值。
第三方面,本申请实施例还提供了一种电子设备,包括本体和如执行上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的运算器。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种浮点数据处理方法的流程示意图。
图2示出了本申请实施例提供的又一种浮点数据处理方法的流程示意图。
图3示出了本申请实施例提供的一种运算器的结构示意图。
图4示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
鉴于现有浮点运算过程中,由于浮点运算单元功能单一,对于denormal数据的处理要么是默认为normal数据,要么是直接当作0值处理,导致运算的准确性差的问题。因此,本申请实施例提供了一种浮点数据处理方法,在遇到denormal数据时,不再是简单地将其默认为normal数据或者直接当作0值进行处理,而是通过规格化处理,将其转换为normal数据,再进行运算,从而极大地提高了运算的准确性。为了便于理解,下面将结合图2,对本申请实施例提供的浮点数据处理方法进行说明。
步骤S101:获取待运算的源操作数,并对所述源操作数进行格式检测。
获取待进行浮点运算的源操作数(包含2个要进行加/减/乘/除运算的两个操作数,如为第一源操作数和第二源操作数),并对获取的源操作数进行格式检测。
其中,浮点数据的格式可以分为半精度(Half Precision,HP,共16bit,分为尾数,带偏移的指数和符号位,其中,符号位为1bit,尾数为10bit,指数为5bit),单精度(SinglePrecision,SP,共32bit,分为尾数,带偏移的指数和符号位,其中,符号位为1bit,尾数为23bit,指数为8bit),双精度(Double Precison,DP,共64bit,分为尾数,带偏移的指数和符号位,其中,符号位为1bit,尾数为52bit,指数为11bit),扩展双精度(Extended Precison,EP,共80bit,分为尾数,带偏移的指数,隐含位和符号位,其中,符号位为1bit,隐含位为1bit,尾数为63bit,指数为15bit)。按照指数和尾数的数值不同,浮点数据又可以分为规约形式数据(normal数据),非规约形式数据(denormal)数据。其中,指数为0,尾数不全为0的数据称为denormal数据。通过检测指数与尾数的数值情况,可以区分源操作数为normal数据还是denormal数据。此外,除了能区分源操作数为normal数据还是denormal数据外,还可以区分源操作数是不是为无穷大或者不是数字(Not a Number,NaN)等。若源操作数为NaN或无穷大,则可以直接给出约定的结果,而无需后续的步骤。
以双精度的浮点数为例,其normal数据以及denormal数据下的指数以及尾数的变化,如表1所示。
表1
步骤S102:若所述源操作数为非规约形式数据,则对所述源操作数进行规格化处理。
若源操作数为denormal数据,则对类型为denormal数据的源操作数进行规格化处理,以将非规约形式数据的源操作数变为规约形式数据的源操作数。若源操作数为normal数据,则可以直接进行运算。
一种实施方式下,第一源操作数和第二源操作数可以均为normal数据,该种实施方式下,可以直接将第一源操作数和第二源操作数进行运算。又一种实施方式下,两个源操作数中一个为denormal数据,另一个为normal数据,如第一源操作数为normal数据,第二源操作数为denormal数据,或者,第一源操作数为的normal数据,第二源操作数为normal数据,此时,只需要对类型为denormal数据的源操作数进行规格化处理。又一种实施方式下,两个源操作数均为denormal数据,则需要分别进行规格化处理。
其中,对源操作数进行规格化处理的过程可以是:对源操作数进行尾数前导零检测,确定尾数需要左移的位数,根据需要左移的位数对源操作数的尾数进行左移,并将源操作数的指数减去相应的左移位数。假设源操作数的尾数为52bit,前面(左侧)51位均为0,最后一位为1,则尾数前导零检测确定尾数需要左移的位数为51,则将前面的51个0移动到尾部(右侧)去,变为10000……000。又例如,假设前面(左侧)有10个0,则需要左移10位,将前面的10个0移动到尾部(右侧)去,变成1xxxxxxx格式的数据,其中,“xxxxxxx”可以全部是0,也可以全部是1,也可以是由0和1组合的任意数,只要位宽为51bit即可。
对尾部部分进行左移(相当于放大)之后,指数部分也应该相应的减少对应的位数,如左移位数为51,则指数部分也应该减少51,又例如,左移位数为10,则指数部分也应该减少10。例如,假设指数为0_1100_0000_0001,若左移的位数为13,则指数需要减去13,也即0_1100_0000_0001–1101=0_1011_1111_0100。
其中,需要说明的是,将源操作数的指数减去相应的左移位数的过程也可以不在对源操作数进行规格化的时候做,该过程可以是在运行之后,在得到运算结果时,再减少相应的左移位数,两种方式得到的最终结果是一样的。因此,又一种实施方式下,对源操作数进行规格化处理可以不包括将源操作数的指数减去相应的左移位数,此时,对源操作数进行规格化处理的过程为:对源操作数进行尾数前导零检测,确定尾数需要左移的位数,根据位数对源操作数的尾数进行左移。
步骤S103:对规格化处理后的源操作数进行运算。
对规格化处理后的源操作数以及规约形式数据的源操作数进行运算。若两个源操作数均为denormal数据,则两个都需要进行规格化处理,然后再进行运算,若一个为normal数据,一个为denormal数据,则对规格化处理后的denormal数据与normal数据进行运算,若两个均为normal数据,则可以直接进行运算。其中,在进行运算时,是将两个源操作数的指数与指数进行运算,尾数与尾数进行运算,最后在根据指数的运算结果以及尾数的运算结果得到最终的结果。需要说明的是,此处的运算包括加法、乘法、减法、除法运算。具体的运算过程已经为本领域技术人员所熟知,此处不再说明。
一种可选地实施方式下,为了进一步提高计算的精度,该方法还包括:对源操作数的指数以及尾数分别进行位宽扩展,如图2所示。相应的,若源操作数为非规约形式数据,则对源操作数进行规格化处理变为对位宽扩展后的源操作数进行规格化处理。其中,需要说明的是,在该种实施方式下,无论取待运算的源操作数是normal数据还是denormal数据,均需要进行位宽扩展,且两个源操作数的位宽扩展宽度应一致。若源操作数为denormal数据,则在扩展后,还需要进一步进行规格化处理,该过程与上述的规格化处理过程一致。
其中,对源操作数的尾数进行位宽扩展的过程可以是:在尾数的首部增加一个源操作数的隐含位对应的数值,在尾数的尾部增加i-1个零,从而将尾数的位宽扩展i位,i为大于等于1的整数。以52bit的尾数为例,假设需要将其扩展为64位。假设源操作数为normal数据,52bit的尾数假设为:0101_0101_0101_0101_0101_0101_0101_0101_0101_0101_0101_0101_1111。对于normal数据,其隐含位对应的数值为1,则直接在尾数的首部增加一个1,在尾部增加11个0,从而将52bit的尾数变为64bit的尾数,扩展后的尾数变为:
1_0101_0101_0101_0101_0101_0101_0101_0101_0101_0101_0101_0101_1111_00000000000。
假设源操作数为denormal数据,52bit的尾数为0000_0000_0000_1010_1010_1010_1010_1010_1010_1010_1010_1010_1010。对于denormal数据,其隐含位对应的数值为0,则直接在尾数的首部增加一个0,在尾部增加11个0,从而将52bit的尾数变为64bit的尾数,扩展后的尾数变为:
0_0000_0000_0000_1010_1010_1010_1010_1010_1010_1010_1010_1010_1010_00000000000。
其中,需要说明的是,对双精度数据的尾数的扩展并不限于64bit,其可以是其他数值,例如54、55、60等;且此处以是源操作数为双精度数为例进行说明的,不同格式的浮点数据,对应的位宽不同,相应的扩展规则也不同,例如,HP的尾数为10bit,SP的尾数为23bit,EP的尾数为63bit,DP的尾数为52bit,因此不能将上述示例的52bit的尾数扩展成64bit的特例,理解成是对本申请的限制。
其中,对源操作数的指数进行位宽扩展的过程可以是:将指数与初始指数位宽对应的偏移量相减,得到两者的差值,将差值与扩展后的指数位宽对应的偏移量相加,相加的结果即为扩展后的指数。为了便于理解,以双精度数的源操作数为例,则指数的位宽为11bit,假设将其扩展为13bit。若源操作数为normal数据,假设11bit的指数为:10101101101,由于11bit的指数位宽对应的偏移量为1023=210-1,扩展后的指数位宽(13bit)对应的偏移量为4095=212-1。其中,1023对应的二进制为011_1111_1111,4095对应的二进制为0_1111_1111_1111,则用11bit指数减去初始指数位宽(11bit)对应的偏移量:
10101101101-01111111111=1_0110_1110;然后再加上扩展后的指数位宽对应的偏移量,便可得到最终的指数:
1_0110_1110+0_1111_1111_1111=1_0001_0110_1101。
若源操作数为denormal数据,11bit的指数为:00000000000,由于11bit的指数位宽对应的偏移量为1022=210-2,扩展后的指数位宽(13bit)对应的偏移量为4095=212-1。其中,1022对应的二进制为011_1111_1111,4095对应的二进制为0_1111_1111_1110,则用11bit指数减去初始指数位宽(11bit)对应的偏移量:
00000000000-01111111111=1100_0000_0010,其中,位于首部(左侧)的1为符号位(1表示为负,0表示为正,在为正的时候,符号位可以省略);然后再加上扩展后的指数位宽对应的偏移量,便可得到最终的指数:
00000000000-01111111110+0_1111_1111_1111=1_0001_0110_1101。
其中,需要说明的是,对双精度数据的指数的扩展并不限于13bit,其可以是其他数值如12(对应的偏移量为211-1)、14(对应的偏移量为213-1)、15(对应的偏移量为214-1)等,只要能将扩展后的指数变为不全为0即可,也即变成normal数据。且此处以是源操作数为双精度数为例进行说明的,不同格式的浮点数据,对应的位宽不同,相应的扩展规则也不同,例如,HP的指数为5bit,SP的指数为8bit,EP的指数为15bit,DP的指数为11bit,因此不能将上述示例的52bit的尾数扩展成64bit的特例,理解成是对本申请的限制。
其中,denormal数据的偏移量比normal数据的偏移量少1,如HP的5bit的偏移量,对于normal数据为15=24-1;denormal数据为14=24-2;对于SP的8bit指数的偏移量,对于normal数据为127=27-1;denormal数据为126=27-2;EP的15bit指数为偏移量,对于normal数据为16383=214-1;denormal数据为16382=214-2。
在该种实施方式下,在对源操作的位宽进行扩展后,还需要对原本为denormal数据的源操作数进行格式规格化处理,例如,denormal数据原本52bit为
0000_0000_0000_1010_1010_1010_1010_1010_1010_1010_1010_1010_1010,经过扩展后,变为64bit的尾数:
0_0000_0000_0000_1010_1010_1010_1010_1010_1010_1010_1010_1010_1010_00000000000,对其进行前导零检测,则需要左移13位(首部有13个0)则,尾数需要左移13-bit,变成如下结果:
1010_1010_1010_1010_1010_1010_1010_1010_1010_1010_00000000000_0000000000000。
其中,在对扩展后的源操作数进行运算之后,所述方法还包括:将运算结果转换为位宽与扩展前的位宽相同的标准数据。其过程可以是:对运算结果的尾数部分进行舍入操作,得到位宽与扩展前的位宽相同的尾数数据,将运算结果的指数部分减去扩展时引入的偏移量,得到位宽与扩展前的位宽相同的指数数据,其中,扩展时引入的偏移量为扩展后的指数位宽对应的偏移量与初始指数位宽对应的偏移量的差值。为了便于理解,以64bit的尾数转换为52bit的尾数为例,则需要将64bit的尾数进行舍入操作,将其转化为52bit的尾数,也即从64bit的尾数中选取靠近前面(左侧)52bit的数。其中,舍入时可以是向上舍入,也可以是向下舍入,若为向上舍入,则若后面12bit中只要有1个bit位的值为1,就进1,除非是后面12bit中全部为0,才不进1;向下舍入则,不论后面12bit中数值如何均不用向上进1。
对于指数部分的转换,以13bit的转换为例,在将11bit的指数扩展为13bit的指数所引入的偏移量为212-210=3072;因此,在转换时,将运算的指数结果减去3072对应的二进制的值,便可得到位宽为11bit的指数数据。
在将运算结果转换为位宽与扩展前的位宽相同的标准数据后,将其进行存储即可。
此外,在得到运算结果后,还可以进一步对运算结果有无异常进行检测,若没有异常则输出正确结果,若存在异常,则对于异常结果需要标识相应的异常标志位。其中,运算结果可能会出现上溢、下溢、精度异常等。该部分内容已经为本领域技术人员所熟知,此处不再介绍。
本申请实施例还提供了一种运算器,如图3所示。该运算器包括:操作性选择单元、格式检测单元、规格化处理单元、运算单元。
其中,操作性选择单元(可以是选择器),用于获取待运算的源操作数,同时将获取的源操作数输入格式检测单元,例如根据控制器/调度器输入的选择信号,从多路数据来源中的选择对应的源操作数,并将其输入格式检测单元。
格式检测单元,用于对源操作数进行格式检测,检测源操作数是denormal数据、normal数据、NaN以及无穷大;若为NaN以及无穷大,则可以直接给出约定结果,若为normal数据,则可以直接输入运算单元,若为denormal数据,则将denormal数据输入规格化处理单元。
规格化处理单元,用于若所述源操作数为非规约形式数据,则对所述源操作数进行规格化处理,以将非规约形式数据的源操作数变为规约形式数据的源操作数。可选地,规格化处理单元,具体用于:对所述源操作数进行尾数前导零检测,确定尾数需要左移的位数;根据所述位数对所述源操作数的尾数进行左移,并将所述源操作数的指数减去所述位数。此外,规格化处理单元还用于将规格化处理后的源操作数输入运算单元。
运算单元,用于对输入的源操作数进行运算,若源操作数为denormal数据,则对规格化处理后的源操作数进行运算。其中,运算可以是浮点加/减法运算,乘/除法运算。
作为一种可选地实施方式,该运算器还包括:位宽扩展单元,用于对所述源操作数的指数以及尾数分别进行位宽扩展。相应的,所述规格化处理单元,还用于对位宽扩展后的源操作数进行规格化处理。其中,需要说明的是,图3所示的运算器仅是众多运算器实施例中的一种,如一种实施方式下,可以不包括位宽扩展单元,因此不能将图3所示的示例,理解成是对本申请运算器的限制。
其中,在对源操作数的指数的位宽进行扩展时,所述位宽扩展单元,用于:将所述指数与初始指数位宽对应的偏移量相减,得到两者的差值;将所述差值与扩展后的指数位宽对应的偏移量相加,相加的结果即为扩展后的指数。在对源操作数的尾数的位宽进行扩展时,所述位宽扩展单元,用于在所述尾数的首部增加一个所述源操作数的隐含位对应的数值,在所述尾数的尾部增加i-1个零,从而将所述尾数的位宽扩展i位,i为大于等于1的整数。
可选地,所述运算器还包括:结果舍入单元,用于将运算结果转换为位宽与扩展前的位宽相同的标准数据。经过运算单元运算的结果是扩展后的数据宽度,例如,指数为13bit,尾数为64bit,需要将结果转换成标准DP格式。
此外,该运算器还可以包括:结果异常判断单元,用于进一步对运算结果有无异常进行检测,若没有异常则输出正确结果,若存在异常,则对于异常结果需要标识相应的异常标志位。
其中,上述的操作性选择单元、格式检测单元、规格化处理单元以及位宽扩展单元均可以集成在同一个模块单元中,如操作数选择模块;结果舍入单元以及结果异常判断单元也可以是集成在同一个模块单元中,如结果舍入及异常处理模块。上述的操作性选择单元、格式检测单元、规格化处理单元以及位宽扩展单元、运算单元、结果舍入单元以及结果异常判断单元均可以集成在同一个电路板上,集成在同一个集成芯片中。
本申请实施例所提供的运算器,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,运算器实施例部分未提及之处,可参考前述方法实施例中相应内容。
本申请实施例还提供了一种电子设备,如图4所示,为本申请实施例提供的一种的电子设备的结构框图。该电子设备包括本体(如译码电路、控制器/调度器、存储器)和运算器。
其中,译码电路与控制器/调度器连接,存储器与运算器以及控制器/调度器连接,控制器/调度器与运算器连接。
浮点指令经过译码电路译码后,分配给控制器/调度器。控制器/调度器用于根据译码电路发送的浮点指令完成浮点微操作(micro operation,uop,其中,一条x86指令可能会翻译成多条uop去做)的调度,并发送给运算器,以及给出相应的控制信号。运算器中的选择操作数模块根据控制器/调度器发送的控制信号,从存储器存储的多路数据中选择出与控制信号对应一路数据送给运算单元。运算单元算出结果后送给舍入和异常处理模块进行数据舍入和异常处理,并更新异常标志位。最后将正确的结果写入存储器或其他运算单元。
其中,存储器可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
控制器/调度器可以是一种集成电路芯片,具有信号的处理能力。上述的控制器/调度器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该控制器/调度器也可以是任何常规的控制器/调度器等。
其中,上述的电子设备,包括但不限于计算机、服务器等。
本申请实施例还提供了一种非易失性计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备运行时,执行上述所示的浮点数据处理方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (15)
1.一种浮点数据处理方法,其特征在于,包括:
获取待运算的源操作数,并对所述源操作数进行格式检测;
若所述源操作数为非规约形式数据,则对所述源操作数进行规格化处理,以将非规约形式数据的源操作数变为规约形式数据的源操作数;
对规格化处理后的源操作数进行运算。
2.根据权利要求1所述的方法,其特征在于,对所述源操作数进行规格化处理,包括:
对所述源操作数进行尾数前导零检测,确定尾数需要左移的位数;
根据所述位数对所述源操作数的尾数进行左移,并将所述源操作数的指数减去所述位数。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述源操作数的指数以及尾数分别进行位宽扩展;
相应的,对所述源操作数进行规格化处理,包括:
对位宽扩展后的源操作数进行规格化处理。
4.根据权利要求3所述的方法,其特征在于,对所述源操作数的指数进行位宽扩展,包括:
将所述指数与初始指数位宽对应的偏移量相减,得到两者的差值;
将所述差值与扩展后的指数位宽对应的偏移量相加,相加的结果即为扩展后的指数。
5.根据权利要求3所述的方法,其特征在于,对所述源操作数的尾数进行位宽扩展,包括:
在所述尾数的首部增加一个所述源操作数的隐含位对应的数值,在所述尾数的尾部增加i-1个零,从而将所述尾数的位宽扩展i位,i为大于等于1的整数。
6.根据权利要求3所述的方法,其特征在于,对规格化处理后的源操作数进行运算之后,所述方法还包括:
将运算结果转换为位宽与扩展前的位宽相同的标准数据。
7.根据权利要求6所述的方法,其特征在于,将运算结果转换为位宽与扩展前的位宽相同的标准数据,包括:
对所述运算结果的尾数部分进行舍入操作,得到位宽与扩展前的位宽相同的尾数数据;
将所述运算结果的指数部分减去扩展时引入的偏移量,得到位宽与扩展前的位宽相同的指数数据,其中,所述扩展时引入的偏移量为扩展后的指数位宽对应的偏移量与初始指数位宽对应的偏移量的差值。
8.一种运算器,其特征在于,包括:
操作性选择单元,用于获取待运算的源操作数;
格式检测单元,用于对所述源操作数进行格式检测;
规格化处理单元,用于若所述源操作数为非规约形式数据,则对所述源操作数进行规格化处理,以将非规约形式数据的源操作数变为规约形式数据的源操作数;
运算单元,用于对规格化处理后的源操作数进行运算。
9.根据权利要求8所述的运算器,其特征在于,所述规格化处理单元,用于:
对所述源操作数进行尾数前导零检测,确定尾数需要左移的位数;
根据所述位数对所述源操作数的尾数进行左移,并将所述源操作数的指数减去所述位数。
10.根据权利要求8所述的运算器,其特征在于,所述运算器还包括:
位宽扩展单元,用于对所述源操作数的指数以及尾数分别进行位宽扩展;相应的,
所述规格化处理单元,还用于对位宽扩展后的源操作数进行规格化处理。
11.根据权利要求10所述的运算器,其特征在于,所述位宽扩展单元,用于:
将所述指数与初始指数位宽对应的偏移量相减,得到两者的差值;
将所述差值与扩展后的指数位宽对应的偏移量相加,相加的结果即为扩展后的指数。
12.根据权利要求10所述的运算器,其特征在于,所述位宽扩展单元,用于在所述尾数的首部增加一个所述源操作数的隐含位对应的数值,在所述尾数的尾部增加i-1个零,从而将所述尾数的位宽扩展i位,i为大于等于1的整数。
13.根据权利要求10所述的运算器,其特征在于,所述运算器还包括:
结果舍入单元,用于将运算结果转换为位宽与扩展前的位宽相同的标准数据。
14.根据权利要求13所述的运算器,其特征在于,结果舍入单元,用于:
对所述运算结果的尾数部分进行舍入操作,得到位宽与扩展前的位宽相同的尾数数据;
将所述运算结果的指数部分减去扩展时引入的偏移量,得到位宽与扩展前的位宽相同的指数数据,其中,所述扩展时引入的偏移量为扩展后的指数位宽对应的偏移量与初始指数位宽对应的偏移量的差值。
15.一种电子设备,其特征在于,包括本体和如权利要求8-14任一项所述的运算器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011284032.0A CN112394904B (zh) | 2020-11-16 | 2020-11-16 | 一种浮点数据处理方法、运算器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011284032.0A CN112394904B (zh) | 2020-11-16 | 2020-11-16 | 一种浮点数据处理方法、运算器及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112394904A true CN112394904A (zh) | 2021-02-23 |
CN112394904B CN112394904B (zh) | 2023-12-22 |
Family
ID=74600904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011284032.0A Active CN112394904B (zh) | 2020-11-16 | 2020-11-16 | 一种浮点数据处理方法、运算器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112394904B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968175A (zh) * | 2022-06-06 | 2022-08-30 | 湖南毂梁微电子有限公司 | 一种用于智能计算加速的可配置移位加法融合单元 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620589A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 处理器中的有效并行浮点异常处理 |
CN107133012A (zh) * | 2017-04-27 | 2017-09-05 | 湖南省瞬渺通信技术有限公司 | 一种高速自定义浮点复数除法器 |
-
2020
- 2020-11-16 CN CN202011284032.0A patent/CN112394904B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620589A (zh) * | 2008-06-30 | 2010-01-06 | 英特尔公司 | 处理器中的有效并行浮点异常处理 |
CN107133012A (zh) * | 2017-04-27 | 2017-09-05 | 湖南省瞬渺通信技术有限公司 | 一种高速自定义浮点复数除法器 |
Non-Patent Citations (1)
Title |
---|
潘雪峰 等: "《计算机组成原理》", 31 January 2016, 北京理工大学出版社, pages: 19 - 24 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968175A (zh) * | 2022-06-06 | 2022-08-30 | 湖南毂梁微电子有限公司 | 一种用于智能计算加速的可配置移位加法融合单元 |
Also Published As
Publication number | Publication date |
---|---|
CN112394904B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4953644B2 (ja) | 正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法 | |
US7949696B2 (en) | Floating-point number arithmetic circuit for handling immediate values | |
JP4938844B2 (ja) | 非正規化オペランドのためのモードベース乗算−加算プロセッサ | |
US5892697A (en) | Method and apparatus for handling overflow and underflow in processing floating-point numbers | |
US8214417B2 (en) | Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction | |
CN101263467B (zh) | 浮点规格化和反规格化 | |
US8577948B2 (en) | Split path multiply accumulate unit | |
CN107769791B (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
US9696964B2 (en) | Multiply adder | |
KR20080055985A (ko) | 선택가능 준정밀도를 가진 부동―소수점 프로세서 | |
JPH10207693A (ja) | 浮動小数点演算ユニット | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
US8291003B2 (en) | Supporting multiple formats in a floating point processor | |
US5943249A (en) | Method and apparatus to perform pipelined denormalization of floating-point results | |
US9317250B2 (en) | Floating point multiply-add unit with denormal number support | |
JPH09212337A (ja) | 浮動小数点演算処理装置 | |
CN112394904A (zh) | 一种浮点数据处理方法、运算器及电子设备 | |
CN106997284B (zh) | 实现浮点运算操作的方法和装置 | |
JP6290886B2 (ja) | 装飾構成に基づくモーダル区間計算 | |
US7401107B2 (en) | Data processing apparatus and method for converting a fixed point number to a floating point number | |
GB2559039B (en) | Leading zero anticipation | |
US6571266B1 (en) | Method for acquiring FMAC rounding parameters | |
JP2010218197A (ja) | 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム | |
KR101922462B1 (ko) | 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법 | |
US8244783B2 (en) | Normalizer shift prediction for log estimate instructions |
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 | ||
CB02 | Change of applicant information |
Address after: Industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Huayuan Industrial Zone, Binhai New Area, Tianjin 300450 Applicant after: Haiguang Information Technology Co.,Ltd. Address before: 100082 industrial incubation-3-8, North 2-204, 18 Haitai West Road, Huayuan Industrial Zone, Haidian District, Beijing Applicant before: Haiguang Information Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |