一种浮点数转换电路的制作方法

文档序号:21185060发布日期:2020-06-20 18:03阅读:110来源:国知局
一种浮点数转换电路的制作方法

本发明涉及计算机技术领域,尤其涉及一种浮点数转换电路。



背景技术:

神经网络一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。近年来,随着深度学习技术的快速发展,神经网络的训练变得普遍并且重要,神经网络训练的速度和资源消耗也成为了对于深度学习评价的重要指标。

在以往的神经网络训练过程中,大部分的浮点数使用的都是基于ieee754规范的规格化单精度浮点数格式,这种数据格式通常包括符号段、指数段和尾数段,并且通常使用32位的位宽来表示,即符号段、指数段和尾数段的总位宽为32位。这种单精度浮点数可以表示一个很大范围的数值,同时也能满足神经网络训练的要求。

但是,虽然上述这种基于ieee754规范的单精度浮点数在精度上能够满足神经网络训练的要求,但是由于其位宽较长,在处理这种数据时需要耗费一定的时间并且消耗一定的资源,进而影响神经网络的训练速度,使神经网络训练的效率降低。



技术实现要素:

本发明提供了一种浮点数转换电路,以解决目前使用基于ieee754规范的单精度浮点数造成的神经网络训练的效率低的问题。

本发明实施例提供了一种浮点数转换电路,包括:

数据获取单元,用于分别获取第一浮点数中符号段的值、指数段的值、尾数段的值、预设指数位宽和预设总位宽,所述第一浮点数为规格化数据格式的单精度浮点数;

数据转换单元,用于将所述指数段的值转换为2的补码形式,获得指数段的二进制码,以及用于将所述尾数段的值转换为二进制码,获得尾数段的二进制码,并且所述指数段的二进制码的位宽通过所述预设总位宽和所述预设指数段位宽确定;

绝对值运算器,用于对所述指数段的二进制码取绝对值,获得指数绝对值;

按位或门,用于将所述指数绝对值中符合第一预设位数的值作为输入,得到输出结果;

非门,用于对所述指数段的二进制码的最高位值取非,得到输出结果;

与门,用于将所述按位或门的输出结果和所述指数段的二进制码的最高位值作为输入,得到输出结果;

第一多路选择器,用于将所述与门的输出结果作为第一选择信号,利用所述第一选择信号得到输出结果,所述第一多路选择器的输出结果包括所述指数段的二进制码中符合第一预设位数的值或者所述指数绝对值中符合第一预设位数的值;

或门,用于将所述非门的输出结果和所述与门的输出结果作为输入,得到输出结果;

拼接单元,用于按顺序依次将所述指数段的二进制码的最高位值、所述第一多路选择器的输出结果和所述尾数段的二进制码拼接,得到输出结果;

右移位器,用于将所述指数绝对值中符合第二预设位数的值作为移位值,按照所述移位值将所述拼接单元输出结果中的每一位二进制码依次向右移动,得到输出结果;

额外移位器,用于将所述右移位器的输出结果中的每一位二进制码继续依次向右移动一位,得到输出结果;

第二多路选择器,用于将所述或门的输出结果作为第二选择信号,利用所述第二选择信号得到输出结果,所述第二多路选择器的输出结果包括所述右移位器的输出结果或者所述额外移位器的输出结果;

输出单元,用于利用所述符号段的值,将所述符号段的值以及所述第二多路选择器的输出结果共同输出,得到第二浮点数。

在本发明的一种可实现方式中,所述数据转换单元还用于利用如下公式,通过所述预设总位宽和所述预设指数段位宽确定所述指数段的二进制码的位宽:

nes=log2n+es+1,

其中,nes表示所述指数段的二进制码的位宽,n表示所述预设总位宽,es表示所述预设指数段位宽,以及,当log2n为非整数时,log2n的值向上取整。

在本发明的一种可实现方式中,所述第一预设位数利用公式[es-1:0]获得,其中,[es-1:0]表示所述指数绝对值中第es-1位到第0位的值。

在本发明的一种可实现方式中,所述第二预设位数利用公式[log2n+es-1:es]获得,其中,[log2n+es-1:es]表示所述指数绝对值中第log2n+es-1位到第es位的值。

在本发明的一种可实现方式中,所述第一多路选择器还用于:

当所述第一选择信号为1时,选择所述指数段的二进制码中符合第一预设位数的值作为所述第一多路选择器的输出结果;

当所述第一选择信号为0时,选择所述指数绝对值中符合第一预设位数的值作为所述第一多路选择器的输出结果。

在本发明的一种可实现方式中,所述第二多路选择器还用于:

当所述第二选择信号为1时,选择所述额外移位器的输出结果作为所述第二多路选择器的输出结果;

当所述第二选择信号为0时,选择所述右移位器的输出结果作为所述第二多路选择器的输出结果。

在本发明的一种可实现方式中,所述右移位器还用于:

获取所述移位值的二进制码对应的真值a,所述a为大于或者等于0的正整数;

舍去所述拼接单元输出结果中a个低位的值,获得舍去值;

在所述舍去值的左侧补足a个0,获得所述右移位器的输出结果。

在本发明的一种可实现方式中,所述输出单元还用于:

当所述符号段的值表示正数时,按顺序将所述符号段的值与所述第二多路选择器的输出结果拼接输出,获得第二浮点数;

当所述符号段的值表示负数时,将所述第二多路选择器的输出结果按位取反;

按顺序将所述符号段的值与所述取反后的第二多路选择器的输出结果拼接;

将所述拼接结果整体加1,获得第二浮点数。

由以上技术方案可知,本发明公开了一种浮点数转换电路,能够将基于ieee754规范的单精度浮点数转换为posit数据格式的单精度浮点数,即第二浮点数。在很多神经网络的训练过程中,其运算数据近似服从正态分布,可通过变换使数据集中在0附近,而本发明中的posit数据格式的单精度浮点数在神经网络训练过程中就可以在0附近保证精度,并且,本发明中posit数据格式的单精度浮点数的预设总位宽是可以调控的,因此又可以很大程度的减少数据位宽,进而减少存储所需要的资源以及读写过程所消耗的资源,提高神经网络训练的效率。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施案例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的基于ieee754规范的单精度浮点数具体的数据表示形式的示意图;

图2为本发明实施例提供的一种浮点数转换电路的电路图;

图3为本发明实施例提供的一种浮点数转换示意图。

具体实施方式

本发明技术方案中的posit数据格式的参数包括n和es,其中n为整个数据表示的总位宽,es为指数段的位宽,两个参数都是在表示数据前需要确定的。n可以取任意正整数值,例如5、8等。本实施例中以n表示预设总位宽,以es表示预设指数位宽,预设指数位宽是根据对posit数据格式的浮点数的实际需求选择的,例如2、3、4等等。图1为本发明提供的基于ieee754规范的单精度浮点数具体的数据表示形式的示意图,基于ieee754规范的单精度浮点数包括符号段s,指数段e1和尾数段f三个部分,其中对于一个基于ieee754规范的规格化单精度浮点数来说,该浮点数的规格化单精度浮点数表示形式为:

a=(-1)s×2e1-127×1.f,

其中,e1为规格化单精度浮点数表示式中的指数段的值,a为浮点数的真值,其中,s表示符号段的值,只有一位,当a为正数时,符号段s的值为0,当a为负数时,符号段s的值为1;f表示尾数段的值,是将整数部分表示为1后,小数点后的所有尾数。

而一个浮点数常用的浮点数科学表示形式为:

a=(-1)s×2e×1.f,

其中,e为浮点数科学表示式中的指数段的值,a为浮点数的真值,这里的e=e1-127。

以0.125为例,表示成二进制是0.001,在ieee754规范下表示为规格化单精度浮点数时,其符号段的值s为0,是一位位宽;指数段的值e1为124,将原码表示成二进制8位位宽;最后尾数段的值f为0,在存储表示的时候是23个0,为23位位宽;这样最后得到的规格化单精度浮点数总位宽为32位。而在浮点数科学表示法中,得到的符号段的值和尾数段的值与上述的s和f相同,但是指数段的值e需要利用上述e1的值减去127获得,即e=124-127=-3。

本发明公开的浮点数转换电路,将基于ieee754规范的规格化单精度浮点数转换为上述posit数据格式的单精度浮点数,有了这种转换方法,就可以使得数据存储时,利用posit新型浮点数数据格式的低位宽,减少存储所需要的资源以及读写过程所消耗的资源,同时也可以在运算过程中使用基于ieee754规范的规格化单精度浮点数格式,最大程度的保证了运算时的精度。具体用一下实施例对本发明公开的浮点数转换方法及进行清楚、完整地描述。

图2为本发明实施例提供的一种浮点数转换电路的电路图。如图2所示,本发明实施例提供的浮点数转换电路,包括:

数据获取单元100,用于分别获取第一浮点数中符号段的值、指数段的值、尾数段的值、预设指数位宽和预设总位宽,所述第一浮点数为规格化数据格式的单精度浮点数,即上述基于ieee754规范的规格化单精度浮点数。在本发明实施例中,获取的符号段的值、指数段的值和尾数段的值实际上均为上述浮点数科学表示式中的符号段的值s、指数段的值e和尾数段的值f。预设指数位宽以上述es表示,预设总位宽以上述n表示。

数据转换单元110,用于将所述指数段的值转换为2的补码形式,获得指数段的二进制码,以及用于将所述尾数段的值转换为二进制码,获得尾数段的二进制码,并且所述指数段的二进制码的位宽通过所述预设总位宽和所述预设指数段位宽确定。

本发明的浮点数转换电路中不直接使用指数段的值,而是需要将该指数段的值转化为2的补码形式,并且使用预设指数位宽和预设总位宽限制该2的补码的位数,例如指数段的值e为2时,对该值补码位数的要求是3位,那么本发明的电路中使用的e实际上010,再例如指数段的值e为-1时,对该值补码位数的要求是4位,那么本发明的电路中使用的e实际上是1111。

绝对值运算器120,用于对所述指数段的二进制码取绝对值,获得指数绝对值。其中,指数绝对值也是二进制码的形式。

按位或门130,用于将所述指数绝对值中符合第一预设位数的值作为输入,得到输出结果。本发明实施例中需要选择指数绝对值中不同位数的二进制码分别输入到按位或门130和右移位器190等,满足不同的输入需求。

非门140,用于对所述指数段的二进制码的最高位值取非,得到输出结果。二进制码的最高位为符号位,表示的该二进制码对应的真值是正还是负,因此,如果指数段的二进制码的最高位值为0,则取非后的输出结果为1,如果指数段的二进制码的最高位值1,则取非后的输出结果为0。

与门150,用于将所述按位或门130的输出结果和所述指数段的二进制码的最高位值作为输入,得到输出结果,如果上述按位或门130的输出结果为1,指数段的二进制码的最高位值为1,则11和1经过与门150的与运算后,输出的结果为1。

第一多路选择器160,用于将所述与门150的输出结果作为第一选择信号,利用所述第一选择信号得到输出结果,所述第一多路选择器160的输出结果包括所述指数段的二进制码中符合第一预设位数的值或者所述指数绝对值中符合第一预设位数的值。可以理解的是,本发明实施例中,选择与门150的输出结果作为控制信号,控制第一多路选择器160选择不同的值作为输出。

或门170,用于将所述非门140的输出结果和所述与门150的输出结果作为输入,得到输出结果,如果上述非门140的输出结果为0,上述与门150的输出结果1,那么经过或门170的或运算之后,输出的结果为1。

拼接单元180,用于按顺序依次将所述指数段的二进制码的最高位值、所述第一多路选择器160的输出结果和所述尾数段的二进制码拼接,得到输出结果,如果指数段二进制码的最高位值为1,第一多路选择器160的输出结果为001,尾数段的二进制码为11,那么拼接后的输出结果为100111。

右移位器190,用于将所述指数绝对值中符合第二预设位数的值作为移位值,按照所述移位值将所述拼接单元180输出结果中的每一位二进制码依次向右移动,得到输出结果。

额外移位器200,用于将所述右移位器190的输出结果中的每一位二进制码继续依次向右移动一位,得到输出结果。

第二多路选择器210,用于将所述或门170的输出结果作为第二选择信号,利用所述第二选择信号得到输出结果,所述第二多路选择器210的输出结果包括所述右移位器190的输出结果或者所述额外移位器200的输出结果。可以理解的是,本发明实施例中,选择或门170的输出结果作为控制信号,控制第二多路选择器210选择不同的值作为输出。

输出单元220,用于利用所述符号段的值,将所述符号段的值以及所述第二多路选择器210的输出结果共同输出,得到第二浮点数。该第二浮点数满足预设总位宽n的要求,并且第一浮点数的符号段的值也可以用于表示第二浮点数真值的正负。

值得说明的是,本发明实施例中,第一预设位数和第二预设位数是可以根据预设总位宽和预设指数位宽分别获得的。

可见,本发明实施例中提供的浮点数转换电路,能够将基于ieee754规范的单精度浮点数转换为posit数据格式的单精度浮点数,即第二浮点数。在很多神经网络的训练过程中,其运算数据近似服从正态分布,可通过变换使数据集中在0附近,而本发明中的posit数据格式的单精度浮点数在神经网络训练过程中就可以在0附近保证精度,并且,本发明中posit数据格式的单精度浮点数的预设总位宽是可以调控的,因此又可以很大程度的减少数据位宽,进而减少存储所需要的资源以及读写过程所消耗的资源,提高神经网络训练的效率。

在本发明实施例的一种可实现方式中,所述数据转换单元110可以利用如下公式,通过所述预设总位宽和所述预设指数段位宽确定所述指数段的二进制码的位宽:

nes=log2n+es+1,

其中,nes表示所述指数段的二进制码的位宽,n表示所述预设总位宽,es表示所述预设指数段位宽,以及,当log2n为非整数时,log2n的值向上取整。

例如,当n为8时,es为3时,log2n为3,nes=3+3+1=7;但如果n为7,es为3时,log2n为2.80735……,为非整数,那么此时可以将log2n向上取整,使log2n为3,nes仍为7。

在本发明实施例的一种可实现方式中,所述第一预设位数利用公式[es-1:0]获得,其中,[es-1:0]表示所述指数绝对值中第es-1位到第0位的值。

以es=3为例,如果此时指数绝对值为001011,那么[es-1:0]表示的就是指数绝对值中第2位到第0位的值,即011。

在本发明实施例的一种可实现方式中,所述第二预设位数利用公式[log2n+es-1:es]获得,其中,[log2n+es-1:es]表示所述指数绝对值中第log2n+es-1位到第es位的值。

以n=8,es=3为例,如果此时指数绝对值为0001011,那么[log2n+es-1:es]表示的就是指数绝对值中第5位到第3位的值,即001。

在本发明实施例的一种可实现方式中,所述第一多路选择器160还用于:当所述第一选择信号为1时,选择所述指数段的二进制码中符合第一预设位数的值作为所述第一多路选择器160的输出结果;当所述第一选择信号为0时,选择所述指数绝对值中符合第一预设位数的值作为所述第一多路选择器160的输出结果。

在本发明实施例的一种可实现方式中,所述第二多路选择器210还用于:当所述第二选择信号为1时,选择所述额外移位器200的输出结果作为所述第二多路选择器210的输出结果;当所述第二选择信号为0时,选择所述右移位器190的输出结果作为所述第二多路选择器210的输出结果。

在本发明实施例的一种可实现方式中,所述右移位器190还用于:获取所述移位值的二进制码对应的真值a,所述a为大于或者等于0的正整数;舍去所述拼接单元180输出结果中a个低位的值,获得舍去值;在所述舍去值的左侧补足a个0,获得所述右移位器190的输出结果。例如,移位值的二进制码为0011,其对应的真值为3,那么将舍去拼接单元180输出结果中3个低位的值,并且输出结果的左侧补上3个0,即可获得右移位器190的输出结果。

在本发明实施例的一种可实现方式中,所述输出单元220还用于:当所述符号段的值表示正数时,按顺序将所述符号段的值与所述第二多路选择器210的输出结果拼接输出,获得第二浮点数;当所述符号段的值表示负数时,将所述第二多路选择器210的输出结果按位取反;按顺序将所述符号段的值与所述取反后的第二多路选择器210的输出结果拼接;将所述拼接结果整体加1,获得第二浮点数。

图3为本发明实施例提供的一种浮点数转换示意图。在图3中,利用本发明浮点数转换电路将基于ieee754规范的单精度浮点数转换为posit数据格式的单精度浮点数,以前述内容为例,0.125表示成二进制是0.001,基于ieee754规范的第一浮点数的符号段的值s为0,指数段的值e1为124,将原码表示成二进制的8位数,尾数段的值f为0,具体为23个0表示的值。而在浮点数科学表示法中,得到的符号段的值与上述的s相同,得到的尾数段的值即为上述f的真值0,但是指数段的值e需要利用上述e1的值减去127获得,即e=124-127=-3。

在图3中,通过数据获取单元100获取到该第一浮点数中符号段的值s为0,指数段的值e为-3,指数段的二进制码为111101,尾数段的值f为0;再通过数据转换单元110,根据预设总位宽5和预设指数位宽2,将指数段的值-3转换为2的补码形式111101,再通过绝对值运算器120或者指数绝对值为000011;再计算出第一预设位数为[1:0],第二预设位数为[4:2],即将指数绝对值中的11输入给按位或门130和第一多路选择器160,将指数绝对值中的000输入给右移位器190,将指数段的二进制码中的01输入给第一多路选择器160,将尾数段的值0发送给拼接单元180,将指数段的二进制码中的最高位值1分别输入给非门、与门150和拼接单元180;按位或门130输出1给与门150,与门150通过将1和1进行与运算,输出1分别发送给第一多路选择器160和或门170;非门140将指数段的二进制码中的最高位值1取非,输出0发送给或门170;或门170将输入的0和1作或运算,输出1发送给第二多路选择器210;第一多路选择器160根据第一选择信号1选择指数段的二进制码中的01作为输出结果发送给拼接单元180,拼接单元180依次将1、01和0进行拼接,获得结果1010发送给右移位器190;右移位器190根据指数绝对值中的000的真值0,确定1010向右移动0位,仍为原结果1010发送给第二多路选择器210和额外移位器200;额外移位器200将1010中的每个二进制码依次向右移动一位,输出0101发送给第二多路选择器210;第二多路选择器210根据或门170发送的1选择额外移位器200的发送0101作为输出,并将0101发送给输出单元;由于第一浮点数符号段的值0,该值表示正数,因此输出单元220将符号段的值0与0101拼接,获得第二浮点数00101。最终获得的第二浮点数的总位数为5位,符合预设总位宽n=5的要求,可见,本发明实施例提供的浮点数转换电路,能够将真值为0.125的基于ieee754规范的单精度浮点数转换为posit数据格式的单精度浮点数,并且转换后的posit数据格式的单精度浮点数能够保证低位宽的性质,进而减少存储所需要的资源以及减少读写过程所消耗的资源。

由上述内容可知,本发明公开了一种浮点数转换电路,能够将基于ieee754规范的单精度浮点数转换为posit数据格式的单精度浮点数,即第二浮点数。在很多神经网络的训练过程中,其运算数据近似服从正态分布,可通过变换使数据集中在0附近,而本发明中的posit数据格式的单精度浮点数在神经网络训练过程中就可以在0附近保证精度,并且,本发明中posit数据格式的单精度浮点数的预设总位宽是可以调控的,因此又可以很大程度的减少数据位宽,进而减少存储所需要的资源以及读写过程所消耗的资源,提高神经网络训练的效率。

本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1