二进制浮点数乘法运算方法、电路及计算装置与流程

专利检索2022-05-10  10



1.本发明涉及计算机体系架构技术领域,特别是涉及二进制浮点数乘法运算方法、电路及计算装置。


背景技术:

2.浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数,其主要由整数、指数和基数组成。由于浮点数是近似表示,因此浮点数会涉及到表达精度的问题。
3.浮点数运算即利用浮点数进行加减乘除等运算。在现有的浮点数乘法运算中,浮点数虽然可以具有较大的数据的表示范围,但是在浮点数的位数有限的情况下,其数据表示范围大也就意味着其表示精度较低。


技术实现要素:

4.基于此,有必要针对浮点数运算中的浮点数表示精度低的问题,提供一种二进制浮点数乘法运算方法、电路及计算装置。
5.本公开实施例提供了一种二进制浮点数乘法运算方法,包括以下步骤。
6.获取按照第一数据格式表示的第一浮点数和第二浮点数;第一浮点数和第二浮点数的基数均为2。
7.对第一浮点数的整数和第二浮点数的整数执行乘法运算,以得到中间结果浮点数的整数。对第一浮点数的指数和第二浮点数的指数执行加法运算,以得到中间结果浮点数的指数。输出按照第二数据格式表示的中间结果浮点数。
8.向左移位中间结果浮点数的整数,判断第二数据格式中整数的最高位数和次高位数是否相同。
9.若否,则按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数。并按照中间结果浮点数的整数的移位个数,调整中间结果浮点数的指数,以得到目标浮点数的指数。输出目标浮点数作为运算结果。
10.若是,则判断中间结果浮点数的整数的移位个数是否小于阈值。
11.若是,则返回执行向左移位中间结果浮点数的整数的步骤;
12.若否,则按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数;并按照中间结果浮点数的整数的移位个数,调整中间结果浮点数的指数,以得到目标浮点数的指数;输出目标浮点数作为运算结果。
13.在本公开实施例中,第一浮点数和第二浮点数的基数为2,第一浮点数和第二浮点数的整数和指数均按照第一数据格式表示。这样在对第一浮点数的整数和第二浮点数的整数执行乘法运算,对第一浮点数的指数和第二浮点数的指数执行加法运算后,可以得到按
照第二数据格式表示的中间结果浮点数。第二数据格式中的整数位数为第一数据格式中的整数位数的2倍。
14.基于此,向左移位中间结果浮点数的整数,并在第二数据格式中整数的最高位数和次高位数不同的情况下,或者第二数据格式中整数的最高位数和次高位数相同且中间结果浮点数的整数的移位个数等于阈值的情况下,按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数,以及按照中间结果浮点数的整数的移位个数获取目标浮点数的指数,便能够输出按照第一数据格式表示的目标浮点数作为运算结果。
15.由上,本公开实施例可以在浮点数的位数有限的情况下,利用对中间结果浮点数的整数进行移位,并从移位后的中间结果浮点数的整数中(也即从第二数据格式中整数的最高位数开始)按照第一数据格式的整数位数获取目标浮点数的整数,进而将目标浮点数作为运算结果输出的方式,可以有效提升浮点数乘法运算中浮点数的有效位数和浮点数的表示精度,以确保浮点数乘法运算具有较好的运算精度。
16.在一个实施例中,第一浮点数和第二浮点数的实际值为:n/2
x
;其中,n为对应浮点数的整数,整数包括符号;x为对应浮点数的指数。
17.本公开实施例还提供了一种二进制浮点数乘法运算电路,其包括:存储模块、数据运算模块以及数据格式化模块。
18.存储模块用于获取并缓存按照第一数据格式表示的第一浮点数和第二浮点数。
19.数据运算模块与存储模块连接,用于对第一浮点数的整数和第二浮点数的整数执行乘法运算,以得到中间结果浮点数的整数;对第一浮点数的指数和第二浮点数的指数执行加法运算,以得到中间结果浮点数的指数;输出按照第二数据格式表示的中间结果浮点数以及格式化启动信号。
20.数据格式化模块与数据运算模块连接,用于在格式化启动信号的触发下,向左移位中间结果浮点数的整数。
21.数据格式化模块还用于:在第二数据格式中整数的最高位数和次高位数不同的情况下,或者第二数据格式中整数的最高位数和次高位数相同且中间结果浮点数的整数的移位个数等于阈值的情况下,按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数;并按照中间结果浮点数的整数的移位个数,调整中间结果浮点数的指数,以得到目标浮点数的指数;输出目标浮点数作为运算结果。
22.本技术实施例提供的二进制浮点数乘法运算电路结构简单,运算方便,可以有效提升浮点数乘法运算中浮点数的有效位数和浮点数的表示精度,以确保浮点乘法运算具有较好的运算精度。
23.在一个实施例中,存储模块包括:第一缓存电路和第二缓存电路。第一缓存电路用于获取并缓存按照第一数据格式表示的第一浮点数。第二缓存电路用于获取并缓存按照第一数据格式表示的第二浮点数。
24.在一个实施例中,数据运算模块包括:乘法电路和加法电路。
25.乘法电路与存储模块连接,用于对第一浮点数的整数和第二浮点数的整数执行乘法运算,以得到中间结果浮点数的整数并输出格式化启动信号。
26.加法电路与存储模块连接,用于对第一浮点数的指数和第二浮点数的指数执行加法运算,以得到中间结果浮点数的指数。
27.在一个实施例中,数据运算模块还包括:与乘法电路连接的延迟电路。
28.延迟电路用于响应于时钟信号,输出延迟启动信号。
29.乘法电路还用于响应于延迟启动信号,对第一浮点数的整数和第二浮点数的整数执行乘法运算。
30.在一个实施例中,二进制浮点数乘法运算电路还包括:时钟信号端。时钟信号端与延迟电路连接,用于向延迟电路输出时钟信号。
31.在一个实施例中,数据格式化模块包括:移位寄存器电路、异或电路、计数器、或电路、第一与电路、非逻辑电路以及第二与电路。
32.移位寄存器电路与数据运算模块连接,用于在格式化启动信号的触发下,按照第二数据格式缓存中间结果浮点数的整数,并根据移位使能信号向左移位或停止移位中间结果浮点数的整数。
33.异或电路与移位寄存器电路连接,用于判断移位寄存器电路缓存的最高位数和次高位数是否相同,并输出异或运算结果。
34.计数器用于在格式化启动信号的触发下,记录移位中间结果浮点数的整数时的移位个数,并输出计数值、计数值达到信号以及计数运行信号。
35.或电路与异或电路、计数器连接,用于根据异或运算结果和计数值达到信号,输出或运算结果。
36.第一与电路与或电路、计数器连接,用于根据或运算结果和计数运行信号,输出计数使能信号。计数器还用于根据计数使能信号计数或停止计数。
37.非逻辑电路与第一与电路连接,用于根据计数使能信号输出非逻辑运算结果。
38.第二与电路与非逻辑电路、计数器、移位寄存器电路连接,用于根据非逻辑运算结果和计数运行信号,输出移位使能信号至移位寄存器电路。
39.移位寄存器电路还用于在停止移位的情况下,按照第一数据格式中的整数位数,从移位寄存器电路缓存的最高位数开始选取对应位数的数值,作为目标浮点数的整数输出。
40.在一个实施例中,数据格式化模块还包括:指数计算电路和拼接电路。
41.指数计算电路与数据运算模块、计数器连接,用于将中间结果浮点数的指数和计数值相加,并减去第一数据格式的整数位数,以得到目标浮点数的指数。
42.拼接电路与指数计算电路、移位寄存器电路连接,用于拼接目标浮点数的整数和目标浮点数的指数,以得到目标浮点数并作为运算结果输出。
43.本公开实施例还提供了一种计算装置,包括前述一些实施例中的二进制浮点数乘法运算电路。前述二进制浮点数乘法运算电路所能实现的技术效果,该计算装置也均能实现,此处不再详述。
附图说明
44.为了更清楚地说明本公开实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
45.图1为一实施例中提供的一种二进制浮点数乘法运算方法的方法流程图;
46.图2为一实施例中提供的一种二进制浮点数乘法运算电路的结构示意图;
47.图3为一实施例中提供的一种存储模块的结构示意图;
48.图4为一实施例中提供的一种数据运算模块的结构示意图;
49.图5为一实施例中提供的一种数据格式化模块的结构示意图。
50.附图标号说明:
51.100

存储模块,110

第一缓存电路,120

第二缓存电路,200

数据运算模块,
52.210

乘法电路,220

加法电路,230

延迟电路,300

数据格式化模块,
53.310

移位寄存器电路,320

异或电路,330

计数器,340

或电路,
54.350

第一与电路,360

非逻辑电路,370

第二与电路,380

指数计算电路,
55.390

拼接电路,data1

第一浮点数,data1_int

第一浮点数的整数,
56.data1_exp

第一浮点数的指数,data2

第二浮点数,
57.data2_int

第二浮点数的整数,data2_exp

第二浮点数的指数,
58.datam

中间结果浮点数,datam_int

中间结果浮点数的整数,
59.datam_exp

中间结果浮点数的指数,datat

目标浮点数,
60.datat_int

目标浮点数的整数,datat_exp

目标浮点数的指数,
61.dataf

运算结果,st

启动信号,clk

时钟信号,st_d

延迟启动信号,
62.st_f

格式化启动信号,enc

计数使能信号,en

移位使能信号,
63.run

计数运行信号,reach

计数值达到信号,n

计数值,q

输出有效信号。
具体实施方式
64.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳的实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
65.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
66.在使用本文中描述的“包括”、“具有”、和“包含”的情况下,除非使用了明确的限定用语,例如“仅”、“由
……
组成”等,否则还可以添加另一部件。除非相反地提及,否则单数形式的术语可以包括复数形式,并不能理解为其数量为一个。
67.为了说明本技术的技术方案,下面通过一些具体的实施例来进行说明。
68.为了便于理解本技术的技术方案,首先对本技术中涉及的概念和定义进行了说明,这些内容也属于本技术技术方案的一部分。
69.二进制浮点数主要由整数、指数和基数组成。本公开实施例中,二进制浮点数的整数和指数采用二进制进行表示,二进制浮点数的基数为2。以下内容中并不涉及二进制浮点
数的基数,只针对其整数和指数进行说明。
70.二进制浮点数的整数的最高位为符号位,如果浮点数为正数则符号位为0,如果浮点数为负数则符号位为1。在二进制浮点数中,浮点数为负数时,该浮点数的整数的表示方式为:该数的相反数取反再加一;也就是说在二进制浮点数中符号位和整数中除符号位以外的数值的首位是不同的。例如,整数234可以表示为有符号位的二进制数:011101010;整数

234可以表示为有符号位的二进制数:100010110。
71.本公开实施例中,二进制浮点数的整数位数和指数位数均是固定的。以二进制浮点数为单精度浮点数为例,单精度浮点数的数据格式为32位,其中,整数位数为24位,指数位数为8位。例如,某个浮点数的整数为234,指数为3在将其按照单精度浮点数的数据格式缓存后,可以得到:整数为000000000000000011101010,指数为00000011。如此,整数000000000000000011101010中前16个连续的0即为该浮点数的符号位及其扩展。
72.本公开实施例中,二进制浮点数的实际值的表达形式为:n/2
x
,其中,n为浮点数的整数,整数包括符号,x为浮点数的指数。例如,某个浮点数的整数为234,指数为3,其实际值为234/23。
73.本公开实施例中,二进制浮点数的整数向左移一位是指整数乘2,指数加1。以整数为234,指数为3为例,其向左移一位整数则表示为468,指数则表示为4,在将该整数468和指数4对应采用单精度浮点数予以表示后,整数为000000000000000111010100,指数为00000100。
74.本公开实施例中,二进制浮点数的有效位数是指其整数中包含符号位及其右侧有效数值的位数。例如,二进制浮点数的整数按照单精度浮点数予以表示后,若整数为000000000000000111010100,其中,0111010100为其有效位数,第一个0为符号位,有效位数为10位;若整数为011101010000000000000000,其中,011101010000000000000000为其有效位数,第一个0为符号位,有效位数为24位。
75.基于上述内容,请参阅图1,本公开实施例提供了一种二进制浮点数乘法运算方法,包括以下步骤。
76.步骤101,获取按照第一数据格式表示的第一浮点数和第二浮点数。其中,第一浮点数和第二浮点数的基数均为2。
77.例如,第一数据格式为32位,其中整数位数为24位,指数位数为8位。第一浮点数为二进制浮点数。第一浮点数的整数为30,指数为3。按照第一数据格式表示第一浮点数,第一浮点数的整数为000000000000000000011110,第一浮点数的指数为00000011。第二浮点数为二进制浮点数。第二浮点数的整数为4,指数为1。按照第一数据格式表示第二浮点数,第二浮点数的整数为000000000000000000000100,第一浮点数的指数为00000001。
78.步骤102,对第一浮点数的整数和第二浮点数的整数执行乘法运算,以得到中间结果浮点数的整数;对第一浮点数的指数和第二浮点数的指数执行加法运算,以得到中间结果浮点数的指数;输出按照第二数据格式表示的中间结果浮点数。
79.示例的,上述举例中的第一浮点数和第二浮点数均按照第一数据格式表示,第一数据格式中的整数位数为24位。在将第一浮点数的整数和第二浮点数的整数执行乘法运算后,对应获得的中间结果浮点数的整数位数为48位。因此,第二数据格式的整数位数可以设置为第一数据格式的整数位数的两倍。例如中间结果浮点数的整数为00000000000000000
0000000000000000000000001111000,该整数位数共有48位,是第一数据格式的整数位数的两倍,因此该整数可以按照第二数据格式表示。
80.示例的,对上述举例中的第一浮点数的指数和第二浮点数的指数执行加法运算,得到中间结果浮点数的指数为4,其按照第二数据格式表示为00000100。
81.步骤103,向左移位中间结果浮点数的整数,判断第二数据格式中整数的最高位数和次高位数是否相同。
82.若否,则按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数;并按照中间结果浮点数的整数的移位个数,调整中间结果浮点数的指数,以得到目标浮点数的指数;输出目标浮点数作为运算结果。
83.若是,则执行步骤104。
84.步骤104,判断中间结果浮点数的整数的移位个数是否小于阈值。
85.若是,则返回执行步骤103。
86.若否,则按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数;并按照中间结果浮点数的整数的移位个数,调整中间结果浮点数的指数,以得到目标浮点数的指数;输出目标浮点数作为运算结果。
87.示例的,阈值为第二数据格式的整数位数减一。例如,第二数据格式的整数位数为48位,则阈值为47。
88.例如,上述举例中,中间结果浮点数的整数的最高位数和次高位数相同,且此时的移位个数为0,小于阈值,需要向左移位中间结果浮点数的整数。在移位了40次后,第二数据格式中的整数为011110000000000000000000000000000000000000000000。此时,第二数据格式中整数的最高位数和次高位数不同,则按照第一数据格式,从第二数据格式中的整数选取011110000000000000000000作为目标浮点数的整数。中间结果浮点数的移位个数为40。目标浮点数的指数为中间结果浮点数的指数加上移位个数再减去第一数据格式中的整数位数,即20,其按照第一数据格式表示为00010100。该目标浮点数即为运算结果。
89.还例如,第一浮点数的整数为30,指数为3,按照第一数据格式表示第一浮点数,第一浮点数的整数为000000000000000000011110,第一浮点数的指数为00000011。第二浮点数的整数为0,指数为0,按照第一数据格式表示第二浮点数,第一浮点数的整数为000000000000000000000000,第一浮点数的指数为00000000。对第一浮点数和第二浮点数执行乘法运算,得到中间结果浮点数的整数为000000000000000000000000000000000000000000000000,该中间结果浮点数的整数的最高位数和次高位数相同,且此时的移位个数为0,小于阈值,需要向左移位中间结果浮点数的整数。在移位了47次后,第二数据格式中的整数仍为000000000000000000000000000000000000000000000000。此时的移位个数等于阈值,即47,则按照第一数据格式,从第二数据格式中的整数选取000000000000000000000000作为目标浮点数的整数。目标浮点数的指数为中间结果浮点数的指数加上移位个数再减去第一数据格式中的整数位数,即26,其按照第一数据格式表示为00011010。该目标浮点数即为运算结果。
90.在本公开实施例中,第一浮点数和第二浮点数的基数为2,第一浮点数和第二浮点
数的整数和指数均按照第一数据格式表示。这样在对第一浮点数的整数和第二浮点数的整数执行乘法运算,对第一浮点数的指数和第二浮点数的指数执行加法运算后,可以得到按照第二数据格式表示的中间结果浮点数。第二数据格式中的整数位数为第一数据格式中的整数位数的2倍。
91.基于此,向左移位中间结果浮点数的整数,并在第二数据格式中整数的最高位数和次高位数不同的情况下,或者第二数据格式中整数的最高位数和次高位数相同且中间结果浮点数的整数的移位个数等于阈值的情况下,按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数,以及按照中间结果浮点数的整数的移位个数获取目标浮点数的指数,便能够输出按照第一数据格式表示的目标浮点数作为运算结果。
92.由上,本公开实施例可以在浮点数的位数有限的情况下,利用对中间结果浮点数的整数进行移位,并从移位后的中间结果浮点数的整数中(也即从第二数据格式中整数的最高位数开始)按照第一数据格式的整数位数获取目标浮点数的整数,进而将目标浮点数作为运算结果输出的方式,可以有效提升浮点数乘法运算中浮点数的有效位数和浮点数的表示精度,以确保浮点数乘法运算具有较好的运算精度。
93.本公开实施例还提供了一种二进制浮点数乘法运算电路,用于实施上述一些实施例中的二进制浮点数乘法运算。本公开实施例提供的二进制浮点数乘法运算电路结构简单,运算方便,可以有效提升浮点数乘法运算中浮点数的有效位数和浮点数的表示精度,以确保浮点乘法运算具有较好的运算精度。
94.请参阅图2至图5,在一些实施例中,二进制浮点数乘法运算电路包括:存储模块100、数据运算模块200以及数据格式化模块300。
95.存储模块100用于获取并缓存按照第一数据格式表示的第一浮点数data1和第二浮点数data2。
96.数据运算模块200与存储模块100连接,用于对第一浮点数的整数data1_int和第二浮点数的整数data2_int执行乘法运算,以得到中间结果浮点数的整数datam_int。对第一浮点数的指数data1_exp和第二浮点数的指数data2_exp执行加法运算,以得到中间结果浮点数的指数datam_int。输出按照第二数据格式表示的中间结果浮点数datam以及格式化启动信号st

f。
97.数据格式化模块300与数据运算模块200连接,用于在格式化启动信号st

f的触发下,向左移位中间结果浮点数的整数datam_int。
98.数据格式化模块300还用于:在第二数据格式中整数的最高位数和次高位数不同的情况下,或者第二数据格式中整数的最高位数和次高位数相同且中间结果浮点数的整数datam_int的移位个数等于阈值的情况下,按照第一数据格式中的整数位数,从第二数据格式中整数的最高位数开始选取对应位数的数值,作为目标浮点数的整数datat_int;并按照中间结果浮点数的整数datam_int的移位个数,调整中间结果浮点数的指数datam_exp,以得到目标浮点数的指数datat_exp。输出目标浮点数datat作为运算结果dataf。阈值为第二数据格式的整数位数减一。
99.请参阅图3至图5,在一些实施例中,二进制浮点数乘法运算电路还包括时钟信号端clk和启动信号端st。时钟信号端与存储模块100、数据运算模块200、数据格式化模块300
连接,用于分别向存储模块100、数据运算模块200、数据格式化模块300输出时钟信号clk。时钟信号clk可以用于控制二进制浮点数乘法运算电路的时序。存储模块100、数据运算模块200、数据格式化模块300用于响应于时钟信号clk执行对应运算。启动信号端st与存储模块100、数据运算模块200连接,用于分别向存储模块100、数据运算模块200输出启动信号st。启动信号st可以用于启动二进制浮点数乘法运算电路。存储模块100、数据运算模块200用于响应于启动信号st执行对应运算。
100.进一步的,上述二进制乘法运算电路的具体电路可以根据实际需求选择设置。
101.请参阅图3,在一个实施例中,存储模块100包括第一缓存电路110和第二缓存电路120。
102.第一缓存电路110,用于在时钟信号clk和启动信号st的触发下,获取并缓存按照第一数据格式表示的第一浮点数data1。
103.第二缓存电路120,用于在时钟信号clk和启动信号st的触发下,获取并缓存按照第一数据格式表示的第二浮点数data2。
104.请参阅图4,在一个实施例中,数据运算模块200包括:乘法电路210和加法电路220。
105.乘法电路210与第一缓存电路110、第二缓存电路120连接,用于对第一浮点数的整数data1_int和第二浮点数的整数data2_int执行乘法运算,以得到中间结果浮点数的整数datam_int并输出格式化启动信号st_f。
106.加法电路220与第一缓存电路110、第二缓存电路120连接,用于对第一浮点数的指数data1_exp和第二浮点数的指数data2_exp执行加法运算,得到中间结果浮点数的指数datam_exp。
107.示例的,数据运算模块200还包括延迟电路230,延迟电路230用于响应于时钟信号clk和启动信号st并输出延迟启动信号st_d。
108.乘法电路210还用于响应于延迟启动信号st_d,对第一浮点数的整数data1_int和第二浮点数的整数data2_int执行乘法运算。
109.请查阅图5,在一个实施例中,数据格式化模块300包括:移位寄存器电路310、异或电路320、计数器330、或电路340、第一与电路350、非逻辑电路360以及第二与电路370。
110.移位寄存器电路310与乘法电路210连接,用于在时钟信号clk和格式化启动信号st_f的触发下,按照第二数据格式缓存中间结果浮点数的整数datam_int,并根据移位使能信号en向左移位或停止移位中间结果浮点数的整数datam_int。移位寄存器电路310可以根据需要缓存的数据的位数对应选择。
111.异或电路320与移位寄存器电路310连接,用于判断移位寄存器电路310缓存的最高位数和次高位数是否相同,并输出异或运算结果。
112.计数器330用于在时钟信号clk和格式化启动信号st_f的触发下,记录移位中间结果浮点数的整数datam_int时的移位个数,并输出计数值n、计数值达到信号reach以及计数运行信号run。计数值达到信号reach在移位个数小于阈值时为无效,在移位个数等于阈值时为有效。计数运行信号run在计数器330未运行时为无效,在计数器330运行时为有效。
113.或电路340与异或电路320、计数器330连接,用于根据异或运算结果和计数值达到信号reach,输出或运算结果。
114.第一与电路350与或电路340、计数器330连接,用于根据或运算结果和计数运行信号run,输出计数使能信号enc。计数器330还用于根据计数使能信号enc计数或停止计数。
115.在移位寄存器电路310缓存的最高位数和次高位数不同且计数运行信号run有效的情况下,或者在移位寄存器电路310缓存的最高位数和次高位数相同、移位个数等于阈值且计数运行信号run有效的情况下,计数使能信号enc为无效并且计数使能信号enc作为输出有效信号q输出,计数器330停止计数。在移位寄存器电路310缓存的最高位数和次高位数相同、移位个数小于阈值且计数运行信号run有效的情况下,计数使能信号enc为有效,计数器330继续计数。
116.非逻辑电路360与第一与电路350连接,用于根据计数使能信号enc输出非逻辑运算结果。
117.第二与电路370与非逻辑电路360、计数器330、移位寄存器电路310连接,用于根据非逻辑运算结果和计数运行信号run,输出移位使能信号en至移位寄存器电路310。
118.在移位寄存器电路310缓存的最高位数和次高位数不同且计数运行信号run为无效的情况下,或者在移位寄存器电路310缓存的最高位数和次高位数相同、移位个数等于阈值且计数运行信号run为无效的情况下,移位使能信号en为无效,移位寄存器电路310停止移位。在移位寄存器电路310缓存的最高位数和次高位数相同、移位个数小于阈值且计数运行信号run为有效的情况下,移位使能信号en为有效,移位寄存器电路310继续向左移位。
119.示例的,移位寄存器电路310还用于在停止移位的情况下,按照第一数据格式中的整数位数,从移位寄存器电路310缓存的最高位数开始选取对应位数的数值,作为目标浮点数的整数datat_int输出。
120.在一个实施例中,数据格式化模块300还包括指数计算电路380、拼接电路390。
121.指数计算电路380与加法电路220、计数器330连接,用于将中间结果浮点数的指数datam_exp和计数值n相加,并减去第一数据格式的整数位数,以得到目标浮点数的指数datat_exp。
122.拼接电路390与指数计算电路380、移位寄存器电路310连接,用于拼接目标浮点数的整数datat_int和目标浮点数的指数datat_exp,以得到目标浮点数datat并作为运算结果dataf输出。
123.为了便于理解上述实施例中二进制浮点数乘法运算电路的运行原理,下面通过具体的数据来举例说明。
124.在一个实施例中,假设第一数据格式为32位,其中整数位数为24位,指数位数为8位。第二数据格式为56位,其中整数位数为48位,指数位数为8位。
125.第一浮点数的整数data1_int为30,第一浮点数的指数data1_exp为3,在将其按照第一数据格式缓存到第一缓存电路110中后,第一浮点数的整数data1_int表示为000000000000000000011110,第一浮点数的指数data1_exp表示为00000011。
126.第二浮点数的整数data2_int为4,第二浮点数的指数data2_exp为1,在将其按照第一数据格式缓存到第二缓存电路120中后,第二浮点数的整数data2_int表示为000000000000000000000100,第二浮点数的指数data2_exp表示为00000001。
127.乘法电路210对第一浮点数的整数data1_int和第二浮点数的整数data2_int执行乘法运算,得到中间结果浮点数的整数datam_int。中间结果浮点数的整数datam_int按照
第二数据格式表示为000000000000000000000000000000000000000001111000。
128.加法电路220对第一浮点数的指数data1_exp和第二浮点数的指数data2_exp执行加法运算,得到中间结果浮点数的指数datam_exp为00000100。
129.移位寄存器电路310按照第二数据格式缓存中间结果浮点数的整数datam_int。计数器330开始计数并输出计数运行信号run和计数值达到信号reach。此时的计数运行信号run为有效,计数值达到信号reach为无效。
130.经异或电路320判断,移位寄存器电路310缓存的最高位数和次高位数相同,并输出对应的异或运算结果。
131.或电路340根据异或运算结果和计数值达到信号reach输出对应的或运算结果。
132.第一与电路350根据或运算结果和计数运行信号run,输出计数使能信号enc,此时的计数使能信号enc为有效,计数器330继续计数。
133.非逻辑电路360根据计数使能信号enc输出对应的非逻辑运算结果。
134.第二与电路370根据非逻辑运算结果和计数运行信号run,输出移位使能信号en至移位寄存器电路310。此时的移位使能信号en为有效,移位寄存器电路310向左移一位。此时移位寄存器电路310中的数据为000000000000000000000000000000000000000011110000。
135.在移位寄存器电路310按照上述步骤重复了40次后,移位寄存器电路310中的数据为011110000000000000000000000000000000000000000000。经异或电路320判断移位寄存器电路310缓存的最高位数和次高位数不同,并输出对应的异或运算结果。
136.或电路根据340根据异或运算结果和计数值达到信号reach输出对应的或运算结果。
137.第一与电路350根据或运算结果和计数运行信号run,输出计数使能信号enc。此时的计数使能信号enc为无效,计数器330停止计数,计数使能信号enc作为输出有效信号q输出。计数值n为40,按照第一数据格式表示为00101000。
138.非逻辑电路360根据计数使能信号enc输出对应的非逻辑运算结果。
139.第二与电路370根据非逻辑运算结果和计数运行信号run,输出移位使能信号en至移位寄存器电路310。此时的计数运行信号run和移位使能信号en均为无效,移位寄存器电路310停止移位。
140.移位寄存器电路310在停止移位的情况下,按照第一数据格式中的整数位数,从移位寄存器电路310缓存的最高位数开始选取对应位数的数值,作为目标浮点数的整数datat_int输出。目标浮点数的整数datat_int为011110000000000000000000。
141.指数计算电路380将中间结果浮点数的指数datam_exp和计数值n相加,并减去第一数据格式的整数位数,获得目标浮点数的指数datat_exp,即20,按照第一数据格式表示为00010100。
142.拼接电路390拼接目标浮点数的整数datat_int和目标浮点数的指数datat_exp,以得到目标浮点数datat并作为运算结果dataf输出。运算结果的整数dataf_int为011110000000000000000000,运算结果的指数dataf_exp为00010100。运算结果dataf的实际值为7.5。
143.在另一个实施例中,假设第一数据格式为32位,其中整数位数为24位,指数位数为8位。第二数据格式为56位,其中整数位数为48位,指数位数为8位。
144.第一浮点数的整数data1_int为30,第一浮点数的指数data1_exp为3,在将其按照第一数据格式缓存到第一缓存电路110中后,第一浮点数的整数data1_int表示为000000000000000000011110,第一浮点数的指数data1_exp表示为00000011。
145.第二浮点数的整数data2_int为0,第二浮点数的指数data2_exp为0,在将其按照第一数据格式缓存到第二缓存电路120中后,第二浮点数的整数data2_int表示为000000000000000000000000,第二浮点数的指数data2_exp表示为00000000。
146.乘法电路210对第一浮点数的整数data1_int和第二浮点数的整数data2_int执行乘法运算,得到中间结果浮点数的整数datam_int。中间结果浮点数的整数datam_int按照第二数据格式表示为000000000000000000000000000000000000000000000000。
147.加法电路220对第一浮点数的指数data1_exp和第二浮点数的指数data2_exp执行加法运算,得到中间结果浮点数的指数datam_exp为00000011。
148.移位寄存器电路310按照第二数据格式缓存中间结果浮点数的整数datam_int。计数器330开始计数并输出计数运行信号run和计数值达到信号reach。此时的计数运行信号run为有效,计数值达到信号reach为无效。
149.经异或电路320判断,移位寄存器电路310缓存的最高位数和次高位数相同,并输出对应的异或运算结果。
150.或电路340根据异或运算结果和计数值达到信号reach输出对应的或运算结果。
151.第一与电路350根据或运算结果和计数运行信号run,输出计数使能信号enc,此时的计数使能信号enc为有效,计数器330继续计数。
152.非逻辑电路360根据计数使能信号enc输出对应的非逻辑运算结果。
153.第二与电路370根据非逻辑运算结果和计数运行信号run,输出移位使能信号en至移位寄存器电路310。此时的移位使能信号en为有效,移位寄存器电路310向左移一位。此时移位寄存器电路310中的数据为000000000000000000000000000000000000000000000000。
154.在移位寄存器电路310按照上述步骤重复了47次后,移位寄存器电路310中的数据仍为000000000000000000000000000000000000000000000000。经异或电路320判断移位寄存器电路310缓存的最高位数和次高位数相同,并输出对应的异或运算结果。此时的移位个数等于阈值,计数值达到信号reach有效。
155.或电路根据340根据异或运算结果和计数值达到信号reach输出对应的或运算结果。
156.第一与电路350根据或运算结果和计数运行信号run,输出计数使能信号enc。此时的计数使能信号enc为无效,计数器330停止计数,计数使能信号enc作为输出有效信号q输出。计数值n为47,按照第一数据格式表示为00101111。
157.非逻辑电路360根据计数使能信号enc输出对应的非逻辑运算结果。
158.第二与电路370根据非逻辑运算结果和计数运行信号run,输出移位使能信号en至移位寄存器电路310。此时的计数运行信号run和移位使能信号en均为无效,移位寄存器电路310停止移位。
159.移位寄存器电路310在停止移位的情况下,按照第一数据格式中的整数位数,从移位寄存器电路310缓存的最高位数开始选取对应位数的数值,作为目标浮点数的整数datat_int输出。目标浮点数的整数datat_int为000000000000000000000000。
160.指数计算电路380将中间结果浮点数的指数datam_exp和计数值n相加,并减去第一数据格式的整数位数,获得目标浮点数的指数datat_exp,即26,按照第一数据格式表示为00011010。
161.拼接电路390拼接目标浮点数的整数datat_int和目标浮点数的指数datat_exp,以得到目标浮点数datat并作为运算结果dataf输出。运算结果的整数dataf_int为000000000000000000000000,运算结果的指数dataf_exp为00011010。运算结果dataf的实际值为0。
162.本公开实施例还提供了一种计算装置,该计算装置包括如上一些实施例中的二进制浮点数乘法运算电路。
163.示例的,计算装置还可以包括输入装置、输出装置以及必要的存储器等。其中,输入装置可以包括诸如鼠标、键盘、触控屏、通信网络连接器等,用于输入二进制浮点数。输出装置可以包括诸如显示器、打印机、以及通信网络及其所连接的远程输出设备等,用于输出上述一些实施例中的运算结果。存储器用于存储上述输入装置输入的数据,以及二进制浮点数乘法运算电路运行过程中产生的数据。存储器可以包括易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。
164.计算装置包括如上一些实施例中的二进制浮点数乘法运算电路,用于实施如上一些实施例中的二进制浮点数乘法运算方法。前述二进制浮点数乘法运算电路所能实现的技术效果,该计算装置也均能实现,此处不再详述。
165.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
166.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
转载请注明原文地址:https://win.8miu.com/read-250101.html

最新回复(0)