CN106990937B - 一种浮点数处理装置和处理方法 - Google Patents

一种浮点数处理装置和处理方法 Download PDF

Info

Publication number
CN106990937B
CN106990937B CN201610038994.5A CN201610038994A CN106990937B CN 106990937 B CN106990937 B CN 106990937B CN 201610038994 A CN201610038994 A CN 201610038994A CN 106990937 B CN106990937 B CN 106990937B
Authority
CN
China
Prior art keywords
floating point
point number
bit
floating
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.)
Active
Application number
CN201610038994.5A
Other languages
English (en)
Other versions
CN106990937A (zh
Inventor
李震
刘少礼
陈天石
陈云霁
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.)
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Cambricon Technologies Corp Ltd
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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202011187582.0A priority Critical patent/CN112230881A/zh
Priority to CN201610038994.5A priority patent/CN106990937B/zh
Priority to PCT/CN2016/078508 priority patent/WO2017124645A1/zh
Publication of CN106990937A publication Critical patent/CN106990937A/zh
Priority to US15/974,807 priority patent/US10574260B2/en
Application granted granted Critical
Publication of CN106990937B publication Critical patent/CN106990937B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • 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/57Arithmetic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Nonlinear Science (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Complex Calculations (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

本披露提供了一种浮点数处理装置和处理方法,其中,处理方法包括转换单元和运算单元,转换单元接收标准格式浮点数,并将标准格式浮点数的位宽进行压缩,生成低位宽浮点数,运算单元对低位宽浮点数进行运算,得到运算结果。本披露能根据不同的标准格式浮点数,得到不同指数位宽的低位宽浮点数,该低位宽浮点数能够满足神经网络算法、图像处理等算法的数据精度要求的同时,避免了浮点数运算功率的浪费。

Description

一种浮点数处理装置和处理方法
技术领域
本披露属于计算机领域,尤其涉及一种低功耗自由指数域浮点数处理装置和处理方法。
背景技术
近年来,在各领域的应用中对高动态范围的要求逐渐成为重要的一环,相对于定点数而言,等同数据位宽的浮点数具有更高的动态范围,所以浮点数越发受到重视。因此,强大计算系统通常采用浮点数处理器作为主处理器的一部分或者作为协处理器。
浮点数用于近似表示某个实数,其格式通常包括符号位S、指数位E和尾数位M,可表示为{S,E,M},在计算机中为了便于存储,浮点数的幂的基数为2,即浮点数{S,E,M}=(-1)S×(1+M)×2E
浮点数的精度由用于表示尾数的数据位宽界定。尾数数据位宽越大,浮点数的精度越高。现有的通用处理器中,大多采用IEEE 754标准的浮点数进行加、减、乘、除运算。在IEEE 754标准的32位浮点格式中,其具有1位符号位、8位指数位、23位尾数,其中,尾数二进制小数点左方的整数位是隐含的。IEEE 754同时还有一种更高精度、更高动态范围的64位格式。
然而,无论采用何种浮点格式,由于浮点数自身的特点,决定了浮点数的运算更加复杂,因此如何提高浮点数运算速度并降低运算功耗成为现如今硬件设计的核心问题之一。
通用处理器通常局限于单一的浮点数格式,固然这种格式能满足一些应用的精度以及动态范围的需求,然而其他应用可能不需要。例如神经网络算法中,对于指数较大的浮点数(局部诱导域)所需的精度较低;而指数较小的浮点数(权重或者方向传播算法中的权重变化量和梯度)则需要较高精度。因为在神经网络算法中的激活函数是非线性的,如sigmoid、tanh函数,不同精度局部诱导域经过激活函数作用后结果的准确度差别不大,高精度的局部诱导域浮点表示将造成不必要的功耗浪费。同样,权重、方向传播算法中的权重变化量和梯度则需要较高的精度,但是这类数据的是比较小,所需的动态范围较小,即指数较小。
CN200810216631所述的提供的浮动精度的浮点数格式及其运算方法中,浮点数的精度是可变的,但是其指数部分是固定不变。而且此种浮点数格式的数据结构较为复杂,不利于提高浮点运算速率。
CN200780006490所述的可选次精度的浮点数运算器,其中,浮点数的格式是固定不变,提供一个过剩位移除高精度尾数部分功率,从而降低浮点运算功率。然而此种方法中浮点数依然是采用上述的单一浮点数格式表示,将造成一定程度的存储空间及功耗的浪费。
发明内容
(一)要解决的技术问题
本披露的目的在于,提供一种浮点数处理装置,能够对标准格式的浮点数的位宽进行压缩,生成低位宽的浮点数,从而节省存储空间,还可以降低浮点数运算功耗。
(二)技术方案
本披露提供一种浮点数处理装置,包括:
转换单元,用于接收至少一个第一浮点数,并将至少一个第一浮点数转换为对应数量的第二浮点数,其中,每个第二浮点数包括1位符号位、N位指数位和C-N-1位尾数位,C、N为大于等于1的整数,C为第二浮点数的总位数,N的数值是由至少一个第一浮点数确定的;
运算单元,用于对第二浮点数进行运算,得到运算结果。
进一步的,每个所述第一浮点数包括1位符号位、K1位指数位和K2位尾数位,所述第一浮点数的数值V1表达式为:
V1=(-1)S×(1+M)×2E
其中,S为所述第一浮点数的符号位的值、E为所述第一浮点数的K1位指数位的值,M为所述第一浮点数的K2位尾数位的值;
所述第二浮点数中的N的数值为:
N=log2(Emax-Emin)/2,
其中,Emax为至少一个第一浮点数中E的最大值,Emin为至少一个第一浮点数中E的最小值;
所述第二浮点数的符号位等于所述第一浮点数的符号位;
所述第二浮点数的C-N-1位尾数位等于第一浮点数K2位尾数位中的前C-N-1位;
N位指数位的数值E′为:
E′=E-B+A,
其中,所述B为所述第一浮点数的指数位的偏移量,A为第二浮点数的指数基数,其表达式为:
A=(Emax+Emin)/2。
进一步的,所述转换单元还用于接收第二浮点数,并将所述第二浮点数转换为第一浮点数,其中:
所述第一浮点数的符号位等于所述第二浮点数的符号位;
所述第一浮点数K2位尾数位中的前C-N-1位等于第二浮点数的C-N-1位尾数位,后K2+1+N-C位为0;
N位指数位的数值E′为:
E′=E-B+A。
进一步的,所述转换单元包括第一寄存器和第二寄存器,所述第一寄存器用于存储N的数值,所述第二寄存器用于存储所述第二浮点数的指数基数A的数值。
进一步的,还包括:存储单元,用于存储所述第一浮点数和第二浮点数。
进一步的,浮点数处理装置利用一总线与外部处理装置进行数据交互。
进一步的,所述浮点数处理装置作为一个主处理器或协处理器,利用一总线与外部的处理装置进行数据交互。
本披露还提供一种浮点数处理方法,包括:
使用接收单元接收至少一个第一浮点数,并将所述至少一个第一浮点数转换为对应数量的第二浮点数,其中,每个所述第二浮点数包括1位符号位、N位指数位和C-N-1位尾数位,C、N为大于等于1的整数,C为所述第二浮点数的总位数,N的数值是由所述至少一个第一浮点数确定的;
使用运算单元对所述第二浮点数进行运算,得到运算结果。
进一步的,每个所述第一浮点数包括1位符号位、K1位指数位和K2位尾数位,所述第一浮点数的数值V1表达式为:
V1=(-1)S×(1+M)×2E
其中,S为所述第一浮点数的符号位的值、E为所述第一浮点数的K1位指数位的值,M为所述第一浮点数的K2位尾数位的值;
所述第二浮点数中的N的数值为:
N=log2(Emax-Emin)/2,
其中,Emax为至少一个第一浮点数中E的最大值,Emin为至少一个第一浮点数中E的最小值;
所述第二浮点数的符号位等于所述第一浮点数的符号位;
所述第二浮点数的C-N-1位尾数位等于第一浮点数K2位尾数位中的前C-N-1位;
N位指数位的数值E′为:
E′=E-B+A,
其中,所述B为所述第一浮点数的指数位的偏移量,A为第二浮点数的指数基数,其表达式为:
A=(Emax+Emin)/2。
进一步的,还包括:
使用运算单元接收第二浮点数,并将所述第二浮点数转换为第一浮点数,其中:
所述第一浮点数的符号位等于所述第二浮点数的符号位;
所述第一浮点数K2位尾数位中的前C-N-1位等于第二浮点数的C-N-1位尾数位,后K2+1+N-C位为0;
N位指数位的数值E′为:
E′=E-B+A。
进一步的,还包括:
使用第一寄存器存储N的数值;
使用第二寄存器存储所述第二浮点数的指数基数A的数值。
进一步的,还包括:
使用存储单元存储所述第一浮点数和第二浮点数。
进一步的,还包括:
利用一总线与外部处理装置进行数据交互
(三)有益效果
本披露对标准格式浮点数的位宽进行压缩,生成低位宽浮点数,其中,针对不同的标准格式浮点数,其对应的低位宽浮点数中的指数位宽和尾数位宽是可变的,从而使该低位宽浮点数的精度和动态范围是可变的,该低位宽浮点数能够满足神经网络算法、图像处理等算法的数据精度要求的同时,避免了浮点数运算功率的浪费。
附图说明
图1是本披露实施例提供的浮点数处理装器的示意图。
图2是本披露实施例中标准格式浮点数与低位宽浮点数的示意图。
具体实施方式
本披露提供一种浮点数处理装置,包括转换单元和运算单元,转换单元接收标准格式浮点数,并将标准格式浮点数的位宽进行压缩,生成低位宽浮点数,运算单元对低位宽浮点数进行运算,得到运算结果。本披露能根据不同的标准格式浮点数,得到不同指数位宽的低位宽浮点数,该低位宽浮点数能够满足神经网络算法、图像处理等算法的数据精度要求的同时,避免了浮点数运算功率的浪费。
根据本披露的一种实施方式,浮点数处理装置包括:
转换单元,用于接收一组第一浮点数,并将该组第一浮点数转换为对应数量的第二浮点数,其中,一组第一浮点数中可包括一个或一个以上的第一浮点数,转换后得到相同数量的第二浮点数,每个第一浮点数与每个第二浮点数一一对应,每个所述第二浮点数包括1位符号位、N位指数位和C-N-1位尾数位,C、N为大于等于1的整数,C为第二浮点数的总位数,N的数值是由这组第一浮点数确定的;第一浮点数是标准格式浮点数,第二浮点数是由对标准格式浮点数进行位宽压缩后的低位宽浮点数。
运算单元,用于对第二浮点数进行运算,得到运算结果。
标准格式浮点数包括1位符号位、K1位指数位和K2位尾数位,例如IEEE 754定义的32位标准格式浮点数中,包括1位符号位、8位指数位和23位尾数位;标准格式浮点数的数值V1表达式为:
V1=(-1)S×(1+M)×2E
其中,S为标准格式浮点数的符号位的值、E为标准格式浮点数的K1位指数位的值,M为标准格式浮点数的K2位尾数位的值;
低位宽浮点数中的N的数值为:
N=log2(Emax-Emin)/2,
其中,Emax为一组标准格式浮点数中E的最大值,Emin为一组标准格式浮点数中E的最小值;本披露浮点数转换的原理是,针对一组标准格式浮点数,其指数位的位宽是固定的,但是指数位所对应的数值不尽相同,通过对一组标准格式浮点数中指数位所对应的数值进行分析,得到一个相对平均的指数位数值,根据该数值至少所需的位数,确定低位宽浮点数中指数位的位数N,根据设定的低位宽浮点数的总位数C和1位符号位,可知低位宽浮点数的尾数位为C-N-1位。
以上是对低位宽浮点数中指数位、尾数位的位数的划分,然后需要确定低位宽浮点数中指数位、尾数位的数值。
根据本披露的一种实施方式,低位宽浮点数的符号位等于标准格式浮点数的符号位;低位宽浮点数的C-N-1位尾数位等于标准格式浮点数K2位尾数位中的前C-N-1位;N位指数位的数值E′为:
E′=E-B+A,
其中,B为标准格式浮点数的指数位的偏移量,例如,IEEE 754标准中32位浮点数的偏移量为127。A为低位宽浮点数的指数基数,其表达式为:
A=(Emax+Emin)/2。
根据本披露的一种实施方式,转换单元还用于接收低位宽浮点数,并将低位宽浮点数转换为标准格式浮点数,其中:标准格式浮点数的符号位等于低位宽浮点数的符号位;标准格式浮点数K2位尾数位中的前C-N-1位等于低位宽浮点数的C-N-1位尾数位,后K2+1+N-C位为0;N位指数位的数值E′为:
E′=E-B+A。
根据本披露的一种实施方式,转换单元包括第一寄存器和第二寄存器,第一寄存器用于存储N的数值,第一寄存器用于存储低位宽浮点数的指数基数A的数值。
根据本披露的一种实施方式,浮点数处理装置还包括:存储单元,用于存储标准格式浮点数和低位宽浮点数。其中,存储单元、转换单元、运算单元两两连接,各部件中的浮点数均可双向流通,需要注意的是,运算单元只能对低位宽浮点数进行运算,故其输入输出的数据均是低位宽浮点数。
根据本披露的一种实施方式,浮点数处理装置可以作为一个主处理器或协处理器,其利用一总线可与外部的其他的处理器进行数据交互。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
图1是本披露实施例提供的浮点数处理器的示意图,如图1所示,浮点数处理器1包括编解码组件2、浮点运算逻辑3和存储器(RAM)4,在本实施例中,采用编解码组件2作为转换单元进行浮点数转换,采用浮点运算逻辑3作为运算单元进行浮点数运算,采用存储器4作为存储单元进行浮点数存储。浮点数处理器外部连接有一外部输入设备5(鼠标/键盘)和总线6,输入设备5可直接向编解码组件2输入标准格式浮点数,浮点数处理器通过总线6可以作为一个主处理器或协处理器,其利用一总线可与外部的其他的处理器进行数据交互。
编解码组件2包含一组配置寄存器(cfg)和一组指数基址寄存器(base)。配置寄存器(cfg)存储有低位宽浮点数的指数位的位数N,用于界定低位宽浮点数的指数和尾数,指数基址寄存器(base)存储有低位宽浮点数的指数基数A的数值,编解码组件2利用两个寄存器中的数值,实现标准格式浮点数和低位宽浮点数的编码(标准格式浮点数到低位宽浮点数的转换)和解码(低位宽浮点数到标准格式浮点数的转换)。
浮点运算逻辑3耦合到数据存储器4和编解码组件2,处理所请求的低位宽浮点数。浮点运算逻辑3将运算结果输出到编解码组件2,编解码组件根据所执行的浮点运算请求将结果输出到存储单元4。
本实施例在神经网络算法中将标准的32位浮点数转换为16位的低位宽浮点数。如图2所示,IEEE 754浮点数标准浮点数格式和16位宽自由指数域浮点数格式的对比,低位宽浮点数对应的配置寄存器值为N,则该浮点数中指数域位宽为N,尾数位宽为15-N。
神经网络算法中,数据计算是按照不同层执行的。在神经网络的一层中,同一类数据的动态范围差别不大。同时,动态范围需求较高的数据对数据精度的要求相对较低,而精度需求较高的数据的动态范围需求较低。因此,采用两组寄存器控制低位宽浮点数的精度和动态范围。例如,一组标准格式浮点数的指数值在[Emin,Emax]区间内,利用公式:N=log2(Emax-Emin)/2,A=(Emax+Emin)/2,可得到配置寄存器(cfg)的值置为N(即分割位在第15-N位),其对应的指数基数寄存器(base)置为A。编码时,将IEEE 754浮点数的指数(减去偏移量127)加上A赋值给所述自由指数域浮点数的[14:15-N]位,并截取IEEE 754浮点数尾数的前15-N位赋值给低位宽浮点数的低15-N位,实现IEEE 754浮点数指数以及尾数到低位宽浮点数的编码。解码时,将IEEE 754浮点数的[14:15-N]减去A再加上127作为IEEE 754浮点数的指数,并在低位宽浮点数的低15-N位后补充N+7个0赋值给IEEE 754浮点数的尾数,实现低位宽浮点数到IEEE 754浮点数的解码。
本披露可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。本披露的各个单元实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本披露实施例的相关设备中的一些或者全部部件的一些或者全部功能。本披露还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本披露的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。

Claims (11)

1.一种浮点数处理装置,其特征在于,包括:
转换单元及运算单元,所述转换单元及所述运算单元由硬件实现;
所述转换单元用于接收至少一个第一浮点数,并将所述至少一个第一浮点数转换为对应数量的第二浮点数,其中,每个所述第二浮点数包括1位符号位、N位指数位和C-N-1位尾数位,C、N为大于等于1的整数,C为所述第二浮点数的总位数,N的数值是由所述至少一个第一浮点数确定的;
所述运算单元用于对所述第二浮点数进行运算,得到运算结果;
其中,每个所述第一浮点数包括1位符号位、K1位指数位和K2位尾数位,所述第一浮点数的数值V1表达式为:
V1=(-1)S×(1+M)×2E
其中,S为所述第一浮点数的符号位的值、E为所述第一浮点数的K1位指数位的值,M为所述第一浮点数的K2位尾数位的值;
所述第二浮点数中的N的数值为:
N=log2(Emax-Emin)/2,
其中,Emax为至少一个第一浮点数中E的最大值,Emin为至少一个第一浮点数中E的最小值,其中,Emax大于Emin
所述第二浮点数的符号位等于所述第一浮点数的符号位;
所述第二浮点数的C-N-1位尾数位等于第一浮点数K2位尾数位中的前C-N-1位;
N位指数位的数值E′为:
E′=E-B+A,
其中,所述B为所述第一浮点数的指数位的偏移量,A为第二浮点数的指数基数,其表达式为:
A=(Emax+Emin)/2。
2.根据权利要求1所述的浮点数处理装置,其特征在于,所述转换单元还用于接收第二浮点数,并将所述第二浮点数转换为第一浮点数,其中:
所述第一浮点数的符号位等于所述第二浮点数的符号位;
所述第一浮点数K2位尾数位中的前C-N-1位等于第二浮点数的C-N-1位尾数位,后K2+1+N-C位为0;
N位指数位的数值E′为:
E′=E-B+A。
3.根据权利要求1或2所述的浮点数处理装置,其特征在于,所述转换单元包括第一寄存器和第二寄存器,所述第一寄存器用于存储N的数值,所述第二寄存器用于存储所述第二浮点数的指数基数A的数值。
4.根据权利要求1或2所述的浮点数处理装置,其特征在于,还包括:存储单元,用于存储所述第一浮点数和第二浮点数。
5.根据权利要求1或2所述的浮点数处理装置,其特征在于,浮点数处理装置利用一总线与外部处理装置进行数据交互。
6.根据权利要求5所述的浮点数处理装置,其特征在于,所述浮点数处理装置作为一个主处理器或协处理器,利用一总线与外部的处理装置进行数据交互。
7.一种浮点数处理方法,其特征在于,包括:
使用转换单元接收至少一个第一浮点数,并将所述至少一个第一浮点数转换为对应数量的第二浮点数,其中,每个所述第二浮点数包括1位符号位、N位指数位和C-N-1位尾数位,C、N为大于等于1的整数,C为所述第二浮点数的总位数,N的数值是由所述至少一个第一浮点数确定的,其中:每个所述第一浮点数包括1位符号位、K1位指数位和K2位尾数位,所述第一浮点数的数值V1表达式为:
V1=(-1)S×(1+M)×2E
其中,S为所述第一浮点数的符号位的值、E为所述第一浮点数的K1位指数位的值,M为所述第一浮点数的K2位尾数位的值;
所述第二浮点数中的N的数值为:
N=log2(Emax-Emin)/2,
其中,Emax为至少一个第一浮点数中E的最大值,Emin为至少一个第一浮点数中E的最小值;
所述第二浮点数的符号位等于所述第一浮点数的符号位;
所述第二浮点数的C-N-1位尾数位等于第一浮点数K2位尾数位中的前C-N-1位;
N位指数位的数值E′为:
E′=E-B+A,
其中,所述B为所述第一浮点数的指数位的偏移量,A为第二浮点数的指数基数,其表达式为:
A=(Emax+Emin)/2;
使用运算单元对所述第二浮点数进行运算,得到运算结果;
其中,所述转换单元及所述运算单元由硬件实现。
8.根据权利要求7所述的浮点数处理方法,其特征在于,还包括:
使用接收单元接收第二浮点数,并将所述第二浮点数转换为第一浮点数,其中:
所述第一浮点数的符号位等于所述第二浮点数的符号位;
所述第一浮点数K2位尾数位中的前C-N-1位等于第二浮点数的C-N-1位尾数位,后K2+1+N-C位为0;
N位指数位的数值E′为:
E′=E-B+A。
9.根据权利要求7或8所述的浮点数处理方法,其特征在于,还包括:
使用第一寄存器存储N的数值;
使用第二寄存器存储所述第二浮点数的指数基数A的数值。
10.根据权利要求7或8所述的浮点数处理方法,其特征在于,还包括:
使用存储单元存储所述第一浮点数和第二浮点数。
11.根据权利要求7或8所述的浮点数处理方法,其特征在于,还包括:
利用一总线与外部处理装置进行数据交互。
CN201610038994.5A 2016-01-20 2016-01-20 一种浮点数处理装置和处理方法 Active CN106990937B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202011187582.0A CN112230881A (zh) 2016-01-20 2016-01-20 浮点数处理器
CN201610038994.5A CN106990937B (zh) 2016-01-20 2016-01-20 一种浮点数处理装置和处理方法
PCT/CN2016/078508 WO2017124645A1 (zh) 2016-01-20 2016-04-06 一种浮点数处理装置
US15/974,807 US10574260B2 (en) 2016-01-20 2018-05-09 Techniques for floating-point number conversion

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610038994.5A CN106990937B (zh) 2016-01-20 2016-01-20 一种浮点数处理装置和处理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202011187582.0A Division CN112230881A (zh) 2016-01-20 2016-01-20 浮点数处理器

Publications (2)

Publication Number Publication Date
CN106990937A CN106990937A (zh) 2017-07-28
CN106990937B true CN106990937B (zh) 2020-10-20

Family

ID=59361349

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610038994.5A Active CN106990937B (zh) 2016-01-20 2016-01-20 一种浮点数处理装置和处理方法
CN202011187582.0A Pending CN112230881A (zh) 2016-01-20 2016-01-20 浮点数处理器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202011187582.0A Pending CN112230881A (zh) 2016-01-20 2016-01-20 浮点数处理器

Country Status (3)

Country Link
US (1) US10574260B2 (zh)
CN (2) CN106990937B (zh)
WO (1) WO2017124645A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990937B (zh) * 2016-01-20 2020-10-20 中科寒武纪科技股份有限公司 一种浮点数处理装置和处理方法
CN108229648B (zh) * 2017-08-31 2020-10-09 深圳市商汤科技有限公司 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质
US10949766B2 (en) * 2017-10-15 2021-03-16 Gsi Technology Inc. Precise exponent and exact softmax computation
US11455766B2 (en) * 2018-09-18 2022-09-27 Advanced Micro Devices, Inc. Variable precision computing system
CN109583579B (zh) * 2018-11-30 2021-04-09 上海寒武纪信息科技有限公司 计算装置及相关产品
JP2020098469A (ja) * 2018-12-18 2020-06-25 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN109389212B (zh) * 2018-12-30 2022-03-25 南京大学 一种面向低位宽卷积神经网络的可重构激活量化池化系统
US11080017B2 (en) * 2019-02-21 2021-08-03 Micron Technology, Inc. Host-based bit string conversion
CN109947391B (zh) * 2019-03-11 2023-08-01 合芯科技(苏州)有限公司 一种数据处理方法和装置
CN110888623B (zh) * 2019-11-25 2021-11-23 集美大学 数据转换方法、乘法器、加法器、终端设备及存储介质
CN111313905B (zh) * 2020-02-24 2023-10-13 南京大学 一种浮点数转换方法及装置
CN111310909B (zh) * 2020-02-24 2024-02-13 南京大学 一种浮点数转换电路
CN111313906B (zh) * 2020-03-03 2023-11-07 南京大学 一种浮点数的转换电路
CN111340207B (zh) * 2020-03-03 2023-12-15 南京大学 浮点数转换方法及装置
CN111538473B (zh) * 2020-04-27 2023-05-30 西安交通大学 一种Posit浮点数处理器
US11188329B1 (en) * 2020-06-24 2021-11-30 Micron Technology, Inc. Dynamic precision bit string accumulation
US10903849B1 (en) * 2020-07-20 2021-01-26 Micron Technology, Inc. Bit string compression
CN112114874B (zh) * 2020-08-20 2021-10-15 北京百度网讯科技有限公司 数据处理方法、装置、电子设备和存储介质
GB2600915B (en) * 2020-10-07 2023-02-15 Graphcore Ltd Floating point number format
CN113703840B (zh) * 2021-08-31 2024-06-07 上海阵量智能科技有限公司 数据处理装置、方法、芯片、计算机设备及存储介质
WO2023035053A1 (en) * 2021-09-08 2023-03-16 Huawei Technologies Co., Ltd. Method and system for emulating a floating-point unit
CN113805844B (zh) * 2021-09-14 2024-04-09 北京升哲科技有限公司 一种数据处理方法、装置、电子设备及存储介质
CN116131860B (zh) * 2022-12-28 2023-09-05 山东华科信息技术有限公司 分布式能源并网监测的数据压缩系统和数据压缩方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158892A (zh) * 2007-11-16 2008-04-09 中国科学院计算技术研究所 一种浮点数据转换装置和方法
CN102498673A (zh) * 2009-09-14 2012-06-13 汤姆森特许公司 编码浮点数据的方法、解码浮点数据的方法以及对应的编码器和解码器
CN102597948A (zh) * 2009-10-23 2012-07-18 信飞系统公司 信号数据的块浮点压缩

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4617641A (en) * 1983-10-19 1986-10-14 Hitachi, Ltd. Operation unit for floating point data having a variable length exponent part
US5805486A (en) * 1995-11-28 1998-09-08 Intel Corporation Moderately coupled floating point and integer units
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
CN1781253B (zh) * 2003-06-20 2012-01-25 日本电信电话株式会社 浮点格式的数字信号的无损编码方法、解码方法及其装置
US7949695B2 (en) * 2004-10-27 2011-05-24 Via Technologies Inc. Two's complement circuit
US8880571B2 (en) * 2006-05-05 2014-11-04 Microsoft Corporation High dynamic range data format conversions for digital media
US8346828B2 (en) * 2008-10-14 2013-01-01 International Business Machines Corporation System and method for storing numbers in first and second formats in a register file
GB2488322B (en) * 2011-02-22 2017-09-20 Advanced Risc Mach Ltd Number format pre-conversion instructions
JP5734717B2 (ja) * 2011-03-24 2015-06-17 セミコンダクター・コンポーネンツ・インダストリーズ・リミテッド・ライアビリティ・カンパニー 浮動小数点数のビット長変換回路およびそれを用いた振動補正制御回路
US9792087B2 (en) * 2012-04-20 2017-10-17 Futurewei Technologies, Inc. System and method for a floating-point format for digital signal processors
US9628107B2 (en) * 2014-04-07 2017-04-18 International Business Machines Corporation Compression of floating-point data by identifying a previous loss of precision
CN106991477B (zh) * 2016-01-20 2020-08-14 中科寒武纪科技股份有限公司 一种人工神经网络压缩编码装置和方法
CN106990937B (zh) * 2016-01-20 2020-10-20 中科寒武纪科技股份有限公司 一种浮点数处理装置和处理方法
US10643297B2 (en) * 2017-05-05 2020-05-05 Intel Corporation Dynamic precision management for integer deep learning primitives

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158892A (zh) * 2007-11-16 2008-04-09 中国科学院计算技术研究所 一种浮点数据转换装置和方法
CN102498673A (zh) * 2009-09-14 2012-06-13 汤姆森特许公司 编码浮点数据的方法、解码浮点数据的方法以及对应的编码器和解码器
CN102597948A (zh) * 2009-10-23 2012-07-18 信飞系统公司 信号数据的块浮点压缩

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
浮点格式转换的分析与实现;刘安;《电脑开发与应用》;20010228;第14卷(第2期);12-13,16 *

Also Published As

Publication number Publication date
WO2017124645A1 (zh) 2017-07-27
US20180262205A1 (en) 2018-09-13
CN106990937A (zh) 2017-07-28
CN112230881A (zh) 2021-01-15
US10574260B2 (en) 2020-02-25

Similar Documents

Publication Publication Date Title
CN106990937B (zh) 一种浮点数处理装置和处理方法
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
US20210182026A1 (en) Compressing like-magnitude partial products in multiply accumulation
EP3447634B1 (en) Non-linear function computing device and method
Zhang et al. New flexible multiple-precision multiply-accumulate unit for deep neural network training and inference
US10095475B2 (en) Decimal and binary floating point rounding
CN116700663B (zh) 一种浮点数处理方法及装置
CN114461176B (zh) 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备
CN111936965A (zh) 随机舍入逻辑
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
Lyu et al. PWL-based architecture for the logarithmic computation of floating-point numbers
Li et al. PDPU: An open-source posit dot-product unit for deep learning applications
CN116700664B (zh) 一种确定浮点数平方根的方法及装置
CN116700665B (zh) 一种确定浮点数平方根倒数的方法及装置
CN116700666B (zh) 一种浮点数处理方法及装置
CN112558918B (zh) 用于神经网络的乘加运算方法和装置
CN115237372A (zh) 一种乘法电路、机器学习运算电路、芯片及数据处理方法
Sasidharan et al. VHDL Implementation of IEEE 754 floating point unit
Schulte et al. Performance evaluation of decimal floating-point arithmetic
US9128759B2 (en) Decimal multi-precision overflow and tininess detection
US10528322B2 (en) Unified multifunction circuitry
CN112036561A (zh) 数据处理方法、装置、电子设备及存储介质
CN112148371B (zh) 基于单指令多数据流的数据运算方法、装置、介质和设备
Bawankar et al. Review on 32 bit single precision Floating point unit (FPU) Based on IEEE 754 Standard using VHDL
CN110765821B (zh) 图像识别的方法及装置

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180503

Address after: 100190 room 644, research complex, 6 South Road, Haidian District Science Academy, Beijing.

Applicant after: Beijing Zhongke Cambrian Technology Co., Ltd.

Address before: 210049 18 Xianlin Road, Ma Qun street, Qixia District, Nanjing, Jiangsu.

Applicant before: NANJING AIXI INFORMATION TECHNOLOGY CO., LTD.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant