CN114707110B - 一种三角函数和双曲函数扩展指令计算装置及处理器核 - Google Patents

一种三角函数和双曲函数扩展指令计算装置及处理器核 Download PDF

Info

Publication number
CN114707110B
CN114707110B CN202210633048.0A CN202210633048A CN114707110B CN 114707110 B CN114707110 B CN 114707110B CN 202210633048 A CN202210633048 A CN 202210633048A CN 114707110 B CN114707110 B CN 114707110B
Authority
CN
China
Prior art keywords
module
function
iteration
hyperbolic
instruction
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
Application number
CN202210633048.0A
Other languages
English (en)
Other versions
CN114707110A (zh
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.)
Ehiway Microelectronic Science And Technology Suzhou Co ltd
Original Assignee
Ehiway Microelectronic Science And Technology Suzhou Co ltd
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 Ehiway Microelectronic Science And Technology Suzhou Co ltd filed Critical Ehiway Microelectronic Science And Technology Suzhou Co ltd
Priority to CN202210633048.0A priority Critical patent/CN114707110B/zh
Publication of CN114707110A publication Critical patent/CN114707110A/zh
Application granted granted Critical
Publication of CN114707110B publication Critical patent/CN114707110B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明提供了一种三角函数和双曲函数扩展指令计算装置及处理器核,所述装置包括控制信号生成模块、特殊角度判别模块、存储模块、迭代模块以及输出选择模块。对三角函数和双曲函数扩展指令计算装置的控制信号进行独热码编码,由于独热码只有一位为1,避免了对funct3信号的二次译码,从而节省硬件扩展电路的资源消耗。

Description

一种三角函数和双曲函数扩展指令计算装置及处理器核
技术领域
本发明涉及基于RISC-V架构的处理器技术领域,尤其是涉及一种三角函数和双曲函数扩展指令计算装置及处理器核。
背景技术
指令集是存储在处理器内部,连接硬件与软件的接口。处理器通过从内存中读取指令、进行译码和执行操作,来完成复杂的运算任务。每个处理器都具有特定的指令集与其对应,指令集的设计直接影响处理器的性能。处理器设计中除了设定支持基本运算和控制的指令集外,还需要针对特定的应用领域设计扩展指令集。特定应用领域的指令集扩展可以化繁为简,使处理器直接根据译码信息执行,避免通过基本指令集产生复杂的运算流程,造成资源浪费。
RISC-V指令集是基于精简指令集(RISC)基础上开发的开源指令集架构(ISA),是个完全开放的、标准的、能够支持各种应用的全新指令集。RISC-V指令集包含一个指令数很少的基础指令集和一系列可选的指令集。基础指令集为整数指令集RV32I与RV64I,分别提供32位与64位的地址空间;其他的可选指令集包括乘除运算(M)、原子操作(A)、浮点运算(F)、压缩指令(C)等。RISC-V 架构在设计之初就留出了足够的可编码空间来支持第三方指令集扩展,用户可以根据特定的需求设计自定义扩展指令,通过灵活选择不同的模块组合或者进行扩展,构建适用于任何一个领域的微处理器,比如高精度计算、低功耗嵌入式等。
CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,由Jack E. Volder等人于1959年提出。该算法的基本原理是通过一系列固定的、与运算基数有关的角度的不断偏摆以逼近所需的旋转角度。CORDIC算法有两种模式:旋转模式、向量模式。可以通过模式和坐标系的选择,用于运算三角函数和双曲函数等。
目前对于有三角函数、双曲函数的高级语言程序,如果目标指令集构架(ISA)支持三角函数等的机器指令(如X86),编译器则会通过将相关代码编译成ISA支持的机器指令来优化。而对于像 RISC-V这类ISA中没有三角函数和反双曲函数的机器指令支持的架构,编译器会使用标准C库,用多条机器代码实现相应的功能。三角函数和双曲函数基于RISC-V基础指令集(RV32I)进行编译时会生成几十条指令,计算时间长。而使用FPGA逻辑资源来实现三角函数及双曲函数的计算可以缩短计算时间。在传统三角函数及双曲函数的硬件电路实现中,CORDIC算法凭借其计算精度高,计算时间短的优点被广泛使用,但需要引入复杂的系统控制逻辑,会占用大量的FPGA逻辑资源并导致电路工作频率降低。因此,如何对配备了CORDIC扩展指令的硬件电路进行优化,以减少计算时间、简化控制逻辑、提高运算速度、降低硬件开销,是目前亟需解决的问题。
发明内容
本发明所要解决的技术问题是如何对配备了CORDIC扩展指令的硬件电路进行优化,以减少计算时间、简化控制逻辑、提高运算速度、降低硬件开销。
为改善上述技术问题,本发明提供了一种三角函数和双曲函数扩展指令计算装置及处理器核。
本发明实施例的第一方面,提供了一种三角函数和双曲函数扩展指令计算装置,包括控制信号生成模块、特殊角度判别模块、存储模块、迭代模块以及输出选择模块,
所述控制信号生成模块用于将扩展指令编码进行独热码编码,生成8位控制信号,其中只有一位为1,分别对应一种三角函数和或双曲函数扩展指令;
所述特殊角度判别模块用于对特殊角度进行判别,并向迭代模块发出特殊角度判别成功信号,将存储模块中特殊角度的函数计算值送给迭代模块,迭代周期缩减为1;
所述存储模块用于存储校正因子K和迭代过程中的旋转角度atan(2-i)和atanh(2-i),以及特殊角度的三角函数和双曲函数的计算结果;
所述迭代模块用于实现迭代计算,采用串行结构,本次迭代的输出作为下次迭代的输入,扩展的电路中包含两个迭代模块,三角函数迭代模块和双曲函数迭代模块;
所述输出选择模块用于根据控制模块中的使能信号输出结果。
进一步地,所述三角函数和双曲函数扩展指令计算装置基于CORDIC算法实现,通过进行一定周期的迭代计算的方式进行计算,通过连续多次小角度旋转的方法来逐渐逼近三角函数或双曲函数的实际值,并在完成所有迭代计算后输出计算结果。
进一步地,所述迭代模块进行迭代计算时,
三角函数迭代公式为:
Figure 378748DEST_PATH_IMAGE001
双曲函数迭代公式为:
Figure 277434DEST_PATH_IMAGE002
其中,i=0,1,2,3,...;xi,yi代表第i次迭代运算后的坐标值;θi代表第i次迭代运算后的剩余角度值;α=±1=Sign(θ)代表旋转方向,当α=1时,旋转方向为逆时针,当α=-1时,旋转方向为顺时针;atan(2-i)代表三角函数第i次旋转的角度,atanh(2-i)代表双曲函数第i次旋转的角度。
进一步地,在所述三角函数迭代公式和所述双曲函数迭代公式中,迭代公式中的初值,x0=1/K,K为校正因子,y0=0,θ0为计算角度,其中,
三角函数的校正因子为:
Figure DEST_PATH_IMAGE003
双曲函数的校正因子为:
Figure 191163DEST_PATH_IMAGE004
进一步地,所述迭代模块在完成33个固定周期迭代计算以后,通过所述控制信号输出计算结果,具体的输出方式为:
正弦与双曲正弦函数的计算结果通过y32输出,余弦与双曲余弦函数的计算结果通过x32输出。
进一步地,所述迭代模块在完成1至33个不固定周期迭代计算以后,通过所述控制信号输出计算结果,具体的输出方式为:
特殊角度的正弦与双曲正弦函数的计算结果通过y1输出,余弦与双曲余弦函数的计算结果通过x1输出,特殊角度的计算结果值由预先存储在所述存储模块中的特殊角度的计算结果确定;
非特殊角度的正弦与双曲正弦函数的计算结果通过y32输出,余弦与双曲余弦函数的计算结果通过x32输出。
进一步地,所述输出选择模块通过“异或门”或“或门”选择输出结果输出计算结果,并将计算结果写回寄存器中。
进一步地,所述输出选择模块通过MUX多路选择器输出计算结果,并将计算结果写回寄存器中。
本发明实施例的第二方面,提供了一种处理器核,包括取指单元、译码单元、执行单元和写回单元,所述处理器核中的应用程序配置为支持如第一方面所述的计算装置的扩展指令;所述取指单元用于从指令存储器中取出处理器核执行的指令;
进一步地,所述扩展指令编码选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型,包含rs1、rs2、rd、funct7、funct3和opcode信息,
其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
所述译码单元用于进行三角函数和双曲函数扩展指令的译码,包含opcode、funct3、funct7、rs1、rs2与rd信息。
所述写回单元中包含寄存器堆,用于进行所述扩展指令编码的寄存器读写操作;
所述执行单元包含CORDIC单元,所述CORDIC单元用于进行三角函数和双曲函数的计算。
采用上述技术方案,本发明具有如下有益效果:
本发明提供的三角函数和双曲函数扩展指令计算装置以及处理器核,对三角函数和双曲函数扩展指令计算装置的控制信号进行独热码编码,由于独热码只有一位为1,避免了对funct3信号的二次译码,从而节省硬件扩展电路的资源消耗。
本发明在三角函数和双曲函数扩展指令计算装置中添加了特殊角度判别模块,通过对0、±π/6、±π/4、±π/3、±π/2、±2π/3、±π5/6、±π3/4等特殊角度进行判别,并向迭代模块发出特殊角度判别成功信号,将存储模块中特殊角度的函数计算值送给迭代模块,迭代周期缩减为1,从而减少计算时间。
由于计算装置中的迭代模块采用串行结构,仅包含两个迭代模块,且三角函数迭代模块的输出同时包含正弦结果和余弦结果,双曲函数迭代模块的输出同时包含双曲正弦结果和双曲余弦结果,在遇到相同角度输入时,避免了重复计算,根据输出选择信号直接输出上一次的计算结果,在减少扩展电路资源消耗的同时,进一步减少计算时间。
此外,迭代公式中的2-i通过移位器实现,其余操作由加法器实现,由于处理器核中的算术逻辑单元(ALU)也包含移位器和加法器,因此在进行迭代计算时借用ALU的移位器和加法器,来完成部分迭代计算,从而实现扩展电路资源消耗的减少。
输出选择模块通过异或门对不同指令的输出进行选择,由于控制信号只有一位为1,只有被使能的指令执行模块有输出结果,其余指令输出结果均为0,使用异或门相较于MUX多路选择器可以有效缩短信号传输延时,从而提升电路工作频率。
由于迭代角度随着迭代次数的增加而减小,迭代次数越多,计算精度越高,迭代模块在计算特殊角度时,计算精度为0误差;在计算非特殊角度时通过33个固定迭代周期的迭代运算,保证了一个32位宽角度输入的三角函数和双曲函数的计算精度。
附图说明
图1为本发明实施例提供的三角函数和双曲函数扩展指令计算装置示意图;
图2为本发明实施例提供的迭代模块示意图;
图3为本发明实施例提供的处理器核组成示意图
图4为本发明实施例提供的R-type指令结构示意图;
图5为本发明实施例提供的三角函数和双曲函数扩展指令示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,术语 “顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
请参阅图1,本实施例提供的三角函数和双曲函数扩展指令计算装置,所述装置包括控制信号生成模块、特殊角度判别模块、存储模块、迭代模块以及输出选择模块,
所述控制信号生成模块用于将扩展指令编码进行独热码编码,生成8位控制信号,其中只有一位为1,分别对应一种三角函数和或双曲函数扩展指令;需要注意的是,作为本发明实施例的优选实施方式,使用扩展指令编码中的funct3在译码单元中生成独热码编码控制信号,由于独热码只有一位为1,避免了对funct3信号的二次译码,从而节省硬件扩展电路的资源消耗。
所述特殊角度判别模块用于的对特殊角度进行判别,并向迭代模块发出特殊角度判别成功信号,将存储模块中特殊角度的函数计算值送给迭代模块,迭代周期缩减为1,从而减少计算时间。其中,特殊角度包括0、±π/6、±π/4、±π/3、±π/2、±2π/3、±π5/6、±π3/4等在存储模块中已经保存了函数计算值的角度。
所述迭代模块用于实现迭代计算,采用串行结构,本次迭代的输出作为下次迭代的输入,扩展的电路中包含两个迭代模块,三角函数迭代模块和双曲函数迭代模块;所述迭代模块的结构如图2所示,扩展电路包含两个迭代模块,三角函数迭代模块和双曲函数迭代模块。另外,2-i通过移位运算实现,其余操作由加法器实现,由于处理器核中的算术逻辑单元(ALU)也包含移位器和加法器,因此在进行迭代计算时借用ALU的移位器和加法器,来完成部分迭代计算,从而实现扩展电路资源消耗的减少。
所述存储模块用于存储校正因子K和迭代过程中的旋转角度atan(2-i)和atanh(2-i),以及特殊角度的三角函数和双曲函数计算值。
作为本发明的优选实施方式,所述输出选择模块用于根据控制模块中的使能信号通过“异或门”或“或门”选择输出结果。由于控制信号只有一位为1,只有被使能的指令执行模块有输出结果,其余指令输出结果均为0,使用“异或门”或“或门”相较于MUX多路选择器可以有效缩短信号传输延时,从而提升电路工作频率。
本实施例中,三角函数和双曲函数扩展指令计算装置基于CORDIC算法实现,通过连续多次小角度旋转的方法来逐渐逼近三角函数或双曲函数的实际值。在收到译码模块送出的控制信号后,三角函数和双曲函数扩展指令计算装置进行通过进行一定周期的迭代计算的方式进行计算。然后输出计算结果。
三角函数迭代公式为:
Figure 935128DEST_PATH_IMAGE001
双曲函数迭代公式为:
Figure 47441DEST_PATH_IMAGE002
其中,i=0,1,2,3,...;xi,yi代表第i次迭代运算后的坐标值;θi代表第i次迭代运算后的剩余角度值;α=±1=Sign(θ)代表旋转方向,当α=1时,旋转方向为逆时针,当α=-1时,旋转方向为顺时针;atan(2-i)代表三角函数第i次旋转的角度,atanh(2-i)代表双曲函数第i次旋转的角度。
本实施例中迭代公式中的初值,x0=1/K,K为校正因子,y0=0,θ0为计算角度,其中,
三角函数的校正因子为:
Figure 648186DEST_PATH_IMAGE003
双曲函数的校正因子为:
Figure 580370DEST_PATH_IMAGE004
作为本发明实施例的其中一种实施方式,所述迭代模块在完成33个固定周期迭代计算以后,通过所述控制信号输出计算结果,具体的输出方式为:
正弦与双曲正弦函数的计算结果通过y32输出,余弦与双曲余弦函数的计算结果通过x32输出。该实施方式中,不进行特殊模块的判断。所述输出选择模块通过“异或门”或“或门”或MUX多路选择器输出计算结果,并将计算结果写回寄存器中。
作为本发明实施例的另一个实施方式,所述迭代模块在完成1至33个不固定周期迭代计算以后,通过所述控制信号输出计算结果,具体的输出方式为:
特殊角度的正弦与双曲正弦函数的计算结果通过y1输出,余弦与双曲余弦函数的计算结果通过x1输出,特殊角度的计算结果值由预先存储在所述存储模块中的特殊角度的计算结果确定;
非特殊角度的正弦与双曲正弦函数的计算结果通过y32输出,余弦与双曲余弦函数的计算结果通过x32输出。
该实施方式中,要先进行特殊角度的判断,如果是特殊角度,则迭代次数为1,直接从存储模块中获取对应数值计算结果。如果不是特殊角度,则进行33个周期的迭代计算。
计算完成后,所述输出选择模块通过“异或门”或“或门”或MUX多路选择器输出计算结果,并将计算结果写回寄存器中。
其中,特殊角度包括0、±π/6、±π/4、±π/3、±π/2、±2π/3、±π5/6、±π3/4等。
在上述基础上,如图3所示,本发明还提供了一种处理器核,包括取指单元、译码单元、执行单元和写回单元,所述处理器核中的应用程序配置为支持如上所述的计算装置的扩展指令;
所述取指单元用于从指令存储器中取出处理器核执行的指令;
所述译码单元用于进行三角函数和双曲函数扩展指令的译码,包含opcode、funct3、funct7、rs1、rs2与rd信息。
所述写回单元中包含寄存器堆,用于进行所述扩展指令编码的寄存器读写操作;
所述执行单元包含CORDIC单元,所述CORDIC单元用于进行三角函数和双曲函数的计算。
在本实施例中,执行单元中包含一个CORDIC单元,写回单元中包含寄存器堆,用来进行rs1、rs2、rd寄存器读写操作,所述的CORDIC单元使用前面所述的三角函数和双曲函数扩展指令计算装置。
RISC-V指令集的指令类型通常包括R-type、I-type、S-type、B-type、U-type 和J-type这几种,在本发明的实施例中,选择R-type作为扩展指令的指令类型。
本实施例中,所有指令的位宽为32位,三角函数和双曲函数均为计算指令,R-type(寄存器-寄存器类型)指令可以将三角函数和双曲函数的输入角度在寄存器中寄存,相较于I-type(立即数类型)指令,数据位宽更长,避免了输入精度较低造成的计算精度下降,R-type指令各个位的定义如图4所示。
本实施例中,所述扩展指令编码包含rs1、rs2、rd、funct7、funct3和opcode信息。其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。
作为本实施例的优选实施方式,rs1、rs2和rd寄存器地址位宽为5位,funct7的位宽为7位,funct3的位宽为3位,opcode的位宽为7位。
三角函数和双曲函数扩展指令如图5所示,三角函数和双曲函数扩展指令的opcode编码与R-type指令的opcode编码保持一致,定义为0110011;与RISC-V架构中硬件乘除法扩展指令的funct7(0000001)和基础指令集的funct7(0000000)相区分,三角函数和双曲函数扩展指令的funct7编码为0000010;三角函数和双曲函数扩展指令的funct3编码为000~111,000为有符号正弦指令,001为有符号余弦指令,010为无符号正弦指令,011为无符号余弦指令,100为有符号双曲正弦指令,101为有符号双曲余弦指令,110为无符号双曲正弦指令,111为无符号双曲余弦指令。
具体地,译码单元对三角函数和双曲函数扩展指令的opcode、rs1、rs2、rd、funct3和funct7进行译码。其中,opcode用于确定扩展指令的指令类型,三角函数和双曲函数扩展指令的指令类型为R-type;rs1和rs2用于记录源操作数的寄存器地址,译码后从寄存器堆中取出源操作数;rd用于记录目的寄存器的地址,在扩展指令结束后,将数据写回该地址对应的寄存器中;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令。译码完成后,生成控制信号送入执行单元。
在译码完成后,将生成的三角函数和双曲函数扩展指令的控制信号送入所述执行单元的三角函数和双曲函数扩展指令计算装置中,进行三角函数和双曲函数的计算并输出计算结果送入所述写回单元进行寄存器读写操作。
综上所述,本发明实施例提供了一种三角函数和双曲函数扩展指令计算装置及处理器核,对三角函数和双曲函数扩展指令计算装置的控制信号进行独热码编码,由于独热码只有一位为1,避免了对funct3信号的二次译码,从而节省硬件扩展电路的资源消耗。
本发明在三角函数和双曲函数扩展指令计算装置中添加了特殊角度判别模块,通过对0、±π/6、±π/4、±π/3、±π/2、±2π/3、±π5/6、±π3/4等特殊角度进行判别,并向迭代模块发出特殊角度判别成功信号,将存储模块中特殊角度的函数计算值送给迭代模块,迭代周期缩减为1,从而减少计算时间。
由于计算装置中的迭代模块采用串行结构,仅包含两个迭代模块,且三角函数迭代模块的输出同时包含正弦结果和余弦结果,双曲函数迭代模块的输出同时包含双曲正弦结果和双曲余弦结果,在遇到相同角度输入时,避免了重复计算,根据输出选择信号直接输出上一次的计算结果,在减少扩展电路资源消耗的同时,进一步减少计算时间。
此外,迭代公式中的2-i通过移位器实现,其余操作由加法器实现,由于处理器核中的算术逻辑单元(ALU)也包含移位器和加法器,因此在进行迭代计算时借用ALU的移位器和加法器,来完成部分迭代计算,从而实现扩展电路资源消耗的减少。
输出选择模块通过异或门对不同指令的输出进行选择,由于控制信号只有一位为1,只有被使能的指令执行模块有输出结果,其余指令输出结果均为0,使用异或门相较于传统选择电路MUX多路选择器可以有效缩短信号传输延时,从而提升电路工作频率。
由于迭代角度随着迭代次数的增加而减小,迭代次数越多,计算精度越高,迭代模块在计算特殊角度时,计算精度为0误差;在计算非特殊角度时通过33个固定迭代周期的迭代运算,保证了一个32位宽角度输入的三角函数和双曲函数的计算精度
最后应说明的是:在本申请所公开的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (9)

1.一种三角函数和双曲函数扩展指令计算装置,其特征在于,所述装置包括控制信号生成模块、特殊角度判别模块、存储模块、迭代模块以及输出选择模块,
所述控制信号生成模块的输入为扩展指令编码,输出为将扩展指令编码进行独热码编码生成的控制信号,输出端与所述特殊角度判别模块连接;所述特殊角度判别模块的输入为所述控制信号生成模块生成的控制信号以及外部输入的待计算的三角函数或双曲函数,输出端与所述迭代模块连接;所述迭代模块的输入端与所述迭代模块、所述存储模块连接,输出端与所述输出选择模块连接;
所述控制信号生成模块用于将扩展指令编码进行独热码编码,生成8位控制信号,其中只有一位为1,分别对应一种三角函数或双曲函数扩展指令;
所述特殊角度判别模块用于对待计算的三角函数或双曲函数的角度是否属于特殊角度进行判别,如果判别属于特殊角度,则向迭代模块发出特殊角度判别成功信号,将存储模块中特殊角度的函数计算值送给迭代模块,迭代周期缩减为1;如果判别不属于特殊角度,则直接将待计算的三角函数或双曲函数送入迭代模块进行迭代计算,
所述存储模块用于存储校正因子K和迭代过程中的旋转角度atan(2-i)和atanh(2-i),以及特殊角度的三角函数和双曲函数的计算结果;
所述迭代模块用于根据存储模块存储的数值以及待计算的三角函数或双曲函数的角度实现迭代计算,采用串行结构,本次迭代的输出作为下次迭代的输入,扩展的电路中包含两个迭代模块,三角函数迭代模块和双曲函数迭代模块;所述迭代模块包括算术逻辑单元以及两个加法器、一个移位器,所述算术逻辑单元包括一个加法器和一个位移器;所述迭代模块输入端为θi、atan(h)、xi、yi,输出端为θi+1、xi+1、yi+1,所述算术逻辑单元中加法器的两个输入端分别与迭代模块的θi、atan(h)连接,输出端为迭代模块的θi+1;所述算术逻辑单元中位移器的输入端与迭代模块的xi输入端连接,输出端为迭代模块的其中一个加法器的输入端,该加法器的另一输入端为迭代模块的yi输入端,输出端为迭代模块的xi+1输出端;迭代模块的另一个加法器的两个输入端分别是迭代模块的xi输入端以及迭代模块的yi经过位移器后的输出端,该加法器的输出端为迭代模块的yi+1输出端;其中,θi代表第i次迭代运算后的剩余角度值,θi+1代表第i+1次迭代运算后的剩余角度值,xi,yi代表第i次迭代运算后的坐标值,xi+1,yi+1代表第i+1次迭代运算后的坐标值,atan(h)迭代过程中的旋转角度;
所述输出选择模块用于根据所述控制信号生成模块输出的控制信号输出所述迭代模块对三角函数或双曲函数的计算结果。
2.根据权利要求1所述的三角函数和双曲函数扩展指令计算装置,其特征在于,所述三角函数和双曲函数扩展指令计算装置基于CORDIC算法实现,通过进行一定周期的迭代计算的方式进行计算,通过连续多次小角度旋转的方法来逐渐逼近三角函数或双曲函数的实际值,并在完成所有迭代计算后输出计算结果。
3.根据权利要求2所述的三角函数和双曲函数扩展指令计算装置,其特征在于,所述迭代模块进行迭代计算时,
三角函数迭代公式为:
Figure 658117DEST_PATH_IMAGE001
双曲函数迭代公式为:
Figure 584484DEST_PATH_IMAGE002
其中,i=0,1,2,3,...;xi,yi代表第i次迭代运算后的坐标值;θi代表第i次迭代运算后的剩余角度值;α=±1=Sign(θ)代表旋转方向,当α=1时,旋转方向为逆时针,当α=-1时,旋转方向为顺时针;atan(2-i)代表三角函数第i次旋转的角度,atanh(2-i)代表双曲函数第i次旋转的角度。
4.根据权利要求3所述的三角函数和双曲函数扩展指令计算装置,其特征在于,在所述三角函数迭代公式和所述双曲函数迭代公式中,迭代公式中的初值,x0=1/K,K为校正因子,y0=0,θ0为计算角度,其中,
三角函数的校正因子为:
Figure 930015DEST_PATH_IMAGE003
双曲函数的校正因子为:
Figure 18057DEST_PATH_IMAGE004
5.根据权利要求4所述的三角函数和双曲函数扩展指令计算装置,其特征在于,所述迭代模块在完成1或者33个周期迭代计算以后,通过所述控制信号输出计算结果,具体的输出方式为:
特殊角度的正弦与双曲正弦函数的计算结果通过y1输出,余弦与双曲余弦函数的计算结果通过x1输出,特殊角度的计算结果值由预先存储在所述存储模块中的特殊角度的计算结果确定;
非特殊角度的正弦与双曲正弦函数的计算结果通过y32输出,余弦与双曲余弦函数的计算结果通过x32输出;
其中,x1,y1代表第1次迭代运算后的坐标值,x32,y32代表第32次迭代运算后的坐标值。
6.根据权利要求5所述的三角函数和双曲函数扩展指令计算装置,其特征在于,所述输出选择模块通过“异或门”或“或门”选择输出结果输出计算结果,并将计算结果写回寄存器中。
7.根据权利要求5所述的三角函数和双曲函数扩展指令计算装置,其特征在于,所述输出选择模块通过MUX多路选择器输出计算结果,并将计算结果写回寄存器中。
8.一种处理器核,其特征在于,包括取指单元、译码单元、执行单元和写回单元,所述处理器核中的应用程序配置为支持如权利要求1-7任一项所述的三角函数和双曲函数扩展指令计算装置的扩展指令;所述取指单元用于从指令存储器中取出处理器核执行的指令。
9.根据权利要求8所述的处理器核,其特征在于,所述扩展指令编码选择RISC-V指令集的指令类型中的R-type作为扩展指令的指令类型,包含rs1、rs2、rd、funct7、funct3和opcode信息,其中,rs1用于记录源操作数1的寄存器地址,rs2用于记录源操作数2的寄存器地址,三角函数和双曲函数的输入角度值通过rs1寄存器存储的值与rs2寄存器存储的值相加得到;rd用于记录扩展指令执行完成后数据写回的目的寄存器地址;funct7用于指定R-type中的这一类指令为三角函数和双曲函数扩展指令;funct3用于区别不同三角函数和双曲函数扩展指令;
所述译码单元用于进行三角函数和双曲函数扩展指令的译码,包含opcode、funct3、funct7、rs1、rs2与rd信息;
所述写回单元中包含寄存器堆,用于进行所述扩展指令编码的寄存器读写操作;
所述执行单元包含CORDIC单元,所述CORDIC单元用于进行三角函数和双曲函数的计算。
CN202210633048.0A 2022-06-07 2022-06-07 一种三角函数和双曲函数扩展指令计算装置及处理器核 Active CN114707110B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210633048.0A CN114707110B (zh) 2022-06-07 2022-06-07 一种三角函数和双曲函数扩展指令计算装置及处理器核

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210633048.0A CN114707110B (zh) 2022-06-07 2022-06-07 一种三角函数和双曲函数扩展指令计算装置及处理器核

Publications (2)

Publication Number Publication Date
CN114707110A CN114707110A (zh) 2022-07-05
CN114707110B true CN114707110B (zh) 2022-08-30

Family

ID=82178053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210633048.0A Active CN114707110B (zh) 2022-06-07 2022-06-07 一种三角函数和双曲函数扩展指令计算装置及处理器核

Country Status (1)

Country Link
CN (1) CN114707110B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117633422B (zh) * 2023-11-29 2024-07-19 上海国微芯芯半导体有限公司 三角函数和双曲函数运算复用方法及装置、芯片、设备、介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236601A (zh) * 2008-03-11 2008-08-06 董亮 图像识别加速装置及具有图像识别加速装置的微处理器芯片
CN102981797A (zh) * 2012-11-02 2013-03-20 中国航天科技集团公司第九研究院第七七一研究所 基于cordic算法的反馈和流水线结构相结合的三角函数运算器
CN103699518A (zh) * 2013-12-26 2014-04-02 北京无线电计量测试研究所 一种三角函数的近似计算方法
CN107329732A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行多种超越函数运算的装置和方法
CN108733349A (zh) * 2018-07-27 2018-11-02 珠海市微半导体有限公司 一种基于定点数的三角函数运算电路
CN113138749A (zh) * 2021-04-09 2021-07-20 中科亿海微电子科技(苏州)有限公司 基于cordic算法的三角函数计算装置及方法
CN113837365A (zh) * 2021-09-22 2021-12-24 中科亿海微电子科技(苏州)有限公司 实现sigmoid函数逼近的模型、FPGA电路及工作方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4987448B2 (ja) * 2006-12-05 2012-07-25 東芝機械株式会社 速度検出装置
US8510354B1 (en) * 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8572151B2 (en) * 2010-03-15 2013-10-29 Integrated Device Technology, Inc. Methods and apparatuses for cordic processing
CN102542336A (zh) * 2011-12-23 2012-07-04 西安奇维科技股份有限公司 一种基于fpga 的三角函数实现方法
CN102722469A (zh) * 2012-05-28 2012-10-10 西安交通大学 基于浮点运算单元的基本超越函数运算方法及其协处理器
CN103677738B (zh) * 2013-09-26 2016-08-17 中国人民解放军国防科学技术大学 基于混合模式cordic算法的低延时基本超越函数实现方法及装置
CN111651200B (zh) * 2016-04-26 2023-09-26 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法
CN208834289U (zh) * 2018-07-27 2019-05-07 珠海市一微半导体有限公司 一种三角函数运算电路
CN109814836A (zh) * 2018-12-28 2019-05-28 中电科仪器仪表有限公司 一种基于区间划分和cordic的三角函数计算方法及装置
EP3928177A4 (en) * 2019-02-20 2022-11-16 Optimum Semiconductor Technologies Inc. DEVICE AND METHOD FOR CALCULATION OF ELEMENTARY FUNCTIONS USING A SUCCESSIVE ROTARY CUMULATIVE CIRCUIT
CN112650973B (zh) * 2019-10-11 2022-05-20 珠海格力电器股份有限公司 三角函数计算装置及电子设备
CN111061455A (zh) * 2019-12-04 2020-04-24 广东省新一代通信与网络创新研究院 一种三角函数cordic迭代运算协处理器
CN114721720B (zh) * 2022-06-07 2022-09-02 中科亿海微电子科技(苏州)有限公司 一种指令集扩展方法、装置、电子设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101236601A (zh) * 2008-03-11 2008-08-06 董亮 图像识别加速装置及具有图像识别加速装置的微处理器芯片
CN102981797A (zh) * 2012-11-02 2013-03-20 中国航天科技集团公司第九研究院第七七一研究所 基于cordic算法的反馈和流水线结构相结合的三角函数运算器
CN103699518A (zh) * 2013-12-26 2014-04-02 北京无线电计量测试研究所 一种三角函数的近似计算方法
CN107329732A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行多种超越函数运算的装置和方法
CN108733349A (zh) * 2018-07-27 2018-11-02 珠海市微半导体有限公司 一种基于定点数的三角函数运算电路
CN113138749A (zh) * 2021-04-09 2021-07-20 中科亿海微电子科技(苏州)有限公司 基于cordic算法的三角函数计算装置及方法
CN113837365A (zh) * 2021-09-22 2021-12-24 中科亿海微电子科技(苏州)有限公司 实现sigmoid函数逼近的模型、FPGA电路及工作方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Concept, Design, and Implementation of Reconfigurable CORDIC;P.K. MeherA等;《IEEE Transactions on Very Large Scale Integration (VLSI) Systems》;20150708;1588-1592 *
一种 CORDIC 协处理器核的设计与实现;邓 凌煊等;《电子设计工程》;20150130;第23卷(第02期);155-159 *
基于RISC-V的信号发生器的设计;陈亮;《内蒙古科技与经济》;20190130;70-72 *
基于自适应旋转角度的 CORDIC 算法的设计与仿真;李春娟等;《数字技术与应用》;20210430;第39卷(第04期);113-115 *
多核处理器中的超越函数协处理器设计;黄小康等;《微电子学与计算机》;20160505;42-46 *

Also Published As

Publication number Publication date
CN114707110A (zh) 2022-07-05

Similar Documents

Publication Publication Date Title
JP6333439B2 (ja) 命令に応じた丸め処理の実行
CN109643228B (zh) 用于浮点乘加运算的低能耗尾数乘法
KR101105527B1 (ko) 내적 연산을 수행하기 위한 명령 및 논리
JP4480997B2 (ja) Simd整数乗算上位丸めシフト
TWI544404B (zh) 用以加總三個源運算元的加總指令
CN112099852A (zh) 可变格式、可变稀疏矩阵乘法指令
CN114721720B (zh) 一种指令集扩展方法、装置、电子设备及存储介质
TW201717037A (zh) 用於緊耦合異質計算的硬體處理器及方法
CN107145335B (zh) 用于大整数运算的向量指令的装置和方法
CN103180820A (zh) 用于执行浮点除法的方法和装置
CN114707110B (zh) 一种三角函数和双曲函数扩展指令计算装置及处理器核
US7523152B2 (en) Methods for supporting extended precision integer divide macroinstructions in a processor
US8140608B1 (en) Pipelined integer division using floating-point reciprocal
CN111814093A (zh) 一种乘累加指令的处理方法和处理装置
US20200073635A1 (en) Systems, apparatuses, and methods for vector-packed fractional multiplication of signed words with rounding, saturation, and high-result selection
TW201339961A (zh) 用以執行兩向量暫存器之對應填充資料元件間絕對差計算之系統、裝置及方法
CN118092853B (zh) 基于risc-v浮点超越函数指令集扩展方法及装置
JP2006228190A (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
CN118276951B (zh) 基于risc-v的指令扩展方法及实现装置
Le-Huu et al. A proposed RISC instruction set architecture for the MAC unit of 32-bit VLIW DSP processor core
Le-Huu et al. Towards a RISC instruction set architecture for the 32-bit VLIW DSP processor core
CN109960486B (zh) 二进制数据处理方法及其装置、介质和系统
US11669586B2 (en) Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication
CN118779011A (zh) 数据归一化risc-v指令集扩展方法及硬件加速装置
CN118057308A (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