CN113672198B - 二进制浮点数加法运算电路控制方法、电路及计算装置 - Google Patents
二进制浮点数加法运算电路控制方法、电路及计算装置 Download PDFInfo
- Publication number
- CN113672198B CN113672198B CN202110949682.0A CN202110949682A CN113672198B CN 113672198 B CN113672198 B CN 113672198B CN 202110949682 A CN202110949682 A CN 202110949682A CN 113672198 B CN113672198 B CN 113672198B
- Authority
- CN
- China
- Prior art keywords
- floating point
- point number
- integer
- circuit
- preprocessing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000007781 pre-processing Methods 0.000 claims abstract description 159
- 238000012805 post-processing Methods 0.000 claims abstract description 33
- 239000000872 buffer Substances 0.000 description 42
- 102100035087 Ectoderm-neural cortex protein 1 Human genes 0.000 description 11
- 101000877456 Homo sapiens Ectoderm-neural cortex protein 1 Proteins 0.000 description 11
- 101001006871 Homo sapiens Kelch-like protein 25 Proteins 0.000 description 11
- 102100027800 Kelch-like protein 25 Human genes 0.000 description 11
- 101100532097 Vitis rotundifolia RUN1 gene Proteins 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000003708 edge detection Methods 0.000 description 5
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 101100241173 Caenorhabditis elegans dat-1 gene Proteins 0.000 description 1
- 101710178035 Chorismate synthase 2 Proteins 0.000 description 1
- 101710152694 Cysteine synthase 2 Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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/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
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
Abstract
本申请涉及一种二进制浮点数加法运算电路控制方法、电路及计算装置。在上述电路中,数据预处理模块用于使第一浮点数中整数和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并调整指数以得到第一预处理浮点数和第二预处理浮点数;数据运算模块用于执行加法运算以得到中间结果浮点数;数据后处理模块用于在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数,在两者整数均为零的情况下输出零,在两者整数均为非零数的情况下判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数;若否,则输出中间结果浮点数;若是,则输出目标浮点数。上述电路能够提升浮点数的有效位数和表示精度。
Description
技术领域
本发明涉及计算机体系架构技术领域,特别是涉及二进制浮点数加法运算电路控制方法、电路及计算装置。
背景技术
浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数,其主要由整数、指数和基数组成。由于浮点数是近似表示,因此浮点数会涉及到表达精度的问题。
浮点数运算即利用浮点数进行加减乘除等运算。在现有的浮点数加法运算中,浮点数虽然可以具有较大的数据的表示范围,但是在浮点数的位数有限的情况下,其数据表示范围大也就意味着其表示精度较低。
发明内容
基于此,有必要针对浮点运算中的浮点数表示精度低的问题,提供一种二进制浮点数加法运算电路控制方法、电路及计算装置。
一种二进制浮点数加法运算电路控制方法,二进制浮点数加法运算电路包括数据预处理模块、数据运算模块和数据后处理模块;控制方法包括:控制数据预处理模块获取第一浮点数和第二浮点数,第一浮点数和第二浮点数的基数为2;判断第一浮点数的整数和第二浮点数的整数是否均为非零数。若否,则控制数据后处理模块在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果,或在第一浮点数和第二浮点数中整数均为零的情况下输出零为运算结果;若是,则控制数据预处理模块按照第一数据格式,分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并根据第一浮点数和第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数。控制数据运算模块对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数。控制数据后处理模块判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数。若否,则控制数据后处理模块输出中间结果浮点数为运算结果;若是,则控制数据后处理模块将中间结果浮点数的整数向右移一位,并将中间结果浮点数的指数减一,得到目标浮点数,并输出目标浮点数为运算结果。
在本公开实施例中,第一浮点数和第二浮点数的整数和指数采用二进制进行表示,第一浮点数和第二浮点数的基数为2。在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,按照第一数据格式分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位。由于第一浮点数和第二浮点数中的整数向左移一位,就表示第一浮点数和第二浮点数的整数乘2。如此,在使得第一浮点数和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位之后,对第一预处理浮点数和第二预处理浮点数执行加法运算,可以在浮点数的位数有限的情况下,利用第一浮点数的整数和第二浮点数的整数的移位操作以及对应指数的调整,有效提升浮点数加法运算中浮点数的有效位数和浮点数的表示精度,以具有较好的运算精度。
在一个实施例中,控制数据预处理模块按照第一数据格式,分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,以得到第一预处理浮点数和第二预处理浮点数,包括以下步骤。
控制数据预处理模块在第一移位寄存器电路中按照第一数据格式缓存第一浮点数的整数,并判断第一移位寄存器电路缓存的最高位数和次高位数是否相同。若是,则第一移位寄存器电路移位第一浮点数的整数,第一计数器记录第一浮点数的整数移位的第一移位个数,直至第一移位寄存器电路缓存的最高位数和次高位数不同;若否,则第一移位寄存器电路缓存的整数为第一预处理浮点数的整数,第一浮点数的指数与第一移位个数之和为第一预处理浮点数的指数。
控制数据预处理模块在第二移位寄存器电路中按照第一数据格式缓存第二浮点数的整数,并判断第二移位寄存器电路缓存的最高位数和次高位数是否相同。若是,则第二移位寄存器电路移位第二浮点数的整数,第二计数器记录第二浮点数的整数移位的第二移位个数,直至第二移位寄存器电路缓存的最高位数和次高位数不同;若否,则第二移位寄存器电路缓存的浮点数的整数为第二预处理浮点数的整数,第二浮点数的指数与第二移位个数之和为第二预处理浮点数的指数。
在一个实施例中,控制数据运算模块对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数,包括以下步骤。
控制数据运算模块判断第一预处理浮点数的指数和第二预处理浮点数的指数是否相同。
若是,则对第一预处理浮点数的整数和第二预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数;第一预处理浮点数的指数或第二预处理浮点数的指数对应为中间结果浮点数的指数。
若否,则获取第一预处理浮点数的指数和第二预处理浮点数的指数差值的绝对值。控制数据运算模块在第一预处理浮点数的指数大于或等于第二预处理浮点数的指数的情况下,根据差值的绝对值向右移位第一预处理浮点数的整数,并对第二预处理浮点数的整数和移位后的第一预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数。第二预处理浮点数的指数对应为中间结果浮点数的指数。控制数据运算模块在第一预处理浮点数的指数小于第二预处理浮点数的指数的情况下,根据差值的绝对值向右移位第二预处理浮点数的整数,并对第一预处理浮点数的整数和移位后的第二预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数。第一预处理浮点数的指数对应为中间结果浮点数的指数。
在一个实施例中,中间结果浮点数按照第二数据格式缓存,第二数据格式的整数位数等于第一数据格式的整数位数加一。判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数,包括:判断中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值是否相同。若是,则输出中间结果浮点数为运算结果;若否,则将中间结果浮点数的整数向右移一位,并将中间结果浮点数的指数减一,得到目标浮点数,并输出目标浮点数为运算结果。
在一个实施例中,第一浮点数和第二浮点数的实际值为:N/2X。其中,N为对应浮点数的整数,对应浮点数的整数包括符号,X为对应浮点数的指数。
本申请实施例还提供了一种二进制浮点数加法运算电路。该二进制浮点数加法运算电路包括:数据预处理模块、数据运算模块和数据后处理模块。
数据预处理模块用于获取第一浮点数和第二浮点数,并在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,按照第一数据格式分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并根据第一浮点数和第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数。
数据运算模块用于对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数。
数据后处理模块用于执行以下处理。在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果。在第一浮点数和第二浮点数中整数均为零的情况下输出零为运算结果。在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数;若否,则输出中间结果浮点数为运算结果;若是,则将中间结果浮点数的整数向右移一位,并将中间结果浮点数的指数减一,得到目标浮点数,并输出目标浮点数为运算结果。
本公开实施例提供的二进制浮点数加法运算电路结构简单,运算方便,可以有效提升浮点数加法运算中浮点数的有效位数和浮点数的表示精度,以具有较好的运算精度。
在一个实施例中,数据预处理模块包括:存储电路、判断模块和数据格式化单元。
存储电路用于获取并缓存第一浮点数、第二浮点数、第一预处理浮点数和第二预处理浮点数。
判断模块用于判断第一浮点数的整数和第二浮点数的整数是否均为非零数,在第一浮点数和第二浮点数中任一者整数为零的情况下输出第一选择信号至数据后处理模块,在第一浮点数的整数和第二浮点数的整数包含零的情况下输出第二选择信号至数据后处理模块,并在第一浮点数的整数和第二浮点数的整数均为非零数的情况下输出格式化启动信号。
数据格式化单元用于在格式化启动信号的触发下,按照第一数据格式分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并根据第一浮点数和第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数,且输出预处理完成信号。
在一个实施例中,判断模块包括:第一比较电路、第二比较电路、第一或电路以及第一与电路。
第一比较电路与存储电路连接,用于将第一浮点数的整数与零进行比较,并输出第一比较结果。
第二比较电路与存储电路连接,用于将第二浮点数的整数与零进行比较,并输出第二比较结果。
第一或电路与第一比较电路和第二比较电路连接,用于根据第一比较结果和第二比较结果输出第一或运算结果。
第一与电路与第一或电路连接,用于根据第一或运算结果输出格式化启动信号。
其中,第一选择信号根据第一比较结果确定,第一选择信号包括:第一浮点数的整数为零的信号;或,第一选择信号根据第二比较结果确定,第一选择信号包括:第二浮点数的整数为零的信号。第二选择信号根据第一或运算结果确定,第二选择信号包括:第一浮点数的整数和第二浮点数的整数中至少一个整数为零的信号。
在一个实施例中,判断模块还包括:与第一与电路连接的延迟电路。延迟电路用于输出延迟启动信号。第一与电路用于根据延迟启动信号和第一或运算结果输出格式化启动信号。
在一个实施例中,数据格式化单元包括:第一格式化电路和第二格式化电路。
第一格式化电路与存储电路、第一与电路连接,用于在格式化启动信号的触发下,按照第一数据格式向左移位第一浮点数,使第一浮点数中整数的符号位对应为第一数据格式中整数位数的最高位,以得到第一预处理浮点数,并输出第一格式化完成信号;存储电路用于根据第一格式化完成信号存储第一预处理浮点数。
第二格式化电路与存储电路、第一与电路连接,用于在格式化启动信号的触发下,按照第一数据格式向左移位第二浮点数,使第二浮点数中整数的符号位对应为第一数据格式中整数位数的最高位,以得到第二预处理浮点数,并输出第二格式化完成信号;存储电路用于根据第二格式化完成信号存储第二预处理浮点数。
在一个实施例中,数据格式化单元还包括:第二与电路和边沿检测电路。
第二与电路与第一格式化电路、第二格式化电路连接,用于根据第一格式化完成信号、第二格式化完成信号输出格式化结束信号。
边沿检测电路与第二与电路连接,用于根据格式化结束信号生成预处理完成信号。
在一个实施例中,第一格式化电路包括:第一移位寄存器电路、第一异或电路、第一计数器、第三与电路、第一非逻辑电路、第四与电路、第一加法电路以及第一拼接电路。
第一移位寄存器电路与存储电路、第一与电路连接,用于在格式化启动信号的触发下,缓存并移位第一浮点数的整数。
第一异或电路与第一移位寄存器电路连接,用于判断第一移位寄存器电路缓存的最高位数和次高位数是否相同,并输出第一异或运算结果。
第一计数器与第一与电路连接,用于在格式化启动信号的触发下,记录移位第一浮点数的整数时的第一移位个数,并输出第一计数值和第一计数运行信号。
第三与电路与第一异或电路、第一计数器连接,用于根据第一异或运算结果和第一计数运行信号输出第一计数使能信号;第一计数器还用于根据第一计数使能信号计数或停止计数;第一计数使能信号在第一移位寄存器电路缓存的最高位数和次高位数不同时,作为第一格式化完成信号输出。
第一非逻辑电路与第三与电路连接,用于对第一计数使能信号进行非逻辑运算,输出第一非逻辑运算结果。
第四与电路与第一非逻辑电路、第一计数器、第一移位寄存器电路连接,用于根据第一非逻辑运算结果和第一计数运行信号输出第一移位使能信号至第一移位寄存器电路;第一移位寄存器电路还用于在第一移位使能信号的控制下移位或停止移位。
第一加法电路与存储电路、第一计数器连接,用于对第一浮点数的指数和第一计数值执行加法运算,以得到第一预处理浮点数的指数。
第一拼接电路与第一移位寄存器电路、第一加法电路连接,用于拼接第一预处理浮点数的整数和第一预处理浮点数的指数,以得到第一预处理浮点数。
在一个实施例中,第二格式化电路包括:第二移位寄存器电路、第二异或电路、第二计数器、第五与电路、第二非逻辑电路、第六与电路、第二加法电路以及第二拼接电路。
第二移位寄存器电路与存储电路、第一与电路连接,用于在格式化启动信号的触发下,缓存并移位第二浮点数的整数。
第二异或电路与第二移位寄存器电路连接,用于判断第二移位寄存器电路缓存的最高位数和次高位数是否相同,并输出第二异或运算结果。
第二计数器与第一与电路连接,用于在格式化启动信号的触发下,记录移位第二浮点数的整数时的第二移位个数,并输出第二计数值和第二计数运行信号。
第五与电路与第二异或电路、第二计数器连接,用于根据第二异或运算结果和第二计数运行信号输出第二计数使能信号;第二计数器还用于根据第二计数使能信号计数或停止计数;第二计数使能信号在第二移位寄存器电路缓存的最高位数和次高位数不同时,作为第二格式化完成信号输出。
第二非逻辑电路与第五与电路连接,用于对第二计数使能信号进行非逻辑运算,输出第二非逻辑运算结果。
第六与电路与第二非逻辑电路、第二计数器、第二移位寄存器电路连接,用于根据第二非逻辑运算结果和第二计数运行信号输出第二移位使能信号至第二移位寄存器电路;第二移位寄存器电路还用于在第二移位使能信号的控制下移位或停止移位。
第二加法电路与存储电路、第二计数器连接,用于对第二浮点数的指数和第二计数值执行加法运算,以得到第二预处理浮点数的指数。
第二拼接电路与第二移位寄存器电路、第二加法电路连接,用于拼接第二预处理浮点数的整数和第二预处理浮点数的指数,以得到第二预处理浮点数。
在一个实施例中,数据运算模块包括:第一减法电路、取绝对值电路、第一选择电路、第一右移位电路、第二选择电路、第三加法电路以及第三选择电路。
第一减法电路与存储电路连接,用于对第一预处理浮点数的指数和第二预处理浮点数的指数执行减法运算,并输出第一减法运算结果和第三选择信号。其中,第三选择信号根据第一减法运算结果的符号确定。
取绝对值电路与第一减法电路连接,用于对第一减法运算结果取绝对值,以输出移位个数。
第一选择电路与存储电路、第一减法电路连接,用于在第三选择信号的控制下,选择输出第一预处理浮点数和第二预处理浮点数中指数较大的浮点数的整数。
第一右移位电路与取绝对值电路、第一选择电路连接,用于根据移位个数向右移位指数较大的浮点数的整数,并输出第一右移位结果。
第二选择电路与存储电路、第一减法电路连接,用于在第三选择信号的控制下,选择输出第一预处理浮点数和第二预处理浮点数中指数较小的浮点数的整数。
第三加法电路与第一右移位电路、第二选择电路连接,用于对第一右移位结果和指数较小的浮点数的整数执行加法运算,以得到中间结果浮点数的整数。
第三选择电路与存储电路、第一减法电路连接,用于在第三选择信号的控制下,选择输出第一预处理浮点数和第二预处理浮点数中指数较小的浮点数的指数,以得到中间结果浮点数的指数。
在一个实施例中,中间结果浮点数按照第二数据格式缓存,第二数据格式的整数位数等于第一数据格式的整数位数加一。
数据后处理模块包括:第三异或电路、第二右移位电路、第四选择电路、第二减法电路、第五选择电路、第三拼接电路、第六选择电路以及第七选择电路。
第三异或电路与第三加法电路连接,用于判断中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值是否相同,并输出第三异或运算结果。
第二右移位电路与第三加法电路连接,用于将中间结果浮点数的整数向右移一位,并输出第二右移位结果。
第四选择电路与第三加法电路、第三异或电路、第二右移位电路连接,用于根据第三异或运算结果,在中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值相同的情况下,输出中间结果浮点数的整数;在中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值不同的情况下,输出第二右移位结果为目标浮点数的整数。
第二减法电路与第三选择电路连接,用于将中间结果浮点数的指数减一,并输出第二减法运算结果。
第五选择电路与第三选择电路、第三异或电路、第二减法电路连接,用于根据第三异或运算结果,在中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值相同的情况下,输出中间结果浮点数的指数;在中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值不同的情况下,输出第二减法运算结果为目标浮点数的指数。
第三拼接电路与第四选择电路、第五选择电路连接,用于在中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值相同的情况下,拼接中间结果浮点数的整数和中间结果浮点数的指数,以得到中间结果浮点数;在中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值不同的情况下,拼接目标浮点数的整数和目标浮点数的指数,以得到目标浮点数。
第六选择电路与存储电路、判断模块连接,用于在第一选择信号的控制下,在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数,在第一浮点数和第二浮点数中整数均为零的情况下输出第一浮点数或第二浮点数。
第七选择电路与判断模块、第六选择电路、第三拼接电路连接,用于在第二选择信号的控制下,在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果;在第一浮点数和第二浮点数中整数均为零的情况下输出第一浮点数或第二浮点数为运算结果;在第一浮点数的整数和第二浮点数的整数均为非零数且中间结果浮点数的整数位数不大于第一数据格式中的整数位数的情况下,输出中间结果浮点数为运算结果;在第一浮点数的整数和第二浮点数的整数均为非零数且中间结果浮点数的整数位数大于第一数据格式中的整数位数的情况下,输出目标浮点数为运算结果。
本申请实施例还提供了一种计算装置。本申请实施例提供的计算装置,包括前述一些实施例中的二进制浮点数加法运算电路。前述二进制浮点数加法运算电路所能实现的技术效果,该计算装置也均能实现,此处不再详述。
附图说明
为了更清楚地说明本申请实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一实施例中提供的二进制浮点数加法运算方法的方法流程图;
图2为一实施例中提供的二进制浮点数加法运算电路的结构示意图;
图3为一实施例中提供的二进制浮点数加法运算电路的数据预处理模块的结构示意图;
图4为一实施例中提供的二进制浮点数加法运算电路的第一格式化电路的结构示意图;
图5为一实施例中提供的二进制浮点数加法运算电路的第二格式化电路的结构示意图;
图6为一实施例中提供的二进制浮点数加法运算电路的数据运算模块的结构示意图;
图7为一实施例中提供的二进制浮点数加法运算电路的数据后处理模块的结构示意图。
附图标号说明:
100-数据预处理模块,110-存储电路,111-第一缓存电路,112-第二缓存电路,113-第三缓存电路,
114-第四缓存电路,120-判断模块,121-第一比较电路,122-第二比较电路,123-第一或电路,
124-第一与电路,125-延迟电路,130-数据格式化单元,131-第一格式化电路,
1311-第一移位寄存器电路,1312-第一异或电路,1313-第一计数器,1314-第三与电路,1315-第一非逻辑电路,1316-第四与电路,1317-第一加法电路,1318-第一拼接电路,
132-第二格式化电路,1321-第二移位寄存器电路,1322-第二异或电路,1323-第二计数器,
1324-第五与电路,1325-第二非逻辑电路,1326-第六与电路,1327-第二加法电路,
1328-第二拼接电路,133-第二与电路,134-边沿检测电路,200-数据运算模块,210-第一减法电路,
220-取绝对值电路,230-第一选择电路,240-第一右移位电路,250-第二选择电路,
260-第三加法电路,270-第三选择电路,300-数据后处理模块,310-第三异或电路,
320-第二右移位电路,330-第四选择电路,340-第二减法电路,350-第五选择电路,
360-第三拼接电路,370-第六选择电路,380-第七选择电路,390-第八选择电路,
Data1-第一浮点数,Data1_INT-第一浮点数的整数,Data1_EXP-第一浮点数的指数,
Data2-第二浮点数,Data2_INT-第二浮点数的整数,Data2_EXP-第二浮点数的指数,
Data1’-第一预处理浮点数,Data1’_INT-第一预处理浮点数的整数,
Data1’_EXP-第一预处理浮点数的指数,Data2’-第二预处理浮点数,
Data2’_INT-第二预处理浮点数的整数,Data2’_EXP-第二预处理浮点数的指数,
DataM-中间结果浮点数,DataM_INT-中间结果浮点数的整数,
DataM_EXP-中间结果浮点数的指数,DataT-目标浮点数,DataT_INT-目标浮点数的整数,DataT_EXP-目标浮点数的指数,DataF-运算结果,ST-启动信号,CLK-时钟信号,
ST_D-延迟启动信号,ST_F-格式化启动信号,CS1/CS1’-第一控制信号,CS2-第二控制信号,
CS3-第三控制信号,F1-第一格式化完成信号,F2-第二格式化完成信号,F3-格式化结束信号,
F4-预处理完成信号,F5-计算完成信号,ENC1-第一计数使能信号,ENC2-第二计数使能信号,
EN1,第一移位使能信号,EN2-第二移位使能信号,N1-第一计数值,N2-第二计数值,N3-移位个数,
RUN1-第一计数运行信号,RUN2-第二计数运行信号,Q-输出有效信号。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳的实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
在使用本文中描述的“包括”、“具有”、和“包含”的情况下,除非使用了明确的限定用语,例如“仅”、“由……组成”等,否则还可以添加另一部件。除非相反地提及,否则单数形式的术语可以包括复数形式,并不能理解为其数量为一个。
为了说明本申请的技术方案,下面通过一些具体的实施例来进行说明。
为了便于理解本申请的技术方案,首先对本申请中涉及的概念和定义进行了说明,这些内容也属于本申请技术方案的一部分。
二进制浮点数主要由整数、指数和基数组成。本申请实施例中,二进制浮点数的整数和指数采用二进制进行表示,二进制浮点数的基数为2。以下内容中并不涉及二进制浮点数的基数,只针对其整数和指数进行说明。
二进制浮点数的整数的最高位为符号位,如果浮点数为正数则符号位为0,如果浮点数为负数则符号位为1。在二进制浮点数中,浮点数为负数时,该浮点数的整数的表示方式为:该数的相反数取反再加一;也就是说在二进制浮点数中符号位和整数中除符号位以外的数值的首位是不同的。例如,整数234可以表示为有符号位的二进制数:011101010;整数-234可以表示为有符号位的二进制数:100010110。
本公开实施例中,二进制浮点数的整数位数和指数位数均是固定的。以二进制浮点数为单精度浮点数为例,单精度浮点数的数据格式为32位,其中,整数位数为24位,指数位数为8位。例如,某个浮点数的整数为234,指数为3在将其按照单精度浮点数的数据格式缓存后,可以得到:整数为000000000000000011101010,指数为00000011。如此,整数000000000000000011101010中前16个连续的0即为该浮点数的符号位及其扩展。
本公开实施例中,二进制浮点数的实际值的表达形式为:N/2X,其中,N为浮点数的整数,整数包括符号,X为浮点数的指数。例如,某个浮点数的整数为234,指数为3,其实际值为234/23。
本公开实施例中,二进制浮点数的整数向左移一位是指整数乘2,指数加1。二进制浮点数向右移一位是指整数除以2,指数减1。以整数为234,指数为3为例,其向左移一位整数则表示为468,指数则表示为4,在将该整数468和指数4对应采用单精度浮点数予以表示后,整数为000000000000000111010100,指数为00000100;其向右移一位整数则表示为117,指数则表示为2,在将该整数117和指数2对应采用单精度浮点数予以表示后,整数为000000000000000001110101,指数为00000010。
本公开实施例中,二进制浮点数的有效位数是指其整数中包含符号位及其右侧有效数值的位数。例如,二进制浮点数的整数按照单精度浮点数予以表示后,若整数为000000000000000111010100,其中,0111010100为其有效位数,第一个0为符号位,有效位数为10位;若整数为011101010000000000000000,其中,011101010000000000000000为其有效位数,第一个0为符号位,有效位数为24位。
基于上述内容,请参阅图1,本公开实施例提供了一种二进制浮点数加法运算电路控制方法,二进制浮点数加法运算电路包括数据预处理模块、数据运算模块和数据后处理模块;控制方法包括以下步骤。
步骤101,控制数据预处理模块获取第一浮点数和第二浮点数,并判断第一浮点数的整数和第二浮点数的整数是否均为非零数。
若否,则控制数据后处理模块在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果,或在第一浮点数和第二浮点数中整数均为零的情况下输出零为运算结果。
若是,则控制数据预处理模块按照第一数据格式,分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并根据第一浮点数和第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数。
示例的,第一预处理浮点数可以通过如下方式获得。
控制数据预处理模块在第一移位寄存器电路中按照第一数据格式缓存第一浮点数的整数,并判断第一移位寄存器电路缓存的最高位数和次高位数是否相同。若是,则第一移位寄存器电路移位第一浮点数的整数,第一计数器记录第一浮点数的整数移位的第一移位个数,直至第一移位寄存器电路缓存的最高位数和次高位数不同;若否,则第一移位寄存器电路缓存的整数为第一预处理浮点数的整数,第一浮点数的指数与第一移位个数之和为第一预处理浮点数的指数。
例如,第一数据格式为32位,其中整数位数为24位,指数位数为8位。第一浮点数为二进制浮点数。第一浮点数的整数为234,指数为3。在将第一浮点数的整数和指数按照第一数据格式缓存到第一移位寄存器电路中后,第一浮点数的整数为000000000000000011101010,指数为00000011。此时,第一移位寄存器电路中的整数的最高位数和次高位数是相同的,需要将其整数向左移位。在移位15次后,该整数表示变为011101010000000000000000,此时,第一移位寄存器电路缓存的最高位数和次高位数不同,第一移位寄存器电路中的数据即为第一预处理浮点数的整数。第一计数器记录的第一移位个数为15,第一预处理浮点数的指数为第一浮点数的指数与第一移位个数之和,即18,其按照第一数据格式表示为00010010。
示例的,第二预处理浮点数可以通过如下方式获得。
控制数据预处理模块在第二移位寄存器电路中按照第一数据格式缓存第二浮点数的整数,并判断第二移位寄存器电路缓存的最高位数和次高位数是否相同;若是,则第二移位寄存器电路移位第二浮点数的整数,第二计数器记录第二浮点数的整数移位的第二移位个数,直至第二移位寄存器电路缓存的最高位数和次高位数不同;若否,则第二移位寄存器电路缓存的浮点数的整数为第二预处理浮点数的整数,第二浮点数的指数与第二移位个数之和为第二预处理浮点数的指数。
例如,第一数据格式为32位,其中整数位数为24位,指数位数为8位。第二浮点数为二进制浮点数。第二浮点数的整数为123,指数为1。在将第二浮点数的整数和指数按照第一数据格式缓存到第二移位寄存器电路中后,第二浮点数的整数为000000000000000001111011,指数为00000001。此时,第二移位寄存器电路中的数据的整数的最高位数和次高位数是相同的,需要将其整数向左移位。在移位16次后,该整数表示变为011110110000000000000000,此时,第二移位寄存器电路缓存的最高位数和次高位数不同,第二移位寄存器电路中的数据即为第二预处理浮点数的整数。第二计数器记录的第二移位个数为16,第二预处理浮点数的指数为第二浮点数的指数与第二移位个数之和,即17,其按照第一数据格式表示为00010001。
第一移位寄存器电路和第二移位寄存器电路可以根据需要缓存的数据位数对应选择。
步骤102,对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数,包括如下步骤。
控制数据运算模块判断第一预处理浮点数的指数和第二预处理浮点数的指数是否相同。
若是,则对第一预处理浮点数的整数和第二预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数;第一预处理浮点数的指数或第二预处理浮点数的指数对应为中间结果浮点数的指数;
若否,则获取第一预处理浮点数的指数和第二预处理浮点数的指数差值的绝对值。
示例的,控制数据运算模块在第一预处理浮点数的指数大于或等于第二预处理浮点数的指数的情况下,根据差值的绝对值向右移位第一预处理浮点数的整数,并对第二预处理浮点数的整数和移位后的第一预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数。第二预处理浮点数的指数对应为中间结果浮点数的指数。
示例的,控制数据运算模块在第一预处理浮点数的指数小于第二预处理浮点数的指数的情况下,根据差值的绝对值向右移位第二预处理浮点数的整数,并对第一预处理浮点数的整数和移位后的第二预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数。第一预处理浮点数的指数对应为中间结果浮点数的指数。
例如,上述举例中第一预处理浮点数的指数大于第二预处理浮点数的指数,其指数差值的绝对值为1。因此,需将第一预处理浮点数的整数向右移一位,此时移位后的第一预处理浮点数的整数为001110101000000000000000。对移位后的第一预处理浮点数的整数和第二预处理浮点数的整数执行加法运算,得到的结果为0101101011000000000000000,该结果即为中间结果浮点数的整数。第二预处理浮点数的指数对应为中间结果浮点数的指数,即00010001。
在一个实施例中,将中间结果浮点数按照第二数据格式缓存,第二数据格式的整数位数等于第一数据格式的整数位数加一。
例如,上述举例中,第一预处理浮点数和第二预处理浮点数的整数按照第一数据格式缓存,第一数据格式的整数位数为24位。在将第一预处理浮点数和第二预处理浮点数执行加法运算后,对应获得的中间结果浮点数的整数位数可能为24位或25位。因此,第二数据格式的整数位数可以设置为第一数据格式的整数位数加一。例如,中间结果浮点数的整数为0101101011000000000000000,该整数位数共有25位,比第一数据格式的整数位数多一位,因此该整数可以按照第二数据格式予以缓存。
步骤103,判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数,包括以下步骤。
判断中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值是否相同。
若否,则控制数据后处理模块输出中间结果浮点数为运算结果。
若是,则控制数据后处理模块将中间结果浮点数的整数向右移一位,并将中间结果浮点数的指数减一,得到目标浮点数,并输出目标浮点数为运算结果。
例如,上述举例中中间结果浮点数的整数为0101101011000000000000000,其最高位和次高位的数值不相同,所以需将中间结果浮点数的整数向右移一位,移位后整数结果为010110101100000000000000,该结果即为目标浮点数的整数。目标浮点数的指数为中间结果浮点数的指数减一,即00010000。此时目标浮点数即为运算结果。
在本公开实施例中,第一浮点数和第二浮点数的整数和指数采用二进制进行表示,第一浮点数和第二浮点数的基数为2。在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,按照第一数据格式分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位。由于第一浮点数和第二浮点数中的整数向左移一位,就表示第一浮点数和第二浮点数的整数乘2。如此,在使得第一浮点数和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位之后,对第一预处理浮点数和第二预处理浮点数执行加法运算,可以在浮点数的位数有限的情况下,利用第一浮点数的整数和第二浮点数的整数的移位操作以及对应指数的调整,有效提升浮点数加法运算中浮点数的有效位数和浮点数的表示精度,以具有较好的运算精度。
本公开实施例还提供了一种二进制浮点数加法运算电路,用于实施上述一些实施例中的二进制浮点数加法运算。本公开实施例提供的二进制浮点数加法运算电路结构简单,运算方便,可以有效提升浮点数加法运算中浮点数的有效位数和浮点数的表示精度,以具有较好的运算精度。
请参阅图2,二进制浮点数加法运算电路包括:数据预处理模块100、数据运算模块200和数据后处理模块300。
数据预处理模块100用于获取第一浮点数和第二浮点数,并在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,按照第一数据格式分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并根据第一浮点数和第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数。
数据运算模块200用于对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数。
数据后处理模块300用于执行以下处理。在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果。在第一浮点数和第二浮点数中整数均为零的情况下输出零为运算结果。在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数;若否,则输出中间结果浮点数为运算结果;若是,则将中间结果浮点数的整数向右移一位,并将中间结果浮点数的指数减一,得到目标浮点数,并输出目标浮点数为运算结果。
数据预处理模块100、数据运算模块200和数据后处理模块300可以根据其对应的功能选择设置。
请参阅图3,在一个实施例中,数据预处理模块100包括存储电路110,判断模块120以及数据格式化单元130,其中,判断模块120与存储电路110连接,数据格式化单元130与存储电路110和判断模块120连接。
数据预处理模块100的输入信号包括时钟信号CLK和启动信号ST。时钟信号CLK用于控制数据预处理模块100的时序。启动信号ST用于启动数据预处理模块100。
可选的,存储电路110包括:第一缓存电路111、第二缓存电路112,第三缓存电路113和第四缓存电路114。第一缓存电路111在时钟信号CLK和启动信号ST的触发下,缓存第一浮点数Data1。第二缓存电路112在时钟信号CLK和启动信号ST的触发下,缓存第二浮点数Data2。
可选的,判断模块120包括:第一比较电路121,第二比较电路122,第一或电路123和第一与电路124。
第一比较电路121与第一缓存电路111连接,用于将第一浮点数的整数Data1_INT和零进行比较,并输出第一比较结果。第一比较结果包含第一浮点数的整数Data1_INT为零和不为零两种情况。在第一浮点数的整数Data1_INT为零的情况下,第一比较电路121输出第一选择信号CS1至数据后处理模块300。
第二比较电路122与第二缓存电路112连接,用于将第二浮点数的整数Data2_INT与零进行比较,并输出第二比较结果。第二比较结果包括第二浮点数的整数Data2_INT为零和不为零两种情况。在第二浮点数的整数Data2_INT为零的情况下,第二比较电路122输出第一选择信号CS1’至数据后处理模块300。
第一或电路123与第一比较电路121和第二比较电路122连接,用于根据第一比较结果和第二比较结果输出第一或运算结果。第一或运算结果包括第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT中至少一个整数为零的情况,以及第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT都不为零的情况。在第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT中至少一个整数为零的情况下,第一或电路123输出第二选择信号CS2至数据后处理模块300。
第一与电路124与第一或电路123连接,用于在第一或运算结果为第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT都不为零的情况下输出格式化启动信号ST_F。
可选的,判断模块120还包括延迟电路125,延迟电路125与第一与电路124连接,延迟电路125在启动信号ST的触发下,输出延迟启动信号ST_D。第一与电路124在第一或运算结果为第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT都不为零以及接收到延迟启动信号ST_D的情况下,输出格式化启动信号ST_F。延迟电路125可以使格式化启动信号ST_F、第一浮点数Data1、第二浮点数Data2同步输入到数据格式化单元130中。
数据格式化单元130包括:第一格式化电路131、第二格式化电路132、第二与电路133和边沿检测电路134。
第一格式化电路131与第一缓存电路111、第一与电路124连接,在时钟信号CLK和格式化启动信号ST_F的触发下,按照第一数据格式向左移位第一浮点数Data1,使第一浮点数Data1中整数的符号位对应为第一数据格式中整数位数的最高位,以得到第一预处理浮点数Data1’,并输出第一格式化完成信号F1。第三缓存电路113用于在时钟信号CLK和第一格式化完成信号F1的触发下,缓存第一预处理浮点数Data1’。
第二格式化电路132与第二缓存电路112、第一与电路124连接,在时钟信号CLK和格式化启动信号ST_F的触发下,按照第一数据格式向左移位第二浮点数Data2,使第二浮点数Data2中整数的符号位对应为第一数据格式中整数位数的最高位,以得到第二预处理浮点数Data2’,并输出第二格式化完成信号F2。第四缓存电路114用于在时钟信号CLK和第二格式化完成信号F2的触发下,缓存第二预处理浮点数Data2’。
第二与电路133与第一格式化电路131、第二格式化电路132连接,用于根据第一格式化完成信号F1、第二格式化完成信号F2输出格式化结束信号F3。
边沿检测电路134与第二与电路133连接,用于根据时钟信号CLK和格式化结束信号F3生成预处理完成信号F4。
请参阅图4,在一个实施例中,第一格式化电路131包括第一移位寄存器电路1311、第一异或电路1312第一计数器1313、第三与电路1314、第一非逻辑电路1315、第四与电路1316、第一加法电路1317以及第一拼接电路1318。
第一移位寄存器电路1311与第一缓存电路111、第一与电路124连接,用于在时钟信号CLK和格式化启动信号ST_F的触发下,缓存并移位第一浮点数的整数Data1_INT。第一移位寄存器电路1311可以根据需要缓存的数据位数对应选择。
第一异或电路1312与第一移位寄存器电路1311连接,用于判断第一移位寄存器电路1311缓存的最高位数和次高位数是否相同,并输出第一异或运算结果。
第一计数器1313与第一与电路124连接,用于在时钟信号CLK和格式化启动信号ST_F的触发下,记录移位第一浮点数的整数Data1_INT时的第一移位个数,并输出第一计数值N1和第一计数运行信号RUN1。
第三与电路1314与第一异或电路1312、第一计数器1313连接,用于根据第一异或运算结果和第一计数运行信号RUN1输出第一计数使能信号ENC1。第一计数器1313根据第一计数使能信号ENC1计数或停止计数。
在第一移位寄存器电路1311缓存的最高位数和次高位数不同和第一计数运行信号RUN1为运行有效时,第一计数使能信号ENC1为计数无效且第一计数使能信号ENC1作为第一格式化完成信号F1输出,同时第一计数器1313停止计数。在第一移位寄存器电路1311缓存的最高位数和次高位数相同和第一计数运行信号RUN1运行有效时,第一计数使能信号ENC1为计数有效且第一计数器1313继续计数。
第一非逻辑电路1315与第三与电路1314连接,用于对第一计数使能信号ENC1进行非逻辑运算,输出第一非逻辑运算结果。
第四与电路1316与第一非逻辑电路1315、第一计数器1313以及第一移位寄存器电路1311连接,用于根据第一非逻辑运算结果和第一计数运行信号RUN1输出第一移位使能信号EN1至第一移位寄存器电路1311。第一移位寄存器电路1311还用于在第一移位使能信号EN1的控制下移位或停止移位。
在第一移位寄存器电路1311缓存的最高位数和次高位数相同且第一计数运行信号RUN1运行有效时,第一移位使能信号EN1为移位有效,在此信号下第一移位寄存器电路1311移位。在第一移位寄存器电路1311缓存的最高位数和次高位数不同和第一计数运行信号RUN1为运行无效时,第一移位使能信号EN1为移位无效,在此信号下第一移位寄存器电路1311停止移位。停止移位后的第一移位寄存器电路1311中的数据即为第一预处理浮点数的整数Data1’_INT。
第一加法电路1317与第一缓存电路111、第一计数器1313连接,用于对第一浮点数的指数Data1_EXP和第一计数值N1执行加法运算,以得到第一预处理浮点数的指数Data1’_EXP。
第一拼接电路1318与第一移位寄存器电路1311、第一加法电路1317连接,用于拼接第一预处理浮点数的整数Data1’_INT和第一预处理浮点数的指数Data1’_EXP,以得到第一预处理浮点数Data1’。
请参阅图5,在一个实施例中,第二格式化电路132包括第二移位寄存器电路1321、第二异或电路1322第二计数器1323、第五与电路1324、第二非逻辑电路1325、第六与电路1326、第二加法电路1327以及第二拼接电路1328。
第二移位寄存器电路1321与第二缓存电路112、第一与电路124连接,用于在时钟信号CLK和格式化启动信号ST_F的触发下,缓存并移位第二浮点数的整数Data2_INT。第二移位寄存器电路1321可以根据需要缓存的数据位数对应选择。
第二异或电路1322与第二移位寄存器电路1321连接,用于判断第二移位寄存器电路1321缓存的最高位数和次高位数是否相同,并输出第二异或运算结果。
第二计数器1323与第一与电路124连接,用于在时钟信号CLK和格式化启动信号ST_F的触发下,记录移位第二浮点数的整数Data2_INT时的第二移位个数,并输出第二计数值N2和第二计数运行信号RUN2。
第五与电路1324与第二异或电路1322、第二计数器1323连接,用于根据第二异或运算结果和第二计数运行信号RUN2输出第二计数使能信号ENC2。第二计数器1323根据第二计数使能信号ENC2计数或停止计数。
在第二移位寄存器电路1321缓存的最高位数和次高位数不同和第二计数运行信号RUN2为运行有效时,第二计数使能信号ENC2为计数无效且第二计数使能信号ENC2作为第二格式化完成信号F2输出,同时第二计数器1323停止计数。在第二移位寄存器电路1321缓存的最高位数和次高位数相同和第二计数运行信号RUN2运行有效时,第二计数使能信号ENC2为计数有效且第二计数器1323继续计数。
第二非逻辑电路1325与第五与电路1324连接,用于对第二计数使能信号ENC2进行非逻辑运算,输出第二非逻辑运算结果。
第六与电路1326与第二非逻辑电路1325、第二计数器1323以及第二移位寄存器电路1321连接,用于根据第二非逻辑运算结果和第二计数运行信号RUN2输出第二移位使能信号EN2至第二移位寄存器电路1321。第二移位寄存器电路1321还用于在第二移位使能信号EN2的控制下移位或停止移位。
在第二移位寄存器电路1321缓存的最高位数和次高位数相同且第二计数运行信号RUN2运行有效时,第二移位使能信号EN2为移位有效,在此信号下第二移位寄存器电路1321移位。在第二移位寄存器电路1321缓存的最高位数和次高位数不同和第二计数运行信号RUN2为运行无效时,第二移位使能信号EN2为移位无效,在此信号下第二移位寄存器电路1321停止移位。停止移位后的第二移位寄存器电路1321中的数据即为第二预处理浮点数的整数Data2’_INT。
第二加法电路1327与第二缓存电路112、第二计数器1323连接,用于对第二浮点数的指数Data2_EXP和第二计数值N2执行加法运算,以得到第二预处理浮点数的指数Data2’_EXP;
第二拼接电路1328与第二移位寄存器电路1321、第二加法电路1327连接,用于拼接第二预处理浮点数的整数Data2’_INT和第二预处理浮点数的指数Data2’_EXP,以得到第二预处理浮点数Data2’。
请参阅图6,在一个实施例中,数据运算模块200包括第一减法电路210、取绝对值电路220、第一选择电路230、第一右移位电路240、第二选择电路250、第三加法电路260以及第三选择电路270。
第一减法电路210与第三缓存电路113、第四缓存电路114连接,用于对第一预处理浮点数的指数Data1’_EXP和第二预处理浮点数的指数Data2’_EXP执行减法运算,并输出第一减法运算结果和第三选择信号CS3。其中,第三选择信号CS3根据第一减法运算结果的符号确定。如果第一预处理浮点数的指数Data1’_EXP大于或等于第二预处理浮点数的指数Data2’_EXP,则第一减法运算结果的符号为0。如果第一预处理浮点数的指数Data1’_EXP小于第二预处理浮点数的指数Data2’_EXP,则第一减法运算结果的符号为1。
取绝对值电路220与第一减法电路210连接,用于对第一减法运算结果取绝对值,以输出移位个数N3。
第一选择电路230与第三缓存电路113、第四缓存电路114、第一减法电路210连接,用于在第三选择信号CS3的控制下,选择输出第一预处理浮点数Data1’和第二预处理浮点数Data2’中指数较大的浮点数的整数。在第一减法运算结果的符号为0时,输出第一预处理浮点数的整数Data1’_INT。在第一减法运算结果的符号为1时,输出第二预处理浮点数的整数Data2’_INT。
第一右移位电路240与取绝对值电路220、第一选择电路230连接,用于根据时钟信号CLK和移位个数N3向右移位指数较大的浮点数的整数,并输出第一右移位结果以及计算完成信号F5。
第二选择电路250与第三缓存电路113、第四缓存电路114、第一减法电路210连接,用于在第三选择信号CS3的控制下,选择输出第一预处理浮点数Data1’和第二预处理浮点数Data2’中指数较小的浮点数的整数。在第一减法运算结果的符号为0时,输出第二预处理浮点数的整数Data2’_INT。在第一减法运算结果的符号为1时,输出第一预处理浮点数的整数Data1’_INT。
第三加法电路260与第一右移位电路240、第二选择电路250连接,用于对第一右移位结果和指数较小的浮点数的整数执行加法运算,以得到中间结果浮点数的整数DataM_INT。
第三选择电路270与第三缓存电路113、第四缓存电路114、第一减法电路210连接,用于在第三选择信号CS3的控制下,选择输出第一预处理浮点数Data1’和第二预处理浮点数Data2’中指数较小的浮点数的指数,以得到中间结果浮点数的指数DataM_EXP。在第一减法运算结果的符号为0时,输出第二预处理浮点数的指数Data2’_EXP作为中间结果浮点数的指数DataM_EXP。在第一减法运算结果的符号为1时,输出第一预处理浮点数的指数Data1’_EXP作为中间结果浮点数的指数DataM_EXP。中间结果浮点数DataM按照第二数据格式缓存,第二数据格式的整数位数等于第一数据格式的整数位数加一。
请参阅图7,在一个实施例中,数据后处理模块300包括:第三异或电路310、第二右移位电路320、第四选择电路330、第二减法电路340、第五选择电路350、第三拼接电路360、第六选择电路370、第七选择电路380以及第八选择电路390。
第三异或电路310与第三加法电路260连接,用于判断中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值是否相同,并输出第三异或运算结果。
第二右移位电路320与第三加法电路260连接,用于将中间结果浮点数的整数DataM_INT向右移一位,并输出第二右移位结果。
第四选择电路330与第三加法电路260、第三异或电路310、第二右移位电路320连接,用于根据第三异或运算结果,在中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值相同的情况下,输出中间结果浮点数的整数DataM_INT。在中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值不同的情况下,输出第二右移位结果为目标浮点数的整数DataT_INT。
第二减法电路340与第三选择电路270连接,用于将中间结果浮点数的指数DataM_EXP减一,并输出第二减法运算结果。
第五选择电路350与第三选择电路270、第三异或电路310、第二减法电路340连接,用于根据第三异或运算结果,在中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值相同的情况下,输出中间结果浮点数的指数DataM_EXP。在中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值不同的情况下,输出第二减法运算结果为目标浮点数的指数DataT_EXP。
第三拼接电路360与第四选择电路330、第五选择电路350连接,用于在中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值相同的情况下,拼接中间结果浮点数的整数DataM_INT和中间结果浮点数的指数DataM_EXP,以得到中间结果浮点数DataM。在中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值不同的情况下,拼接目标浮点数的整数DataT_INT和目标浮点数的指数DataT_EXP,以得到目标浮点数DataT。
第六选择电路370与第一缓存电路111、第二缓存电路112、判断模块120连接,用于在第一选择信号CS1和CS1’的控制下,在第一浮点数Data1和第二浮点数Data2中一者整数为非零数的情况下输出非零数对应的浮点数,在第一浮点数Data1和第二浮点数Data2中整数均为零的情况下输出第一浮点数Data1或第二浮点数Data2。
第七选择电路380与判断模块120、第六选择电路370、第三拼接电路360连接,用于在第二选择信号CS2的控制下,在第一浮点数Data1和第二浮点数Data2中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果DataF。在第一浮点数Data1和第二浮点数Data2中整数均为零的情况下输出第一浮点数Data1或第二浮点数Data2为运算结果DataF。在第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT均为非零数且中间结果浮点数DataM的整数位数不大于第一数据格式中的整数位数的情况下,输出中间结果浮点数DataM为运算结果DataF。在第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT均为非零数且中间结果浮点数DataM的整数位数大于第一数据格式中的整数位数的情况下,输出目标浮点数DataT为运算结果DataF。
第八选择电路390与第一或电路123、延迟电路125、第一右移位电路240连接,用于在第二选择信号CS2、延迟启动信号ST_D、计算完成信号F5的控制下,输出输出有效信号Q。
为了便于理解上述实施例中二进制浮点数加法运算电路的运行原理,下面通过具体的数据来举例说明。
假设第一浮点数的整数Data1_INT为234,第一浮点数的指数Data1_EXP为3,在将其缓存到第一缓存电路111中后,第一浮点数的整数Data1_INT表示为000000000000000011101010,第一浮点数的指数Data1_EXP表示为00000011。
第二浮点数的整数Data2_INT为123,第二浮点数的指数Data2_EXP为1,在将其缓存到第二缓存电路112中后,第二浮点数的整数Data2_INT表示为000000000000000001111011,第二浮点数的指数Data2_EXP表示为00000001。
经过第一比较电路121和第二比较电路122判断,第一浮点数的整数Data1_INT和第二浮点数的整数Data2_INT均不为零,第一或电路123输出第一或运算结果至第一与电路124,第一与电路124输出格式化启动信号ST_F。
第一移位寄存器电路1311缓存第一浮点数的整数Data1_INT。第一计数器1313开始计数并输出第一运行信号RUN1。经第一异或电路1312判断此时第一移位寄存器电路1311缓存的最高位和次高位相同,并输出第一异或运算结果。第三与电路1314输出第一计数使能信号ENC1为计数有效,第一计数器1313继续计数。第一非逻辑电路1315在第一计数使能信号ENC1为计数有效时输出对应的第一非逻辑运算结果。第四与电路1316根据该第一非逻辑运算结果输出第一移位使能信号EN1,此时的第一移位使能信号EN1为移位有效,第一移位寄存器电路1311左移一位,此时第一移位寄存器电路1311中的数据为000000000000000111010100。
在第一移位寄存器电路1311按照如上操作移位15次后,第一浮点数的整数Data1_INT变为011101010000000000000000。经第一异或电路1312判断此时第一移位寄存器电路1311缓存的最高位和次高位不同,第一异或电路1312输出第一异或运算结果。第三与电路1314输出第一计数使能信号ENC1为计数无效,且第一计数使能信号ENC1作为第一格式化完成信号F1输出。第一计数器1313停止计数,第一计数运行信号RUN1为运行无效,此时第一计数值N1为15,按照第一数据格式表示为00001111。第一非逻辑电路1315在第一计数使能信号ENC1为计数无效时输出对应的第一非逻辑运算结果。第四与电路1316根据该第一非逻辑运算结果输出第一移位使能信号EN1,此时的第一移位使能信号EN1为移位无效,第一移位寄存器电路1311停止移位。此时第一移位寄存器电路1311中的数据即为第一预处理浮点数的整数Data1’_INT,即011101010000000000000000。第一加法电路1317对第一浮点数的指数Data1_EXP和第一计数值N1执行加法运算,以得到第一预处理浮点数的指数Data1’_EXP,即18,按照第一数据格式表示为00010010。第一拼接电路1318拼接第一预处理浮点数的整数Data1’_INT和第一预处理浮点数的指数Data1’_EXP,以得到第一预处理浮点数Data1’。
第二移位寄存器电路1321缓存第二浮点数的整数Data2_INT。第二计数器1323开始计数并输出第二运行信号RUN2。经第二异或电路1322判断此时第二移位寄存器电路1321缓存的最高位和次高位相同,并输出第二异或运算结果。第五与电路1324输出第二计数使能信号ENC2为计数有效,第二计数器1323继续计数。第二非逻辑电路1325在第二计数使能信号ENC2为计数有效时输出对应的第二非逻辑运算结果。第六与电路1326根据该第二非逻辑运算结果输出第二移位使能信号EN2,此时的第二移位使能信号EN2为移位有效,第二移位寄存器电路1321左移一位,此时第二移位寄存器电路1321中的数据为000000000000000011110110。
在第二移位寄存器电路1321按照如上操作移位16次后,第二浮点数的整数Data2_INT变为011110110000000000000000。经第二异或电路1322判断此时第二移位寄存器电路1321缓存的最高位和次高位不同,第二异或电路1322输出第二异或运算结果。第五与电路1324输出第二计数使能信号ENC2为计数无效,且第二计数使能信号ENC2作为第二格式化完成信号F2输出。第二计数器1323停止计数,第二计数运行信号RUN2为运行无效,此时第二计数值N2为16,按照第一数据格式表示为00010000。第二非逻辑电路1325在第二计数使能信号ENC2为计数无效时输出对应的第二非逻辑运算结果。第六与电路1326根据该第二非逻辑运算结果输出第二移位使能信号EN2,此时的第二移位使能信号EN2为移位无效,第二移位寄存器电路1321停止移位。此时第二移位寄存器电路1321中的数据即为第二预处理浮点数的整数Data2’_INT,即011110110000000000000000。第二加法电路1327对第二浮点数的指数Data2_EXP和第二计数值N2执行加法运算,以得到第二预处理浮点数的指数Data2’_EXP,即17,按照第一数据格式表示为00010001。第二拼接电路1328拼接第二预处理浮点数的整数Data2’_INT和第二预处理浮点数的指数Data2’_EXP,以得到第二预处理浮点数Data2’。
第一减法电路210对第一预处理浮点数的指数Data1’_EXP和第二预处理浮点数的指数Data2’_EXP执行减法运算。第一减法运算结果为00000001,其符号位为0,即第一预处理浮点数的指数Data1’_EXP大于第二预处理浮点数的指数Data2’_EXP。
取绝对值电路220对第一减法运算结果取绝对值,此时的移位个数N3为1。第一选择电路230输出第一预处理浮点数的整数Data1’_INT。第一右移位电路240将第一预处理浮点数的整数Data1’_INT右移一位,得到第一右移位结果,即001110101000000000000000。第二选择电路250输出第二预处理浮点数的整数Data2’_INT,即011110110000000000000000。第三加法电路260对第一右移位结果和第二预处理浮点数的整数Data2’_INT执行加法运算,以得到中间结果浮点数的整数DataM_INT,即0101101011000000000000000。第三选择电路270输出第二预处理浮点数的指数Data2’_EXP作为中间结果浮点数的指数DataM_EXP,即00010001。
经第三异或电路310判断,中间结果浮点数DataM对应位于第二数据格式的整数位数中最高位和次高位的数值不相同。第二右移位电路320将中间结果浮点数的整数DataM_INT向右移一位,并输出第二右移位结果,即010110101100000000000000。第四选择电路330输出第二右移位结果作为目标浮点数的整数DataT_INT,即010110101100000000000000。第二减法电路340将中间结果浮点数的指数DataM_EXP减一,并输出第二减法运算结果,即00010000。
第五选择电路350输出第二减法运算结果为目标浮点数的指数DataT_EXP,即00010000。第三拼接电路360拼接目标浮点数的整数DataT_INT和目标浮点数的指数DataT_EXP,以得到目标浮点数DataT。第七选择电路380输出目标浮点数DataT为运算结果DataF,运算结果的整数DataF_INT为010110101100000000000000,运算结果的指数DataF_EXP为00010000。运算结果DataF的实际值为90.75。
本公开实施例还提供了一种计算装置,该计算装置包括如上一些实施例中的二进制浮点数加法运算电路。
示例的,计算装置还可以包括输入装置、输出装置以及必要的存储器等。其中,输入装置可以包括诸如鼠标、键盘、触控屏、通信网络连接器等,用于输入二进制浮点数。输出装置可以包括诸如显示器、打印机、以及通信网络及其所连接的远程输出设备等,用于输出上述一些实施例中的运算结果。存储器用于存储上述输入装置输入的数据,以及二进制浮点数加法运算电路运行过程中产生的数据。存储器可以包括易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
计算装置包括如上一些实施例中的二进制浮点数加法运算电路,用于实施如上一些实施例中的二进制浮点数加法运算方法。前述二进制浮点数加法运算电路所能实现的技术效果,该计算装置也均能实现,此处不再详述。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种二进制浮点数加法运算电路,其特征在于,包括:数据预处理模块、数据运算模块和数据后处理模块;
所述数据预处理模块用于获取第一浮点数和第二浮点数,并在所述第一浮点数的整数和所述第二浮点数的整数均为非零数的情况下,按照第一数据格式分别向左移位所述第一浮点数和所述第二浮点数,使所述第一浮点数中整数的符号位和所述第二浮点数中整数的符号位均对应为所述第一数据格式中整数位数的最高位,并根据所述第一浮点数和所述第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数;
所述数据运算模块用于对所述第一预处理浮点数和所述第二预处理浮点数执行加法运算,以得到中间结果浮点数;
所述数据后处理模块用于:在所述第一浮点数和所述第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果;在所述第一浮点数和所述第二浮点数中整数均为零的情况下输出零为运算结果;在所述第一浮点数的整数和所述第二浮点数的整数均为非零数的情况下,判断所述中间结果浮点数的整数位数是否大于所述第一数据格式中的整数位数;若否,则输出所述中间结果浮点数为运算结果;若是,则将所述中间结果浮点数的整数向右移一位,并将所述中间结果浮点数的指数减一,得到目标浮点数,并输出所述目标浮点数为运算结果。
2.根据权利要求1所述的二进制浮点数加法运算电路,其特征在于,所述数据预处理模块包括:
存储电路,用于获取并缓存所述第一浮点数、所述第二浮点数、所述第一预处理浮点数和所述第二预处理浮点数;
判断模块,用于判断所述第一浮点数的整数和所述第二浮点数的整数是否均为非零数,在所述第一浮点数和所述第二浮点数中任一者整数为零的情况下输出第一选择信号至所述数据后处理模块,在所述第一浮点数的整数和所述第二浮点数的整数包含零的情况下输出第二选择信号至所述数据后处理模块,并在所述第一浮点数的整数和所述第二浮点数的整数均为非零数的情况下输出格式化启动信号;
数据格式化单元,用于在所述格式化启动信号的触发下,按照所述第一数据格式分别向左移位所述第一浮点数和所述第二浮点数,使所述第一浮点数中整数的符号位和所述第二浮点数中整数的符号位均对应为所述第一数据格式中整数位数的最高位,并根据所述第一浮点数和所述第二浮点数的整数移位个数调整对应的指数,以得到所述第一预处理浮点数和所述第二预处理浮点数。
3.根据权利要求2所述的二进制浮点数加法运算电路,其特征在于,所述判断模块包括:
第一比较电路,与所述存储电路连接,用于将所述第一浮点数的整数与零进行比较,并输出第一比较结果;
第二比较电路,与所述存储电路连接,用于将所述第二浮点数的整数与零进行比较,并输出第二比较结果;
第一或电路,与所述第一比较电路和所述第二比较电路连接,用于根据所述第一比较结果和所述第二比较结果输出第一或运算结果;
第一与电路,与所述第一或电路连接,用于根据所述第一或运算结果输出所述格式化启动信号;
其中,所述第一选择信号根据所述第一比较结果确定,所述第一选择信号包括:所述第一浮点数的整数为零的信号;或,所述第一选择信号根据所述第二比较结果确定,所述第一选择信号包括:所述第二浮点数的整数为零的信号;
所述第二选择信号根据所述第一或运算结果确定,所述第二选择信号包括:所述第一浮点数的整数和所述第二浮点数的整数中至少一个整数为零的信号。
4.根据权利要求3所述的二进制浮点数加法运算电路,其特征在于,所述数据格式化单元包括:
第一格式化电路,与所述存储电路、所述第一与电路连接,用于在所述格式化启动信号的触发下,按照所述第一数据格式向左移位所述第一浮点数,使所述第一浮点数中整数的符号位对应为所述第一数据格式中整数位数的最高位,以得到所述第一预处理浮点数,并输出第一格式化完成信号;所述存储电路用于根据所述第一格式化完成信号存储所述第一预处理浮点数;
第二格式化电路,与所述存储电路、所述第一与电路连接,用于在所述格式化启动信号的触发下,按照所述第一数据格式向左移位所述第二浮点数,使所述第二浮点数中整数的符号位对应为所述第一数据格式中整数位数的最高位,以得到所述第二预处理浮点数,并输出第二格式化完成信号;所述存储电路用于根据所述第二格式化完成信号存储所述第二预处理浮点数。
5.一种计算装置,其特征在于,包括:如权利要求1~4中任一项所述的二进制浮点数加法运算电路。
6.一种二进制浮点数加法运算电路控制方法,其特征在于,所述二进制浮点数加法运算电路包括数据预处理模块、数据运算模块和数据后处理模块;所述控制方法包括:
控制所述数据预处理模块获取第一浮点数和第二浮点数,所述第一浮点数和所述第二浮点数的基数为2,判断所述第一浮点数的整数和所述第二浮点数的整数是否均为非零数;
若否,则控制所述数据后处理模块在所述第一浮点数和所述第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果,或在所述第一浮点数和所述第二浮点数中整数均为零的情况下输出零为运算结果;
若是,则控制所述数据预处理模块按照第一数据格式,分别向左移位所述第一浮点数和所述第二浮点数,使所述第一浮点数中整数的符号位和所述第二浮点数中整数的符号位均对应为所述第一数据格式中整数位数的最高位,并根据所述第一浮点数和所述第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数;
控制所述数据运算模块对所述第一预处理浮点数和所述第二预处理浮点数执行加法运算,以得到中间结果浮点数;
控制所述数据后处理模块判断所述中间结果浮点数的整数位数是否大于所述第一数据格式中的整数位数;
若否,则控制所述数据后处理模块输出所述中间结果浮点数为运算结果;
若是,则控制所述数据后处理模块将所述中间结果浮点数的整数向右移一位,并将所述中间结果浮点数的指数减一,得到目标浮点数,并输出所述目标浮点数为运算结果。
7.根据权利要求6所述的二进制浮点数加法运算电路控制方法,其特征在于,
所述控制所述数据预处理模块按照第一数据格式,分别向左移位所述第一浮点数和所述第二浮点数,使所述第一浮点数中整数的符号位和所述第二浮点数中整数的符号位均对应为所述第一数据格式中整数位数的最高位,以得到第一预处理浮点数和第二预处理浮点数,包括:
控制所述数据预处理模块在第一移位寄存器电路中按照所述第一数据格式缓存所述第一浮点数的整数,并判断所述第一移位寄存器电路缓存的最高位数和次高位数是否相同;若是,则所述第一移位寄存器电路移位所述第一浮点数的整数,第一计数器记录所述第一浮点数的整数移位的第一移位个数,直至所述第一移位寄存器电路缓存的最高位数和次高位数不同;若否,则所述第一移位寄存器电路缓存的整数为所述第一预处理浮点数的整数,所述第一浮点数的指数与所述第一移位个数之和为所述第一预处理浮点数的指数;
控制所述数据预处理模块在第二移位寄存器电路中按照所述第一数据格式缓存所述第二浮点数的整数,并判断所述第二移位寄存器电路缓存的最高位数和次高位数是否相同;若是,则所述第二移位寄存器电路移位所述第二浮点数的整数,第二计数器记录所述第二浮点数的整数移位的第二移位个数,直至所述第二移位寄存器电路缓存的最高位数和次高位数不同;若否,则所述第二移位寄存器电路缓存的浮点数的整数为所述第二预处理浮点数的整数,所述第二浮点数的指数与所述第二移位个数之和为所述第二预处理浮点数的指数。
8.根据权利要求6所述的二进制浮点数加法运算电路控制方法,其特征在于,
所述控制所述数据运算模块对所述第一预处理浮点数和所述第二预处理浮点数执行加法运算,以得到中间结果浮点数,包括:
控制所述数据运算模块判断所述第一预处理浮点数的指数和所述第二预处理浮点数的指数是否相同;
若是,则对所述第一预处理浮点数的整数和所述第二预处理浮点数的整数执行加法运算,以得到所述中间结果浮点数的整数;所述第一预处理浮点数的指数或所述第二预处理浮点数的指数对应为所述中间结果浮点数的指数;
若否,则获取所述第一预处理浮点数的指数和所述第二预处理浮点数的指数差值的绝对值;
控制所述数据运算模块在所述第一预处理浮点数的指数大于或等于所述第二预处理浮点数的指数的情况下,根据所述差值的绝对值向右移位所述第一预处理浮点数的整数,并对所述第二预处理浮点数的整数和移位后的所述第一预处理浮点数的整数执行加法运算,以得到所述中间结果浮点数的整数;所述第二预处理浮点数的指数对应为所述中间结果浮点数的指数;
控制所述数据运算模块在所述第一预处理浮点数的指数小于所述第二预处理浮点数的指数的情况下,根据所述差值的绝对值向右移位所述第二预处理浮点数的整数,并对所述第一预处理浮点数的整数和移位后的所述第二预处理浮点数的整数执行加法运算,以得到所述中间结果浮点数的整数;所述第一预处理浮点数的指数对应为所述中间结果浮点数的指数。
9.根据权利要求6所述的二进制浮点数加法运算电路控制方法,其特征在于,
所述中间结果浮点数按照第二数据格式缓存;所述第二数据格式的整数位数等于所述第一数据格式的整数位数加一;
所述判断所述中间结果浮点数的整数位数是否大于所述第一数据格式中的整数位数,包括:
判断所述中间结果浮点数对应位于所述第二数据格式的整数位数中最高位和次高位的数值是否相同;
若是,则输出所述中间结果浮点数为运算结果;
若否,则将所述中间结果浮点数的整数向右移一位,并将所述中间结果浮点数的指数减一,得到所述目标浮点数,并输出所述目标浮点数为运算结果。
10.根据权利要求6~9中任一项所述的二进制浮点数加法运算电路控制方法,其特征在于,所述第一浮点数和所述第二浮点数的实际值为:N/2X;其中,N为对应浮点数的整数,所述对应浮点数的整数包括符号;X为对应浮点数的指数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110949682.0A CN113672198B (zh) | 2021-08-18 | 2021-08-18 | 二进制浮点数加法运算电路控制方法、电路及计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110949682.0A CN113672198B (zh) | 2021-08-18 | 2021-08-18 | 二进制浮点数加法运算电路控制方法、电路及计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672198A CN113672198A (zh) | 2021-11-19 |
CN113672198B true CN113672198B (zh) | 2024-01-26 |
Family
ID=78543672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110949682.0A Active CN113672198B (zh) | 2021-08-18 | 2021-08-18 | 二进制浮点数加法运算电路控制方法、电路及计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672198B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968175B (zh) * | 2022-06-06 | 2023-03-07 | 湖南毂梁微电子有限公司 | 一种用于智能计算加速的可配置移位加法融合单元 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151612A (en) * | 1997-05-09 | 2000-11-21 | Hyundai Electronics Industries Co., Ltd. | Apparatus and method for converting floating point number into integer in floating point unit |
CN102855117A (zh) * | 2011-06-29 | 2013-01-02 | Arm有限公司 | 浮点加法器 |
US9400635B1 (en) * | 2013-01-14 | 2016-07-26 | Altera Corporation | Methods and apparatus for performing dynamic data alignment for floating-point operations |
CN106997284A (zh) * | 2017-03-17 | 2017-08-01 | 龙芯中科技术有限公司 | 实现浮点运算操作的方法和装置 |
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
CN112463113A (zh) * | 2020-12-02 | 2021-03-09 | 中国电子科技集团公司第五十八研究所 | 浮点加法单元 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2412986B (en) * | 2001-03-14 | 2005-11-30 | Micron Technology Inc | Arithmetic pipeline |
US11119729B2 (en) * | 2019-03-28 | 2021-09-14 | Arm Limited | Alignment shifting and incrementing to determine a rounded result of adding first and second floating-point operands |
-
2021
- 2021-08-18 CN CN202110949682.0A patent/CN113672198B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151612A (en) * | 1997-05-09 | 2000-11-21 | Hyundai Electronics Industries Co., Ltd. | Apparatus and method for converting floating point number into integer in floating point unit |
CN102855117A (zh) * | 2011-06-29 | 2013-01-02 | Arm有限公司 | 浮点加法器 |
US9400635B1 (en) * | 2013-01-14 | 2016-07-26 | Altera Corporation | Methods and apparatus for performing dynamic data alignment for floating-point operations |
CN106997284A (zh) * | 2017-03-17 | 2017-08-01 | 龙芯中科技术有限公司 | 实现浮点运算操作的方法和装置 |
CN112230882A (zh) * | 2020-10-28 | 2021-01-15 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
CN112463113A (zh) * | 2020-12-02 | 2021-03-09 | 中国电子科技集团公司第五十八研究所 | 浮点加法单元 |
Non-Patent Citations (1)
Title |
---|
基于VHDL的浮点算法研究;夏阳;邹莹;;计算机仿真(第04期);第87-90页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113672198A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6906641B2 (ja) | 音声検索・認識方法及び装置 | |
US8296274B2 (en) | Considering multiple lookups in bloom filter decision making | |
CN113672198B (zh) | 二进制浮点数加法运算电路控制方法、电路及计算装置 | |
CN111949798B (zh) | 图谱的构建方法、装置、计算机设备和存储介质 | |
CN108139912B (zh) | 在浮点运算期间计算和保留误差边界的装置和方法 | |
CN114118384A (zh) | 神经网络模型的量化方法、可读介质和电子设备 | |
US8606836B2 (en) | Apparatus and method for frequency division and filtering | |
CN105302519B (zh) | 用于执行浮点平方根运算的装置和方法 | |
WO2018194952A1 (en) | Mixed signal computer architecture | |
CN114139693A (zh) | 神经网络模型的数据处理方法、介质和电子设备 | |
US8209366B2 (en) | Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations | |
CN106997284B (zh) | 实现浮点运算操作的方法和装置 | |
GB1579100A (en) | Digital arithmetic method and means | |
CN113805974A (zh) | 基于应用程序的数据类型选择 | |
CN113703717B (zh) | 二进制浮点数乘法运算电路及其控制方法、计算装置 | |
US10133552B2 (en) | Data storage method, ternary inner product operation circuit, semiconductor device including the same, and ternary inner product arithmetic processing program | |
KR20190039159A (ko) | 분기 예측을 위한 분기 이력을 결정하기 위한 방법 및 디바이스 | |
US11532150B1 (en) | Method for determining a histogram of variable sample rate waveforms | |
US10564895B2 (en) | I/O performance enhancement of solid-state data storage devices | |
CN106528050B (zh) | 尾随或前导数字预测器 | |
US20210082082A1 (en) | Data processing method and processing circuit | |
US10459689B2 (en) | Calculation of a number of iterations | |
US9032009B2 (en) | Multiplier circuit | |
CN116909946B (zh) | 一种访存方法、装置、电子设备及可读存储介质 | |
CN100416490C (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |