CN117075841B - Srt运算电路 - Google Patents
Srt运算电路 Download PDFInfo
- Publication number
- CN117075841B CN117075841B CN202310974128.7A CN202310974128A CN117075841B CN 117075841 B CN117075841 B CN 117075841B CN 202310974128 A CN202310974128 A CN 202310974128A CN 117075841 B CN117075841 B CN 117075841B
- Authority
- CN
- China
- Prior art keywords
- module
- quotient
- calculation
- operand
- circuit
- 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
- 238000004364 calculation method Methods 0.000 claims abstract description 129
- 238000012545 processing Methods 0.000 claims abstract description 37
- 238000004422 calculation algorithm Methods 0.000 claims description 50
- 238000009825 accumulation Methods 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 18
- 238000010009 beating Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 14
- 101100275685 Bacillus thuringiensis cry2Ad gene Proteins 0.000 description 4
- 101100311460 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sum2 gene Proteins 0.000 description 4
- 101100497223 Bacillus thuringiensis cry1Ag gene Proteins 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000013215 result calculation Methods 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/4915—Multiplying; Dividing
- G06F7/4917—Dividing
-
- 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/4915—Multiplying; Dividing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (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)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请提供一种SRT运算电路,通过数据输入模块处理并输出第一操作数和第二操作数,使得该两个操作数可以用于浮点数的除法,或者其中一个操作数用于浮点数的开方,通过时序控制模块进行输入数据的打拍输出,通过数据处理模块对打拍后的输出数据进行除法计算或开方计算,最终通过数据输出模块实现输出。通过时序控制模块的设计,可实现对应信号的打拍输出,使得计算流程各部分的工作周期符合需求,保证电路迭代周期不变的情况下提升电路整体的工作频率,提升了电路的通用性和工作性能。
Description
技术领域
本申请涉及电子技术,尤其涉及一种SRT运算电路。
背景技术
SRT算法可用于数据的除法及开方运算,且对于浮点数据进行处理具有准确、高效的特点,但需要设计对应的电路以实现计算过程中的各个数据处理步骤。当前的SRT运算电路,需要分别设计电路结构处理浮点数的除法和方根运算,导致电路通用性不足,且由于电路工作频率不足,导致电路性能不佳。
因此,需要一种可实现除法和开方运算功能的SRT运算电路,且需要提升电路的工作频率。
发明内容
本申请提供一种SRT运算电路,用以解决SRT运算电路通用性不足、工作频率不高的问题。
第一方面,本申请提供一种SRT运算电路,所述电路包括:
数据输入模块、时序控制模块、数据处理模块和数据输出模块;
其中,所述数据输入模块与所述时序控制模块的第一端连接,所述时序控制模块的第二端与所述数据处理模块的第一端连接,所述数据处理模块的第二端与所述数据输出模块的第一端连接;
其中,所述数据输入模块用于处理并输出第一操作数和第二操作数,所述时序控制模块用于根据电路中各模块的工作时序,控制输入所述时序控制模块的数据打拍输出,所述数据处理模块用于根据SRT算法,在预设的迭代次数内对所述时序控制模块打拍输出的数据进行除法计算或开方计算,所述数据输出模块用于输出所述数据处理模块计算完成后的目标结果。
作为一种可选的实施方式,所述数据处理模块包括查询模块,所述查询模块的第一端与所述数据输入模块连接;
其中,所述查询模块用于根据打拍后的所述第二操作数,通过选择函数确定当前迭代轮次对应的第三操作数,所述第三操作数用于确定当前轮次对应的商值结果。
作为一种可选的实施方式,所述数据处理模块包括商值计算模块,所述商值计算模块的第一端连接所述查询模块的第二端,所述商值计算模块的第二端连接所述时序控制模块的第二端;
其中,所述商值计算模块用于根据所述第三操作数和所述第一操作数,确定当前迭代轮次对应的商值结果。
作为一种可选的实施方式,所述数据处理模块包括累加模块,所述累加模块的第一端连接所述商值计算模块的第三端,所述累加模块的第二端连接所述数据输出模块的第一端;
其中,所述累加模块用于根据所述商值计算模块各次迭代输出的商值结果,确定当次迭代对应的总目标商值,若迭代次数达到预设数值,则将所述总目标商值作为所述目标结果传输至所述数据输出模块。
作为一种可选的实施方式,所述数据处理模块包括余数计算模块,所述余数计算模块的第一端连接所述时序控制模块的第二端,所述余数计算模块的第二端连接所述商值计算模块的第四端,所述余数计算模块的第三端连接所述时序控制模块的第一端;
其中,所述余数计算模块用于计算当前迭代轮次的余数结果,并根据所述余数结果,更新所述第一操作数。
作为一种可选的实施方式,所述余数计算模块包括乘法计算模块,所述乘法计算模块的第一端连接所述时序控制模块的第二端,所述乘法计算模块的第二端连接所述商值计算模块的第四端;
其中,所述乘法计算模块用于根据所述当前轮次对应的商值结果以及所述第二操作数,确定乘积结果,所述乘积结果用于确定余数结果,以及用于确定开方计算中的附加项。
作为一种可选的实施方式,所述余数计算模块还包括加法计算模块;
所述加法计算模块的第一端连接所述乘法计算模块的第三端,所述加法计算模块的第二端连接所述时序控制模块的第一端;
其中,所述加法计算模块用于根据所述乘积结果,确定所述余数结果,并更新所述第一操作数。
作为一种可选的实施方式,所述累加模块的第三端连接所述查询模块的第三端,所述累加模块的第四端连接所述乘法计算模块的第四端;
所述累加模块还用于根据所述商值计算模块各次迭代输出的商值结果,确定开方操作数,并根据所述开方操作数,对所述第二操作数进行更新。
作为一种可选的实施方式,所述电路还包括状态机模块,所述状态机模块的第一端连接所述数据输入模块,所述状态机模块的第二端连接所述数据处理模块的第三端;
其中,所述状态机模块用于确定迭代次数,并监控迭代过程的数据状态。
作为一种可选的实施方式,所述时序控制模块包括:锁存器、触发器或寄存器。
本申请提供的SRT运算电路,通过数据输入模块处理并输出第一操作数和第二操作数,使得该两个操作数可以用于浮点数的除法,或者其中一个操作数用于浮点数的开方,通过时序控制模块进行输入数据的打拍输出,通过数据处理模块对打拍后的输出数据进行除法计算或开方计算,最终通过数据输出模块实现输出。通过时序控制模块的设计,可实现对应信号的打拍输出,使得计算流程各部分的工作周期符合需求,保证电路迭代周期不变的情况下提升电路整体的工作频率,提升了电路的通用性和工作性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为两个浮点数的尾数部分进行除法运算的流程示意图;
图2为目标浮点数的尾数部分进行开方运算的流程示意图;
图3是本发明实施例公开的一种SRT运算电路的结构示意图;
图4是本发明实施例公开的另一种SRT运算电路的结构示意图;
图5是本发明实施例公开的又一种SRT运算电路的结构示意图;
图6是本发明实施例公开的又一种SRT运算电路的结构示意图;
图7是本发明实施例公开的又一种SRT运算电路的结构示意图;
图8是本发明实施例公开的又一种SRT运算电路的结构示意图;
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
浮点数据的除法和开方算法主要分为两大类:函数迭代算法和数字迭代算法。函数迭代算法的基本运算操作是乘法运算,函数迭代算法优点是收敛速度较快,可以较快地得到计算结果。但是,函数迭代算法不能得到满足IEEE754浮点标准的精度要求,且基于乘法运算的硬件实现在面积和功耗上的开销比较大。
数字迭代算法的基本运算操作是加法或减法,每次迭代运算可以得到相同位数的商值,直到可以得到满足精度的商值位数,且由于迭代运算的结果呈线性收敛,硬件实现简单,既节省面积,又降低功耗。并且数字迭代算法可以满足IEEE754的浮点标准和浮点运算精度。
在实际应用中,数字迭代算法中的SRT算法应用最为广泛。SRT算法可以用于数据的除法及开方运算。且满足IEEE754的浮点标准和浮点运算精度的要求,是大多数微处理器中运算电路设计常采用的算法。
然而现有的运算电路中,只能实现单一功能的运算。例如:需要分别设计电路结构处理浮点数的除法和方根运算,导致电路通用性不足,且由于电路工作频率不足,导致电路性能不佳。
因此,需要一种可实现除法和开方运算功能的SRT运算电路,且需要提升电路的工作频率。
为了便于描述本申请实施例提供的方案,均用符合IEEE754标准的浮点数格式进行表示数据。
SRT算法根据基数值的不同,分为SRT4、SRT8以及SRT16算法。浮点除法的延迟时间主要与SRT算法的基数取值有关,即基数值越高,迭代次数越少,迭代运算的迭代时间越短,但是,所带来的面积和功耗越大。
在实际的处理器开发中,除法器可以应用SRT4算法以降低功耗和面积。本申请基于SRT4算法实现浮点数的除法和开方电路,通过打拍的设计实现了电路工作逻辑的合理划分,在低基算法的基础上达到了3.5GHz的高工作频率,且可以基于同一个电路实现除法和开方,无需分别开发相应电路,提升了电路的通用性和工作性能。
下面详细介绍SRT4算法进行浮点数据的除法运算和方根运算。
下面描述浮点数据的常用格式。
浮点数据格式有分为半精度(FP16),单精度(FP32)和双精度(FP64)。其中,表1为半精度(FP16)浮点数表示。表2为单精度(FP32)浮点数表示。表3为双精度(FP64)浮点数表示。
表1半精度(FP16)浮点数表示:
S | e | f |
1bit | 5bit | 10bit |
表2单精度(FP32)浮点数表示:
s | e | f |
1bit | 8bit | 23bit |
表3双精度(FP64)浮点数表示:
S | e | f |
1bit | 11bit | 52bit |
其中,s代表符号位,代表浮点数的正负;e代表偏移后的指数位;f代表尾数,可以理解为浮点数小数点后面的尾数,一般为了方便计算而隐含个位上的1。
下面描述SRT4算法进行浮点数据的除法运算。
除法的基本定义如下:
其中,x是被除数,d是除数,q是商,rem是余数,sign代表数的符号,ulp代表数的精度。
如果ulp=1,商q则是整数;如果ulp=r-n,n是商的位数,r是所有输入操作数的基,此时商q为小数。
总体上来讲,浮点数A除以浮点数B过程包指数部分相减和尾数部分进行相除。
具体根据公式(2)进行指数部分相减运算:
exp_q=exp_x-exp_d+bias (2)
其中,商的指数位带偏移位bias,此处需要注意的是,若此时exp_q出现了溢出,则停止进一步的尾数的除法计算。
利用SRT4除法算法,对两个浮点数的尾数部分进行除法运算。图1为两个浮点数的尾数部分进行除法运算的流程示意图。如图1所示,具体包括如下步骤:
S101、输入两个浮点数的尾数。
S102、设置迭代次数为迭代次数的设置值,例如:设置值k=14。该设置值与基数及对应的精度需求有关,通常为默认的数值,也可以根据实际需求另行设置。
S103、将被除数的尾数和除数的尾数进行计算得到的余数w[j]进行移位,得到移位后的部分余数rw[j]。
其中,余数的初始化值为被除数。
S104、根据移位后的余数rw[j]和除数d,通过商选择函数选择本次的商位qj+1。
其中,每次迭代过程中,商位qj+1的选择由一个含有移位后的部分余数rw[j]和除数d的函数来确定,称为商选择函数。商选择函数如公式(3)所示:
qj+1=SEL(rw[j],d) (3)
从以上式子可以看出,在每次迭代中,只要根据当前的移位后的部分余数rw[j]和除数d,查询公式(3)选出对应的商位qj+1。
在商选择函数中,对于基为r的SRT算法,用到的商数字集称为冗余数字集,设a为冗余数字集中最大的整数,那么冗余数字集可表示为公式(4)所示:
qj+1∈{-a,-a+1,…,-1,0,1,...,a-1,a} (4)
其中,a满足公式(5):
对于冗余数字集来说,其冗余度的定义为公式(6):
当时,ρ取最小值,称为最小冗余度;当a=r-1时,ρ取1,称为最大冗余度。
SRT4算法用到的基r为4,对于基r有两种典型的商数字集,分别为{-2,-1,0,1,2}和{-3,-2,-1,0,1,2,3},商数字集中最大的数分别为a=2和a=3。用更大的a可以减小商选择函数的延时和复杂度,但是选择更小的a可以简化除数的倍数的生成,即不需要生成3d和-3d的运算,因此综合考虑后,选择本次用到的SRT4算法的商数字集为{-2,-1,0,1,2},冗余度ρ为
在本实施例中以单精度(FP32)浮点数的除法为例说明尾数部分的除法运算。被除数,除数和商的尾数位数均为23位,加上隐含的个位,即为24位。
S105、在迭代次数小于迭代次数的设置值时,计算下一次循环的部分余数w[j+1],更新迭代次数并返回S104。
由于SRT除法与手算除法类似,通过部分被除数与除数进行选商,然后用被除数减去商和除数的积,最后在当前的基下左移j位,r为这个算法的基,因此定义余数w为公式(7):
w[j]=rj(x-dq[j]) (7)
下一次循环的部分余数根据如下计算:
w[j+1]=rj+1(x-dq[j+1])=rj+1(x-dq[j]-dqj+1r-(j+1))=r·rj(x-dq[j])-dqj+1=rw[j]-dqj+1
即迭代方程为
w[j+1]=rw[j]-dqj+1 (8)
其中,w[0]=x,且w[j]必须满足公式(9)
-d<w[j]<d (9)
可以根据迭代方程(8)求出下一循环的部分余数w[j+1]。
S106、在迭代次数等于迭代次数的设置值时,根据k次迭代获得的商位,计算总商位。
经过k次迭代,求出了k次迭代的部分余数w[j],同时也求出了k次迭代的商位qj。
q[k]为以r为基的k位数字,k次及其以前迭代产生的商值进行叠加之后的结果,qi为每次迭代选商确定的1位数字,每次迭代qi从高位到低位产生,因此这里r-i的指数部分为负数。
S107、根据基4的权重关系,将k次迭代后的总商位转换为二进制的值。
S108、根据计算得到的商的尾数部分和指数部分exp_q,即可得到浮点数格式表示的商。
下面介绍SRT4算法进行浮点数据的开方运算。
开方的基本定义如下:
其中,x为操作数,S为结果,ε为误差。
该算法是对于均为纯小数的x和S实现的。对于浮点数形式并且以及规格化的操作数,有必要对操作数进行缩放使其指数变为偶数,以便对指数进行开方计算,同时使尾数变为纯小数即0.xxx的形式。
对一个浮点数进行开方运算包括对不带偏移位的指数部分的除2操作和对尾数部分的开方运算操作。
对不带偏移位的指数部分的除2操作具体包括:首先判断不带偏移位的指数是否为偶数,若不带偏移位的指数为偶数,不带偏移位的指数部分加2,同时将尾数部分右移两位,然后对指数位进行右移1位,也就是即除以2;若不带偏移位的指数为奇数,则不带偏移位的指数部分加1,使不带偏移位的指数变为偶数,同时将尾数右移1位,然后对指数位进行右移1位,即除以2。
具体来说,对于一个规格化数而言,尾数部分的大小为[1,2),若指数部分为偶数,指数部分加2,同时将尾数部分右移两位,也就是除以4,使尾部部分变为纯小数,此时尾数部分的大小为[1/4,1/2);若指数部分为奇数,则指数部分加1,使指数部分变为偶数,同时将尾数右移1位,也就是除以2,使尾数部分变为纯小数,此时尾数部分的大小为[1/2,1)。也就是即预处理后的操作数x尾数的取值范围为[1/4,1),指数部分为偶数。因此,结果S的取值范围为[1/2,1)。
计算得到开方的指数位后,利用SRT4开方算法,可对浮点数的尾数部分进行开方运算。图2为目标浮点数的尾数部分进行开方运算的流程示意图。如图2所示,具体包括如下步骤:
S201、输入目标浮点数的尾数。
S202、设置迭代次数为迭代次数的设置值,例如:设置值m=13。
S203、得到的余数w[j]进行移位,得到移位后的部分余数rw[j]。
S204、根据部分余数rw[j]和部分开方结果2S[j],通过开方选择函数选择本次的开方位sj+1。
在SRT算法中,每次迭代过程中,开方位sj+1的选择由一个含有移位后的余数rw[j]和部分开方结果2S[j]的函数来确定,称为开方的选择函数:
sj+1=SEL(rw[j],2S[j]) (12)
从以上式子可以看出,在每次迭代中,我们只要根据当前的移位部分余数rw[j]和部分开方结果2S[j]的值,通过式(12)选出对应的开方位sj+1。
为了保证和SRT4除法算法的通用性,这里SRT开方算法同样选择以4为基,同时冗余集选取{-2,-1,0,1,2},冗余度为2/3。
本实施例以单精度(FP32)浮点数的除法为例说明尾数部分的开方运算。
S205、判断迭代次数,在迭代次数小于迭代次数的设置值时,计算下一次循环的部分余数w[j+1],更新迭代次数并返回S204。
定义一个部分余数
w[j]=rj(x-S[j]2) (13)
其中,基r=4。由式(15)得该部分余数的大小范围为
S[j]为第j次迭代后得到的部分开方结果,也就是第j次及其以前迭代产生的开方结果值进行叠加之后的结果,S[j]为以r为基的j位数字,si为每次迭代产生的1位结果数字,每次迭代si从高位到低位产生,因此这里r-i的指数部分为负数。同时,由于位si在根数字集{-2,-1,0,1,2}中的最大取值为2,即就算每一位均取2,最后的结果值s也不会大于2/3,s0不是迭代产生的,第0位s0的存在是为了使最后的结果值s≥2/3。
根据公式(13)和公式(14)可以确定公式(16)。
w[j+1]=rw[j]-2S[j]sj+1-sj+1 24-(j+1) (16)
S206、根据m次迭代获得的开方位,计算总开方位。
经过m次迭代,我们就求出了m次迭代的部分余数w[j],同时也求出了m次的开方位sj。最终的结果值为:
对于以4为基,m位的精度,最终的结果值必须满足:
定义一个误差函数ε[j]:
其中,ε[j]表示第j次迭代时的误差。为了满足公式(18)正确,ε[j]也必须有界。
公式(17)可以变换为公式(20)
由公式(18)至公式(20)得
因为选择的冗余集为{-2,-1,0,1,2},因此si最大的值为2,最小的值为-2,得到公式(22):
将式(19)代入(22)中,同时做平方运算消去对x的开方运算,得到公式(23)
两边同时减去S[j]2,得公式(24)
公式(24)表示计算得到的S[j]要使得x-S[j]2是有界的。
S207、根据基4的权重关系,将m次迭代后的总开方位转换为二进制的值。
S208、根据计算得到的开方的尾数部分和指数部分即可得到浮点数格式表示的商。
公式(16)为开方算法的递归方程
w[j+1]=rw[j]-2S[j]sj+1-sj+1 24-(j+1) (16)
公式(4)除法算法的递归方程
w[j+1]=rw[j]-dqj+1 (4)
将公式(16)和公式(4)进行比较可发现,将2S[j]当作除数d时,公式(16)仅比公式(4)多一项-sj+1 24-(j+1),因此SRT4除法算法的思想在某些方面和开方算法通用。
应当理解的是,以下具体实施方式中所述的商值结果,在电路进行开方运算的应用环境下,可以相应理解为开根位结果,由于前述开方算法以及除法算法间的相似性,后续不再进行具体区分。
以下将以电路方面的具体设计对应的实施例描述SRT4算法在对应电路中的实现方式。
实施例一
请参阅图3,图3是本发明实施例公开的一种SRT运算电路的结构示意图。如图3所示,所述电路包括:
数据输入模块11、时序控制模块12、数据处理模块13和数据输出模块14;
其中,所述数据输入模块与所述时序控制模块的第一端连接,所述时序控制模块的第二端与所述数据处理模块的第一端连接,所述数据处理模块的第二端与所述数据输出模块的第一端连接;
其中,所述数据输入模块用于处理并输出第一操作数和第二操作数,所述时序控制模块用于根据电路中各模块的工作时序,控制输入所述时序控制模块的数据打拍输出,所述数据处理模块用于根据SRT算法,在预设的迭代次数内对所述时序控制模块打拍输出的数据进行除法计算或开方计算,所述数据输出模块用于输出所述数据处理模块计算完成后的目标结果。
第一操作数和第二操作数在除法运算中,初次迭代时可分别对应为被除数和除数,具体则为对应浮点数的尾数,且在运算过程中,将求商之后的余数实时更新至第一操作数,从而实现循环迭代,而第二操作数即除数是不变的。而开方运算过程中,根据前述的开方计算原理,迭代过程中需要实时更新相对应的除数,即所述第二操作数。根据电路中各模块的逻辑关系及时序关系,可实现除法和开方功能,具体可参考后续各实施方式。
通过数据输入模块处理并输出第一操作数和第二操作数,使得该两个操作数可以用于浮点数的除法,或者其中一个操作数用于浮点数的开方,通过时序控制模块进行输入数据的打拍输出,通过数据处理模块对打拍后的输出数据进行除法计算或开方计算,最终通过数据输出模块实现输出。通过时序控制模块的设计,可实现对应信号的打拍输出,使得计算流程各部分的工作周期符合需求,保证电路迭代周期不变的情况下提升电路整体的工作频率,提升了电路的通用性和工作性能。
实施例二
请参阅图4,图4是本发明实施例公开的另一种SRT运算电路的结构示意图。如图4所示,所述数据处理模块包括查询模块,所述查询模块的第一端与所述数据输入模块连接;
其中,所述查询模块用于根据打拍后的所述第二操作数,通过选择函数确定当前迭代轮次对应的第三操作数,所述第三操作数用于确定当前轮次对应的商值结果。
需要说明的是,图4仅示出一种多个实施方式结合应用的具体示例,在本实施例中所提及的各实施方式均可单独应用,相应的连接关系应当适应性的修改。例如,数据处理模块可以仅包括查询模块,或者仅包括商值计算模块,或者仅包括累加模块等,对于其他模块的功能则可以集成于数据处理模块中实现,而不设置独立的电路单元。
另外,需要说明的是,附图中对于具体模块的括号说明,例如查询模块(lut),仅代表其中一种在具体应用场景下的实施方式,并不完全等同于括号前的功能模块性的描述。例如,在本实施例中,查询模块可用于实现根据打拍后的所述第二操作数,通过选择函数确定当前迭代轮次对应的第三操作数的功能,由于该电路用于SRT算法,由此易得,该功能模块用于实现在SRT计算过程中通过查表选取操作数的流程,因此,在一个具体的应用场景下,查询模块可以是以常用的查找表模块(look up table,简称lut)的形式实现,即括号中的lut,此外,还可以对此设计具体的逻辑电路结构作为不同的落地实现方式,而不采用lut模块,对于其他功能模块也应当作此理解。例如,加法计算模块可以采用领域内通用的csa42模块,或是csa60模块,也可以针对此功能设计新的逻辑电路结构,只要能实现对应功能模块在SRT算法中的具体流程即可。
通过查询模块实现SRT算法中的查表取值流程,通过商的选择函数,根据除数及在待选择的取值表中取出一个数值作为第三操作数,第三操作数可用于给后续模块确定商值结果,由此可进而实现浮点数除法或开方的运算,提升了电路的通用性和工作性能。
作为一种可选的实施方式,所述数据处理模块包括商值计算模块,所述商值计算模块的第一端连接所述查询模块的第二端,所述商值计算模块的第二端连接所述时序控制模块的第二端;
其中,所述商值计算模块用于根据所述第三操作数和所述第一操作数,确定当前迭代轮次对应的商值结果。
商值结果可通过商值计算模块确定,在查询模块根据预定位数的除数尾数确定出第三操作数以后,可根据第三操作数及本次迭代对应的第一操作数,在商数字集中选取对应的商值。
通过商值计算模块,根据第三操作数和第一操作数获得相应的商值,由此计算出商值用于迭代更新余数和总商值结果,由此可进而实现浮点数除法或开方的运算,提升了电路的通用性和工作性能。
作为一种可选的实施方式,所述数据处理模块包括累加模块,所述累加模块的第一端连接所述商值计算模块的第三端,所述累加模块的第二端连接所述数据输出模块的第一端;
其中,所述累加模块用于根据所述商值计算模块各次迭代输出的商值结果,确定当次迭代对应的总目标商值,若迭代次数达到预设数值,则将所述总目标商值作为所述目标结果传输至所述数据输出模块。
累加模块根据各次迭代输出的商值结果及对应的权重,可以确定出当前迭代轮次对应的总目标商值,当精度达到需求时,即迭代次数达到预设数值时,可将所述总目标商值作为所述目标结果传输至所述数据输出模块。
通过累加模块存储并叠加各次迭代计算获得的商值结果,可计算获得总目标商值并输出,由此实现了结果计算的工作逻辑,提升了电路的通用性和工作性能。
作为一种可选的实施方式,所述数据处理模块包括余数计算模块,所述余数计算模块的第一端连接所述时序控制模块的第二端,所述余数计算模块的第二端连接所述商值计算模块的第四端,所述余数计算模块的第三端连接所述时序控制模块的第一端;
其中,所述余数计算模块用于计算当前迭代轮次的余数结果,并根据所述余数结果,更新所述第一操作数。
所述余数结果即SRT方法介绍中所述的部分余数,二者概念一致。在除法运算中,第一次迭代的第一操作数为被除数,第二次及以后则将余数结果更新至第一操作数中,以余数结果进行迭代计算。开方操作中,第一次迭代的第一操作数轮空,第二操作数作为被开方数,第二次及以后则将余数结果更新至第一操作数中,并且需要实时更新第二操作数作为等效除数,并以余数结果和等效除数进行迭代开方计算。
通过余数计算模块可确定出当次迭代后被除数或开方数剩余的部分余数,由此再作为相应的操作数迭代计算,实现了浮点数除法或开方计算的迭代循环,提升了电路的通用性和工作性能。
作为一种可选的实施方式,所述余数计算模块包括乘法计算模块,所述乘法计算模块的第一端连接所述时序控制模块的第二端,所述乘法计算模块的第二端连接所述商值计算模块的第四端;
其中,所述乘法计算模块用于根据所述当前轮次对应的商值结果以及所述第二操作数,确定乘积结果,所述乘积结果用于确定余数结果,以及用于确定开方计算中的附加项。
通过余数计算模块中的乘法计算模块,可根据当前轮次对应的商值结果以及所述第二操作数确定相应的乘积结果,进而可获得部分余数结果或开方公式的附加项,由此实现了浮点数除法或开方计算的迭代循环,提升了电路的通用性和工作性能。
作为一种可选的实施方式,所述余数计算模块还包括加法计算模块;
所述加法计算模块的第一端连接所述乘法计算模块的第三端,所述加法计算模块的第二端连接所述时序控制模块的第一端;
其中,所述加法计算模块用于根据所述乘积结果,确定所述余数结果,并更新所述第一操作数。
通过余数计算模块中的加法计算模块,可根据乘法计算模块输出的乘积结果,计算获得部分余数结果或开方公式的附加项,并更新相应的第一操作数,由此实现了浮点数除法或开方计算的迭代循环,提升了电路的通用性和工作性能。
请参阅图5,图5是本发明实施例公开的又一种SRT运算电路的结构示意图。如图5所示,所述电路包括多个时序控制模块12,所述时序控制模块用于控制对应信号进行打拍输出。
作为一种可选的实施方式,所述时序控制模块包括:锁存器、触发器或寄存器。
时序控制模块用于对相应数据进行打拍输出,以流水线划分的方式,控制各功能模块的时序关系,使得浮点数计算过程对应的工作逻辑进行切分,提高电路利用率及工作效率,最终可以提升电路的工作频率。
时序控制模块可通过数字电路的相应器件实现,例如锁存器、触发器或寄存器,电路中可以仅设计一个总的时序控制模块,将需要打拍输出的信号对应的电路模块与时序控制模块进行连接,以实现相应功能,也可以设置多个时序控制模块,分别控制不同的信号进行打拍输出。设置多个时序控制模块可以提升电路的可靠性,但是相应的会增加电路成本
例如,图5所示的方案设置了两个时序控制模块,分别控制第一操作数和第二操作数进行打拍输出。除此之外,对于前述的各数据,例如余数结果、总目标商值、第三操作数、乘积结果等各参数也可以设计相应的时序控制模块进行打拍输出,以优化电路逻辑,提升电路性能。对于具体的打拍位置设置方式取决于实际电路需求,本申请对此不做限制。
通过特定形式的时序控制模块设置于对应的打拍位置,可提升电路的通用性和工作性能。
请参阅图6,图6是本发明实施例公开的又一种SRT运算电路的结构示意图。如图6所示,所述累加模块的第三端连接所述查询模块的第三端,所述累加模块的第四端连接所述乘法计算模块的第四端;
所述累加模块还用于根据所述商值计算模块各次迭代输出的商值结果,确定开方操作数,并根据所述开方操作数,对所述第二操作数进行更新。
本实施方式中累加模块的连接关系用于开方计算,根据所述商值计算模块各次迭代输出的商值结果,确定开方操作数,前述的SRT4算法中,开方计算和除法计算中有一个类似的除数项,但这个除数项和每一次迭代计算得到的商值,或者在开方计算中称为开根位有关,因此,累加模块还可以用于确定每次迭代对应的开方操作数,并更新至第二操作数。
通过累加模块与查询模块及乘法计算模块之间进行连接,可将确定出的开方操作数传输至相应模块进行浮点数的开方计算,由此实现了浮点数除法或开方计算的迭代循环,提升了电路的通用性和工作性能。
请参阅图7,图7是本发明实施例公开的又一种SRT运算电路的结构示意图。如图7所示,所述电路还包括状态机模块,所述状态机模块的第一端连接所述数据输入模块,所述状态机模块的第二端连接所述数据处理模块的第三端;
其中,所述状态机模块用于确定迭代次数,并监控迭代过程的数据状态。
确定迭代次数的功能也可以植入电路中的其他功能模块,或者直接根据算法需求设置为默认值。
状态机模块还可以用于监控迭代过程中的数据状态,例如,状态机可以监控迭代过程中的以下信号状态:
st_idle为状态机闲置状态;in_progress_q为状态机迭代前st_pre1状态到最后一次迭代last_iter_q的状态;st_pre1为开始迭代前pre1状态;st_pre2为开始迭代标志状态;iteration_q为迭代到最后一次迭代last_iter_q前的状态;last_iter_q为最后一次迭代状态;srt_qi_valid为商迭代持续周期;rem_recov_q为恢复余数状态标志;res_rnd1_q为Norm类型数据舍入状态标志;res_rnd2_q为Denorm类型数据舍入状态标志;res_hold_q为最终结果状态标志。
通过状态机模块确定需要的迭代次数,并进行迭代过程中一系列信号状态的监控和管理,提升了电路的通用性和工作性能。
请参阅图8,图8是本发明实施例公开的又一种SRT运算电路的结构示意图。如图8所示,在一种具体的应用场景下,在除法功能的指令下,迭代逻辑的功能是将操作数a的尾数和操作数b的尾数根据srt4算法不断进行迭代,最终算出操作数a的尾数除以操作数b的尾数的商;在开方功能的指令下,迭代逻辑的功能是将操作数b的尾数根据srt4算法不断进行迭代,最终算出操作数b的尾数的方根值。
其中,黑色方块为所述时序控制模块,用于控制相应位置的信号进行打拍输出,梯形方块为选择模块,选择相关的部分数据参与数据处理过程。
在除法模式下,被除数为操作数a的尾数(fm_a_srt0_q),除数为操作数b的尾数(fm_b_srt0_q),开始迭代,fm_b_srt0_q作为除数di_t输入到Lut模块中,根据除数di选择输出对应的那一列查找表的值(mkp2_out、mkp1_out、mkp0_out、mkp1_out),将这些值输入给qsel_gen模块,第一次迭代fm_a_srt0_q和div_init_c(60’b0)相加得到余数rem_t2,然后余数rem_t2输入到qsel_gen模块中,得到下一次迭代需要的商值q_sel_out,q_sel_out与除数fm_b_srt0_q在multiples_cal_dp模块中相乘得到kb_mux_out,将余数值remc_q和rems_q与kb_mux_out在csa60_11(超前进位加法器)中相加得到sum1和cry1,因为是除法模式,所以和开方计算相关的m_sj_square_xrj(s[j]*r[j])为0,因此,sum2等于sum1,cry2等于cry1,再将sum2和cry2相加得到下一次迭代的余数rem_t2,将余数rem_t2输入到qsel_gen模块中得到下一次迭代需要的商值q_sel_out,于此同时,每次迭代得到的商值q_sel_out输入到fly_conv_dp模块中,fly_conv_dp模块将每次迭代的商值q_sel_out进行累加,最后一次迭代得到最终商值srt0_resm0和srt0_resm1。
在开方模式下,开方数为操作数b的尾数(fm_b_srt0_q),开始迭代,sqrt_t(其为商的累加值qi_acc_q经过左移得到的值)作为开方运算的除数输入到到Lut模块中,根据除数di选择输出对应的那一列查找表的值(mkp2_out、mkp1_out、mkp0_out、mkp1_out),将这些值输入给qsel_gen模块,第一次迭代fm_b_srt0_q和sqrt_init_c(60’bE0)相加得到余数rem_t2,然后余数rem_t2输入到qsel_gen模块中,得到下一次迭代需要的商值q_sel_out,q_sel_out与除数sqrt_t在multiples_cal_dp模块中相乘得到kb_mux_out,将余数值remc_q和rems_q与kb_mux_out,接着将商值q_sel_out的平方与srt算法的基数值r[j](恒等于4)在multiples_cal_dp模块中相乘得到m_sj_square_xrj(s[j]^2*r[j]),将m_sj_square_xrj(s[j]*r[j])、余数值remc_q、与数值rems_q与kb_mux_out在csa42(超前进位加法器)中相加得到sum2和cry2,再次将sum2和cry2相加得到下一次迭代的余数rem_t2,将余数rem_t2输入到qsel_gen模块中得到下一次迭代需要的商值q_sel_out,于此同时,每次迭代得到的商值q_sel_out输入到fly_conv_dp模块中,fly_conv_dp模块将每次迭代的商值q_sel_out进行累加,最后一次迭代得到最终商值srt0_resm0和srt0_resm1。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (9)
1.一种SRT运算电路,其特征在于,所述电路包括:
数据输入模块、时序控制模块、数据处理模块和数据输出模块;
其中,所述数据输入模块与所述时序控制模块的第一端连接,所述时序控制模块的第二端与所述数据处理模块的第一端连接,所述数据处理模块的第二端与所述数据输出模块的第二端连接;
其中,所述数据输入模块用于处理并输出第一操作数和第二操作数,所述时序控制模块用于根据电路中各模块的工作时序,控制输入所述时序控制模块的数据打拍输出,所述数据处理模块用于根据SRT算法,在预设的迭代次数内对所述时序控制模块打拍输出的数据进行除法计算或开方计算,所述数据输出模块用于输出所述数据处理模块计算完成后的目标结果;
所述数据处理模块包括商值计算模块和余数计算模块;
所述余数计算模块包括乘法计算模块,所述乘法计算模块的第一端连接所述时序控制模块的第二端,所述乘法计算模块的第二端连接所述商值计算模块的第四端;
其中,所述乘法计算模块用于根据所述当前轮次对应的商值结果以及所述第二操作数,确定乘积结果,所述乘积结果用于确定余数结果,以及用于确定开方计算中的附加项。
2.根据权利要求1所述的电路,其特征在于,所述数据处理模块包括查询模块,所述查询模块的第一端与所述数据输入模块连接;
其中,所述查询模块用于根据打拍后的所述第二操作数,通过选择函数确定当前迭代轮次对应的第三操作数,所述第三操作数用于确定当前轮次对应的商值结果。
3.根据权利要求2所述的电路,其特征在于,所述商值计算模块的第一端连接所述查询模块的第二端,所述商值计算模块的第二端连接所述时序控制模块的第二端;
其中,所述商值计算模块用于根据所述第三操作数和所述第一操作数,确定当前迭代轮次对应的商值结果。
4.根据权利要求3所述的电路,其特征在于,所述数据处理模块包括累加模块,所述累加模块的第一端连接所述商值计算模块的第三端,所述累加模块的第二端连接所述数据输出模块;
其中,所述累加模块用于根据所述商值计算模块各次迭代输出的商值结果,确定当次迭代对应的总目标商值,若迭代次数达到预设数值,则将所述总目标商值作为所述目标结果传输至所述数据输出模块。
5.根据权利要求4所述的电路,其特征在于,所述余数计算模块的第一端连接所述时序控制模块的第二端,所述余数计算模块的第二端连接所述商值计算模块的第四端,所述余数计算模块的第三端连接所述时序控制模块的第一端;
其中,所述余数计算模块用于计算当前迭代轮次的余数结果,并根据所述余数结果,更新所述第一操作数。
6.根据权利要求1所述的电路,其特征在于,所述余数计算模块还包括加法计算模块;
所述加法计算模块的第一端连接所述乘法计算模块的第三端,所述加法计算模块的第二端连接所述时序控制模块的第一端;
其中,所述加法计算模块用于根据所述乘积结果,确定所述余数结果,并更新所述第一操作数。
7.根据权利要求5所述的电路,其特征在于,所述累加模块的第三端连接所述查询模块的第三端,所述累加模块的第四端连接所述乘法计算模块的第四端;
所述累加模块还用于根据所述商值计算模块各次迭代输出的商值结果,确定开方操作数,并根据所述开方操作数,对所述第二操作数进行更新。
8.根据权利要求1-7任一项所述的电路,其特征在于,所述电路还包括状态机模块,所述状态机模块的第一端连接所述数据输入模块,所述状态机模块的第二端连接所述数据处理模块的第三端;
其中,所述状态机模块用于确定迭代次数,并监控迭代过程的数据状态。
9.根据权利要求1-7任一项所述的电路,其特征在于,所述时序控制模块包括:锁存器、触发器或寄存器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410500320.7A CN118312129A (zh) | 2023-08-03 | 2023-08-03 | Srt运算电路 |
CN202310974128.7A CN117075841B (zh) | 2023-08-03 | 2023-08-03 | Srt运算电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310974128.7A CN117075841B (zh) | 2023-08-03 | 2023-08-03 | Srt运算电路 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410500320.7A Division CN118312129A (zh) | 2023-08-03 | 2023-08-03 | Srt运算电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117075841A CN117075841A (zh) | 2023-11-17 |
CN117075841B true CN117075841B (zh) | 2024-05-14 |
Family
ID=88707149
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310974128.7A Active CN117075841B (zh) | 2023-08-03 | 2023-08-03 | Srt运算电路 |
CN202410500320.7A Pending CN118312129A (zh) | 2023-08-03 | 2023-08-03 | Srt运算电路 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410500320.7A Pending CN118312129A (zh) | 2023-08-03 | 2023-08-03 | Srt运算电路 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN117075841B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785117A (zh) * | 2023-12-26 | 2024-03-29 | 合芯科技(苏州)有限公司 | 基于srt4实现srt16的除法运算电路 |
CN117785116B (zh) * | 2023-12-26 | 2024-07-16 | 合芯科技(苏州)有限公司 | 基于srt4实现srt16的开方运算电路 |
CN117785115A (zh) * | 2023-12-26 | 2024-03-29 | 合芯科技(苏州)有限公司 | Srt运算电路、方法、装置、芯片及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984521A (zh) * | 2014-05-27 | 2014-08-13 | 中国人民解放军国防科学技术大学 | Gpdsp中simd结构浮点除法的实现方法及装置 |
CN113407235A (zh) * | 2021-06-28 | 2021-09-17 | 珠海市一微半导体有限公司 | 一种基于硬件加速的运算电路系统及芯片 |
WO2023051217A1 (zh) * | 2021-09-30 | 2023-04-06 | 上海商汤智能科技有限公司 | 集成电路的时序约束方法、装置、电子设备及芯片 |
-
2023
- 2023-08-03 CN CN202310974128.7A patent/CN117075841B/zh active Active
- 2023-08-03 CN CN202410500320.7A patent/CN118312129A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984521A (zh) * | 2014-05-27 | 2014-08-13 | 中国人民解放军国防科学技术大学 | Gpdsp中simd结构浮点除法的实现方法及装置 |
CN113407235A (zh) * | 2021-06-28 | 2021-09-17 | 珠海市一微半导体有限公司 | 一种基于硬件加速的运算电路系统及芯片 |
WO2023051217A1 (zh) * | 2021-09-30 | 2023-04-06 | 上海商汤智能科技有限公司 | 集成电路的时序约束方法、装置、电子设备及芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN117075841A (zh) | 2023-11-17 |
CN118312129A (zh) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117075841B (zh) | Srt运算电路 | |
US6847985B1 (en) | Floating point divide and square root processor | |
JP3541066B2 (ja) | コンピュータにおいて除算および平方根計算を実施するための方法および装置 | |
CN107305485B (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
CN106202890B (zh) | 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置 | |
US8060551B2 (en) | Method and apparatus for integer division | |
JPH0969040A (ja) | 推測的演算を有する3つのオーバーラップしたステージにより基数2の平方根演算/除算を行う回路 | |
US20080208945A1 (en) | Method to compute an approximation to the reciprocal of the square root of a floating point number in ieee format | |
US5023827A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
Wahba et al. | Area efficient and fast combined binary/decimal floating point fused multiply add unit | |
Tay et al. | Efficient VLSI Implementation of $2^{{n}} $ Scaling of Signed Integer in RNS ${\{2^{n}-1, 2^{n}, 2^{n}+ 1\}} $ | |
Norris et al. | An approximate and iterative posit multiplier architecture for FPGAs | |
US7143126B2 (en) | Method and apparatus for implementing power of two floating point estimation | |
CN112130804B (zh) | 具有正确舍入的混合精度浮点数的融合乘加运算器 | |
US8019805B1 (en) | Apparatus and method for multiple pass extended precision floating point multiplication | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
US20070038693A1 (en) | Method and Processor for Performing a Floating-Point Instruction Within a Processor | |
Lyu et al. | PWL-based architecture for the logarithmic computation of floating-point numbers | |
US20090006509A1 (en) | High-radix multiplier-divider | |
US7016930B2 (en) | Apparatus and method for performing operations implemented by iterative execution of a recurrence equation | |
US6598065B1 (en) | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal | |
Villalba-Moreno | Digit recurrence floating-point division under HUB format | |
US5661674A (en) | Divide to integer | |
US6963895B1 (en) | Floating point pipeline method and circuit for fast inverse square root calculations | |
US8788560B2 (en) | Decimal elementary functions computation |
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 |