CN102109973A - 包含超越函数计算的处理器实现装置 - Google Patents

包含超越函数计算的处理器实现装置 Download PDF

Info

Publication number
CN102109973A
CN102109973A CN 201110050034 CN201110050034A CN102109973A CN 102109973 A CN102109973 A CN 102109973A CN 201110050034 CN201110050034 CN 201110050034 CN 201110050034 A CN201110050034 A CN 201110050034A CN 102109973 A CN102109973 A CN 102109973A
Authority
CN
China
Prior art keywords
point
floating
tab
level
stage
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.)
Pending
Application number
CN 201110050034
Other languages
English (en)
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.)
CETC 38 Research Institute
Original Assignee
CETC 38 Research Institute
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 CETC 38 Research Institute filed Critical CETC 38 Research Institute
Priority to CN 201110050034 priority Critical patent/CN102109973A/zh
Publication of CN102109973A publication Critical patent/CN102109973A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

包含超越函数计算的处理器实现装置,属数字信号处理器技术领域。其目的是提供一种能够快速实现定点反正切、浮点倒数、浮点自然对数和浮点开方计算的硬件。该硬件电路依次由地址发生器和第一数据寄存器构成的取数级,由tab0、tab1、两个乘加模块和第二数据寄存器构成的执行级,以及由截位模块和标志生成模块构成的写回级组成三级流水的架构;取数级用于产生查表所需的地址,并将执行级和写回级所需的控制信号、变换后的输入数据以及地址信号寄存送到执行级计算;执行级用于完成定点反正切、浮点倒数、浮点自然对数和浮点开方的运算;写回级用于标志的生成以及运算结果的截位输出。

Description

包含超越函数计算的处理器实现装置
技术领域
 本发明涉及一种包含超越函数计算的处理器实现装置,属数字信号处理器技术领域。
背景技术
目前,计算机对超越函数的计算,通常是采用软件来实现的。由于采用软件的方式实现超越函数的求解,其速度较慢,故无法满足对计算速度要求较高的场合,特别是无法满足数字信号处理领域中对对数及反三角函数之类的超越函数的快速求解。
发明内容
本发明的目的在于提供一种能够快速实现对定点反正切、浮点倒数、浮点自然对数和浮点开方进行计算的包含超越函数计算的处理器实现装置。
其技术方案是:一种包含超越函数计算的处理器实现装置,其特征在于:所述实现装置依次由地址发生器和第一数据寄存器构成的取数级,由tab0、tab1、两个乘加模块和第二数据寄存器构成的执行级,以及由截位模块和标志生成模块构成的写回级组成三级流水的架构;
取数级,根据控制信号和输入数据,用于在地址发生器内产生查表所需的地址,并将执行级和写回级所需的控制信号、变换后的输入数据以及地址信号寄存送到执行级计算;
执行级,用于完成定点反正切、浮点倒数、浮点自然对数和浮点开方的计算;
写回级,用于标志的生成以及运算结果的截位输出。
其技术效果是:本发明首先通过取数级将接收的数据表示成定点或浮点的形式,将其作为执行超越函数计算的输入值;然后通过执行级将特定函数按照泰勒公式展开,根据计算精度要求提取泰勒级数部分分项构成乘加形式,并通过查找表的方式获取部分分项值,在1个时钟周期内完成超越函数的近似值计算;最后通过写回级对中间计算结果进行修正,获取最终结果,从而实现对定点反正切、浮点倒数、浮点自然对数和浮点开方的快速计算。
附图说明
图1为本发明的电路框图。
图2为定点反正切arctg(x)的实现流程图。
图3为浮点倒数1/x的实现流程图。
图4为浮点自然对数ln(x)的实现流程图。
图5为浮点开方sqrt(x)的实现流程图。
具体实施方式
如图1所示,一种包含超越函数计算的处理器实现装置,依次由取数级、执行级和写回级组成三级流水的架构。
取数级由地址发生器和第一数据寄存器构成,根据控制信号和输入数据,用于在地址发生器内产生查表所需的地址,并将执行级和写回级所需的控制信号、变换后的输入数据以及地址信号寄存送到执行级计算。
执行级由tab0、tab1、两个乘加模块和第二数据寄存器构成,主要用于完成1/x、sqrt(x)和ln(x)的计算。其中,tab0中包含有用于查询的rec_tab、rec2_tab、sqr_tab、recsqr_tab和ln_tab五张表。Tab1中包括有用于查询的arctg_tab0、arctg_tab1、sqr_tab_fix和recsqr_tab_fix四张表,以及一个用于计算                                                
Figure 2011100500348100002DEST_PATH_IMAGE001
Figure 694683DEST_PATH_IMAGE002
的乘法器。通过Tab1可以完成arctan(x)以及浮点指数为奇数的开方运算。Tab0的查表结果通过乘加模块后可以直接得到1/x的计算结果。计算开方sqrt(x)时只能得到源操作数的浮点指数(无偏)为偶数的值,即
Figure 2011100500348100002DEST_PATH_IMAGE003
, 浮点指数(无偏)为奇数的值需根据tab1中查表结果计算,最终的计算结果要根据指数的奇偶性通过选择输出。计算ln(x)时利用tab0计算得到
Figure 861091DEST_PATH_IMAGE004
,利用tab1计算得到
Figure 765462DEST_PATH_IMAGE001
,最终合成
Figure 2011100500348100002DEST_PATH_IMAGE005
写回级由截位模块和标志生成模块构成,主要用于标志的生成以及运算结果的截位输出。标志寄存器分为浮点溢出,定点溢出及浮点非数,能够产生浮点溢出标志的主要有两种情况:一是计算浮点倒数时输入数据为浮点0;二是计算浮点开方时输入数据为浮点的无穷大。当浮点运算的输入源操作数为非数时,将产生浮点非数标志。只有计算ln(0)时才会产生定点溢出标志。截位模块主要完成计算结果的修正,并将最终结果截断成32位数据输出。
其实现定点反正切arctg(x),浮点倒数1/x,浮点自然对数ln(x)及浮点开方sqrt (x)计算的流程如下:
1、完成32位定点数据的反正切计算:反正切的计算结果为16位定点数。在数学意义上,本发明实现arctg(x)所能接受的源操作数x,是一个大于等于-1,小于1的数。所得到结果,是把[0,65536)区间归一化到 [0,2∏) 区间所得到的数值,即,若本发明取得一个结果Φ,那么数学意义上的弧度结果应该是。具体实现如下所示:
arctg(x)的Talor展开式为
Figure 2011100500348100002DEST_PATH_IMAGE007
Figure 535896DEST_PATH_IMAGE008
,
Figure 2011100500348100002DEST_PATH_IMAGE009
,
Figure 607626DEST_PATH_IMAGE010
,
则arctg(|x|)可表示成:
arctg(|x|)=arctg(x0+x1)=(x0+x1)-(x0+x1)3/3+(x0+x1)5/5-(x0+x1)7/7+……
                = x0-x0 3/3+x0 5/5-x0 7/7+……  
                 +x1(1-x0 2+x0 4-x0 6+……)+x1 2x0(1-2x0 2+3x0 4-4x0 6+……)+……
         = arctg(x0)+x1(1+x0 2)-1+x1 2x0(1+x0 2)-2+……     (1)
如图2所示,在地址发生器中,首先计算x的绝对值|x|,即公式(1)中的
Figure 2011100500348100002DEST_PATH_IMAGE011
 。提取 x0作为查找表的入口地址,并将x0、x1及x的正负标识寄存下来,下一时钟节拍进入执行级开始计算。
实际计算时只提取展开式的前两项
Figure 123927DEST_PATH_IMAGE012
就可以得到16位精度的计算结果。本装置中事先存储
Figure 2011100500348100002DEST_PATH_IMAGE013
Figure 408032DEST_PATH_IMAGE014
两张表,表中数值也都精确到小数点后16位。由于本装置电路中的角度是以0~65535表示0~2∏,所以需要对
Figure 201544DEST_PATH_IMAGE013
Figure 319542DEST_PATH_IMAGE014
进行缩放,缩放的系数为
Figure 2011100500348100002DEST_PATH_IMAGE015
,即
Figure 136188DEST_PATH_IMAGE016
                      (2)
Figure 2011100500348100002DEST_PATH_IMAGE017
                              (3)
                            (4)
查询执行级tab1中的arctg_tab0和arctg_tab1得到 
Figure 2011100500348100002DEST_PATH_IMAGE019
                    及
Figure 957437DEST_PATH_IMAGE020
的计算结果。arctg_tab0与arctg_tab1都是深度为256,字宽为18位的查询表。通过与tab1相连的乘加模块完成公式(4)的计算 得到
Figure 2011100500348100002DEST_PATH_IMAGE021
,并将
Figure 636549DEST_PATH_IMAGE021
与x的正负标识寄存。
写回级中的截位模块根据源操作数的正负对进行修正,完成arctg(x)的计算。如果x为正值则
Figure 215615DEST_PATH_IMAGE022
,如果x为负值则
Figure 2011100500348100002DEST_PATH_IMAGE023
。由于乘加模块的运算结果为36bit,所以最终结果输出会将结果的低4去除。arctg(x)的运算不会产生标志位。
2、完成浮点倒数1/x的计算:假设
Figure 108354DEST_PATH_IMAGE024
,取,
Figure 692788DEST_PATH_IMAGE026
,
    
Figure 733294DEST_PATH_IMAGE028
    
Figure 2011100500348100002DEST_PATH_IMAGE029
                           (5)
如图3所示,在地址发生器中,首先提取浮点x的尾数x0+x1和无偏指数exp。其中 x0作为查找表的入口地址,x0、x1、无偏指数exp及x的正负标识被寄存下来,下一时钟节拍进入执行级开始计算。
需要得到16位精度的结果,执行级只需计算
Figure 61376DEST_PATH_IMAGE030
。本装置中存储有
Figure 621670DEST_PATH_IMAGE032
两张表,结果都保留到16位精度,最终的计算结果可以表示为:
Figure 2011100500348100002DEST_PATH_IMAGE033
                        (6)
查询执行级tab0中的rec_tab和rec2_tab得到
Figure 642585DEST_PATH_IMAGE034
Figure 2011100500348100002DEST_PATH_IMAGE035
。rec_tab和rec2_tab都是深度为256,字宽为18位的查询表。通过与tab0相连的乘加模块完成
Figure 842491DEST_PATH_IMAGE036
的计算,并将该计算结果、x的正负标识及无偏指数exp寄存。
由于
Figure 911947DEST_PATH_IMAGE036
是一个大于等于0.5小于1的值,需要将其左移一位后才能作为1/x的浮点尾数,并调整计算结果的无偏指数为
Figure 2011100500348100002DEST_PATH_IMAGE037
。规格化运算结果后输出。这些操作全部在写回级完成。
本发明对浮点倒数1/x计算结果的尾数可以精确到小数点后第16位。
3、完成浮点自然对数ln(x)的计算:原操作数x需要大于等于0。计算结果按照16位定点方式输出。实现装置中,ln(x)的结果输出还受一个4位控制信号cutnum的控制。若
Figure 513698DEST_PATH_IMAGE038
则输出计算结果的整数部分,
Figure 2011100500348100002DEST_PATH_IMAGE039
则输出计算结果的整数部分加一位小数,
Figure 705514DEST_PATH_IMAGE040
则输出计算结果的整数部分加两位小数,以此类推。
Figure 2011100500348100002DEST_PATH_IMAGE041
,
Figure 392716DEST_PATH_IMAGE025
,
Figure 937967DEST_PATH_IMAGE026
,
Figure 558608DEST_PATH_IMAGE042
(7)
由于x1/x0小于1,所以ln(1+x1/x0)可以使用泰勒公式展开。
Figure 2011100500348100002DEST_PATH_IMAGE043
(8)
如图4所示,与计算浮点1/x相同,在地址发生器中,首先提取浮点自然对数x的尾数
Figure 734374DEST_PATH_IMAGE011
和无偏指数exp。其中 x0将作为查找表的入口地址,x0、x1、无偏指数exp及输出控制cutnum被寄存下来,下一时钟节拍进入执行级开始计算。
取泰勒展开的第一项参加计算就可以得到16精度的计算结果,即
Figure 784239DEST_PATH_IMAGE044
。本装置中存有一张精度达到16位的自然对数表
Figure 2011100500348100002DEST_PATH_IMAGE045
,及一张精度达到16位的倒数表
Figure 257814DEST_PATH_IMAGE031
,则最终的计算结果可以表示成:
Figure 443945DEST_PATH_IMAGE046
               (9)
查询执行级tab0中的rec_tab和ln_tab得到
Figure 852930DEST_PATH_IMAGE034
Figure 2011100500348100002DEST_PATH_IMAGE047
。ln_tab也是深度为256,字宽为18位的查询表。通过与tab0相连的乘加模块完成的计算,与此同时利用tab1中的18bit乘法器计算
Figure 2011100500348100002DEST_PATH_IMAGE049
写回级的截位输出模块完成计算
Figure 791991DEST_PATH_IMAGE050
。根据输出控制信号cutnum,按照全部整数、整数加一位小数、整数加两位小数及整数加三位小数四种方式中的一种输出结果。
4、完成浮点开方sqrt(x)的计算:原操作数x需要大于等于0;
假设
Figure 160524DEST_PATH_IMAGE041
,
Figure 474831DEST_PATH_IMAGE025
,
Figure 499287DEST_PATH_IMAGE026
 
Figure 2011100500348100002DEST_PATH_IMAGE051
     (10)
Figure 314665DEST_PATH_IMAGE052
泰勒展开得:
Figure 2011100500348100002DEST_PATH_IMAGE053
      (11)
取展开式的前两项参加运算
Figure 678651DEST_PATH_IMAGE054
                    (12)
浮点开方运算时分浮点的指数为奇数和偶数两种情况:
当指数为偶数时:
Figure 2011100500348100002DEST_PATH_IMAGE055
               (13)
当指数为奇数时:
Figure 288492DEST_PATH_IMAGE056
     (14)
如图5所示,浮点开方在取数级也是首先提取浮点x的尾数
Figure 800245DEST_PATH_IMAGE011
和无偏指数exp。其中 x0作为查找表的入口地址。
执行级tab0中的
Figure 2011100500348100002DEST_PATH_IMAGE057
Figure 481631DEST_PATH_IMAGE058
;tab1中的
Figure 2011100500348100002DEST_PATH_IMAGE059
Figure 621494DEST_PATH_IMAGE060
。sqr_tab、recsqr_tab和sqr_tab_fix、recsqr_tab_fix精度均为16位。执行级硬件电路通过tab0查询表sqr_tab和recsqr_tab计算
Figure 2011100500348100002DEST_PATH_IMAGE061
,并同时通过tab1查询表sqr_tab_fix及recsqr_tab_fix计算
Figure 667817DEST_PATH_IMAGE062
写回级根据x无偏指数的奇偶性选择其中的一个结果输出:如果 x无偏指数为偶数时,写回级选择
Figure 2011100500348100002DEST_PATH_IMAGE063
作为最终结果输出;如果 x无偏指数为奇数,若
Figure 338969DEST_PATH_IMAGE064
小于1,写回级则输出结果
Figure 2011100500348100002DEST_PATH_IMAGE065
,否则输出结果
Figure 761729DEST_PATH_IMAGE066
,以保证最终计算结果符合单精度浮点的格式要求。

Claims (4)

1.包含超越函数计算的处理器实现装置,其特征在于:所述硬件电路依次由地址发生器和第一数据寄存器构成的取数级,由tab0、tab1、两个乘加模块和第二数据寄存器构成的执行级,以及由截位模块和标志生成模块构成的写回级组成三级流水的架构;
取数级,根据控制信号和输入数据,用于在地址发生器内产生查表所需的地址,并将执行级和写回级所需的控制信号、变换后的输入数据以及地址信号寄存送到执行级计算;
执行级,用于完成定点反正切、浮点倒数、浮点自然对数和浮点开方的计算;
写回级,用于标志的生成以和运算结果的截位输出。
2.根据权利要求1所述的包含超越函数计算的处理器实现装置,其特征在于:所述tab0中包含有用于查询的rec_tab、rec2_tab、sqr_tab、recsqr_tab和ln_tab五张表。
3.根据权利要求1所述的包含超越函数计算的处理器实现装置,其特征在于:所述Tab1中包含有用于查询的arctg_tab0、arctg_tab1、sqr_tab_fix和recsqr_tab_fix四张表,以及一个用于计算                                                
Figure 681622DEST_PATH_IMAGE002
的乘法器。
4.根据权利要求1所述的包含超越函数计算的处理器实现装置,其特征在于:所述乘加模块为
Figure 393226DEST_PATH_IMAGE003
CN 201110050034 2011-03-02 2011-03-02 包含超越函数计算的处理器实现装置 Pending CN102109973A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110050034 CN102109973A (zh) 2011-03-02 2011-03-02 包含超越函数计算的处理器实现装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110050034 CN102109973A (zh) 2011-03-02 2011-03-02 包含超越函数计算的处理器实现装置

Publications (1)

Publication Number Publication Date
CN102109973A true CN102109973A (zh) 2011-06-29

Family

ID=44174151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110050034 Pending CN102109973A (zh) 2011-03-02 2011-03-02 包含超越函数计算的处理器实现装置

Country Status (1)

Country Link
CN (1) CN102109973A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104185951A (zh) * 2012-03-05 2014-12-03 索泰克公司 查找表架构
CN106020772A (zh) * 2016-05-13 2016-10-12 中国人民解放军信息工程大学 异构系统中基于数据表精简技术的超越函数访存优化方法
CN108123907A (zh) * 2017-11-24 2018-06-05 浙江天则通信技术有限公司 一种用于单载波频域均衡信道的低复杂度均衡方法
CN108540127A (zh) * 2017-03-03 2018-09-14 成都海存艾匹科技有限公司 基于三维印录存储器的可编程门阵列

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《现代电子技术》 20090731 刘小明,洪一 基于查找表和Taylor展开的正余弦函数的实现 165,166 1-4 , 第300期 2 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104185951A (zh) * 2012-03-05 2014-12-03 索泰克公司 查找表架构
CN104185951B (zh) * 2012-03-05 2018-09-14 索泰克公司 查找表架构
US10110235B2 (en) 2012-03-05 2018-10-23 Soitec Look-up table architecture
CN106020772A (zh) * 2016-05-13 2016-10-12 中国人民解放军信息工程大学 异构系统中基于数据表精简技术的超越函数访存优化方法
CN106020772B (zh) * 2016-05-13 2018-03-27 中国人民解放军信息工程大学 异构系统中基于数据表精简技术的超越函数访存优化方法
CN108540127A (zh) * 2017-03-03 2018-09-14 成都海存艾匹科技有限公司 基于三维印录存储器的可编程门阵列
CN108123907A (zh) * 2017-11-24 2018-06-05 浙江天则通信技术有限公司 一种用于单载波频域均衡信道的低复杂度均衡方法
CN108123907B (zh) * 2017-11-24 2020-08-25 浙江天则通信技术有限公司 一种用于单载波频域均衡信道的低复杂度均衡方法

Similar Documents

Publication Publication Date Title
CN109643228B (zh) 用于浮点乘加运算的低能耗尾数乘法
US9753695B2 (en) Datapath circuit for digital signal processors
CN102722352B (zh) 一种Booth乘法器
CN109146067B (zh) 一种基于FPGA的Policy卷积神经网络加速器
CN101630243B (zh) 超越函数装置以及用该装置实现超越函数的方法
CN102629189A (zh) 基于fpga的流水浮点乘累加方法
CN103809930B (zh) 一种双精度浮点数除法器的设计方法及除法器
CN107273090A (zh) 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN106155627B (zh) 基于t_cordic算法的低开销迭代三角函数装置
JPH0727456B2 (ja) 浮動小数点演算装置
CN102360344A (zh) 矩阵处理器及其指令集和嵌入式系统
CN101201644A (zh) 指数处理方法与系统
CN102109973A (zh) 包含超越函数计算的处理器实现装置
CN104679720A (zh) 一种实现fft的运算方法
Rodriguez-Garcia et al. Fast fixed-point divider based on Newton-Raphson method and piecewise polynomial approximation
CN111984226B (zh) 一种基于双曲cordic的立方根求解装置及求解方法
CN202075727U (zh) 包含超越函数计算的处理器实现装置
CN108228135B (zh) 一种运算多种超越函数的装置
CN104714773A (zh) 基于plb总线的嵌入式旋转角计算ip软核及旋转角计算方法
CN107423026A (zh) 一种正余弦函数计算的实现方法及装置
CN107657078B (zh) 基于fpga的超声相控阵浮点聚焦发射实现方法
CN104238992A (zh) 一种高性能非精确浮点加法器及其应用方法
Shuang-yan et al. Design and implementation of a 64/32-bit floating-point division, reciprocal, square root, and inverse square root unit
US10459689B2 (en) Calculation of a number of iterations
Pande et al. Design and implementation of floating point divide-add fused architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110629