CN104156195B - 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法 - Google Patents

扩展双精度的80位浮点处理单元在处理器中的集成系统及方法 Download PDF

Info

Publication number
CN104156195B
CN104156195B CN201410410017.4A CN201410410017A CN104156195B CN 104156195 B CN104156195 B CN 104156195B CN 201410410017 A CN201410410017 A CN 201410410017A CN 104156195 B CN104156195 B CN 104156195B
Authority
CN
China
Prior art keywords
module
precision
operand
result
floating point
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
CN201410410017.4A
Other languages
English (en)
Other versions
CN104156195A (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.)
771 Research Institute of 9th Academy of CASC
Original Assignee
771 Research Institute of 9th Academy of CASC
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 771 Research Institute of 9th Academy of CASC filed Critical 771 Research Institute of 9th Academy of CASC
Priority to CN201410410017.4A priority Critical patent/CN104156195B/zh
Publication of CN104156195A publication Critical patent/CN104156195A/zh
Application granted granted Critical
Publication of CN104156195B publication Critical patent/CN104156195B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Advance Control (AREA)

Abstract

本发明公开了一种扩展双精度的80位浮点处理单元在处理器中的集成系统及方法,该方法将一条多精度浮点指令的执行状态转变为多个单周期指令的执行状态,其实现方式为,在公知的五级流水线处理器的基础上,增设一条四级浮点处理流水线和一个指令预译码模块,四级浮点处理流水线与整点流水线的后四级完全同步执行,指令预译码模块在整点流水线的取指级与译码级之间。该方法可使现有的仅支持单、双精度浮点运算的嵌入式处理器具备支持单、双及扩展双精度(80位)浮点运算的能力,将嵌入式处理器的计算精度提高了3个数量级,可满足现在及未来航空航天领域对计算精度的要求。

Description

扩展双精度的80位浮点处理单元在处理器中的集成系统及方法
技术领域
本发明属于嵌入式微处理器领域,涉及一种扩展双精度的80位浮点处理单元在处理器中的集成系统及方法。
背景技术
工程应用对嵌入式处理器的计算精度提出了更高的要求。一方面是由于实时图像处理、3D技术等多媒体技术的应用需求;另一方面是因为飞行控制、自动导航、姿态校准等航空、航天领域的发展要求。
当前仅有部分x86架构的CISC处理器支持80位扩展双精度浮点运算;而ARM、PowerPC、MIPS和SPARC V8等典型架构的嵌入式RISC处理器仅支持单、双精度的浮点运算。由于SPARC V8架构的开源、免费及高可靠性,基于V8架构的嵌入式处理器在国内外航空航天领域应用广泛,如航天771所的LCR3206RH、Atmel公司的AT697系列、Aeroflex公司的UT699系列,上述国内外各种型号的嵌入式V8处理器仅支持单精度或双精度的浮点运算,已逐渐不能满足未来航天领域对计算精度的要求。
文献“微处理器浮点IP核集成设计”公开了一种适用于x86指令集的80位FPU集成方案,该方案利用微指令控制器读取ROM中的浮点微指令码,在浮点微指令码的控制下完成FPU与整点单元IU的数据交换。该方法实现了80位FPU与IU的数据交互和异常处理,但是整个处理过程需要不断的读取ROM中的微指令码,从而消耗大量的处理器时间,效率较低。
文献“Scalable LEON 3 based SoC for Multiple Floating Point Operations”中给出了一种基于LEON 3(SPARC V8架构)的FPU集成方法。该方法将FPU作为AHB总线上的从机,通过LEON 3处理器向FPU写源操作、启动传输、读取结果等步骤完成FPU浮点运算。该方法实现简单,硬件消耗少,但是其需要LEON 3不断以访存指令干预运算,其效率仅为常规设计的1/4。
瑞典Gaisler研究所(已被美国Aeroflex收购)在其产品列表“GRLIB IP CoreUser’s Manual”中给出了适用于LEON处理器(SPARC V8架构)的单、双精度的FPU集成方案RGFPC、GRLFPC。用户只能获得其实现方案的网表文件(*.edf),无法得知其具体的实现方案,且上述RGFPC、GRLFPC仅支持单精度或者双精度的FPU集成,更高精度的FPU集成无法实现。
目前,FPU的设计技术比较成熟,专利“提高半规模双精度浮点乘法流水线效率的结构”(ZL01141498.7)、“一种浮点乘加融合单元的五级流水结构”(ZL20071009908.9)等均给出了高性能的浮点处理单元FPU的设计方案。然而,这些专利文献中均未给出如何让这些高效的FPU与处理器整点单元IU协同工作。
发明内容
本发明的目的在于克服上述现有技术的缺点,提供了一种扩展双精度的80位浮点处理单元在处理器中的集成系统及方法,该系统及方法可以使现有的仅支持单、双精度浮点运算的嵌入式处理器具备支持单、双及扩展双精度浮点运算的能力。
为达到上述目的,本发明所述的扩展双精度的80位浮点处理单元在处理器中的集成系统包括PC、五级流水线、四级浮点处理流水线及指令预译码模块,四级浮点处理流水线包括浮点控制模块、DP2模块、DP1模块、DP0模块、待集成的FPU及浮点寄存器组,PC的输出端与取指模块的输入端相连接,取指模块的输出端与指令预译码模块的输入端相连接,指令预译码模块的输出端分别与五级流水线的输入端及浮点控制模块的输入端相连接,浮点控制模块的浮点输出端依次经DP2模块及DP1模块与DP0模块的输入端相连接,指令预译码模块与浮点控制模块之间、指令控制模块与五级流水线之间、浮点控制模块与DP2模块之间、DP2模块与DP1模块之间以及DP1模块与DP0模块之间分别设有第一个级间寄存器、第二个级间寄存器、第三个级间寄存器、第四个级间寄存器及第五个级间寄存器,浮点控制模块的控制信号输出端与待集成的FPU的输入端相连接,待集成的FPU的输出端分别与DP2模块的输入端、DP1模块的输入端及DP0模块的输入端相连接,浮点寄存器组的输入端分别与各级间寄存器的输出端及待集成的FPU的输出端相连接。
所述浮点控制模块包括控制状态机、FPOP译码模块、地址生成器、相关判断模块、启动模块及原操作数寄存器,控制状态机与FPOP译码模块、地址生成器、相关判断模块、启动模块及原操作数寄存器相连接,地址生成器与FPOP译码模块、相关判断模块及启动模块相连接,启动模块与原操作数寄存器及待集成的FPU相连接。
本发明所述的扩展双精度的80位浮点处理单元在处理器中的集成方法包括以下步骤:
1)指令预译码模块将取值模块根据PC取回的指令进行预译码,当取回的指令为浮点指令时,则将所述浮点指令转发至四级浮点处理流水线上,并向五级流水线发送空指令,当取回的指令为整点指令时,则将fnull信号置为有效,使四级浮点处理水流线的时钟关闭;
2)四级浮点处理流水线中的FPOP译码模块对浮点指令进行逻辑判断,得源操作数的精度opf、目标操作数的精度dsz、源操作数的类型check、操作数寄存器号addr、指令精度ind及流水线挂起无效信号holdn,并将源操作数的类型check输入到相关判断模块中,将源操作数的精度opf及操作数寄存器号addr输入到地址生成器中,将目标操作数的精度dsz输入到控制状态机及地址生成器中,将指令精度ind及流水线挂起无效信号holdn输入到控制状态机中,其中,当浮点指令只需第一个源操作数时,则check=01;当浮点指令只需第二个源操作数,则check=10;当浮点指令需要第一个源操作数及第二个源操作数时,则check=11;当所需的源操作数为整型,则opf=00;当所需的源操作数为单精度,则opf=01;当所需的源操作数为双精度,则opf=10;当所需的源操作数为扩展双精度,则opf=11;当目标操作数为单精度或者整型,则dsz=00;当目标操作数为双精度,则dsz=10;当目标操作数为扩展双精度,则dsz=11;当指令精度为单精度,则ind=00;当指令精度为双精度,则ind=10;当指令精度为扩展双精度,则ind=11,将浮点指令中第一个源操作数的寄存器号、第二个源操作数的寄存器号及目标操作数的寄存器号拼接之后输出到地址生成器中;
3)设控制状态机转移条件101指浮点指令为单精度指令且holdn=1;控制状态机转移条件102指浮点指令为双或者扩展双精度指令且holdn=1;控制状态机转移条件103指浮点指令为双精度指令且holdn=1;控制状态机转移条件104指浮点指令为扩展双精度指令且holdn=1;控制状态机转移条件105为holdn=1;其中,控制状态机当转移条件101、转移条件105或转移条件103指浮点指令有效时,则状态机状态转移到state=00;当控制状态机转移条件104指浮点指令有效时,则状态机状态转移到state=10;当控制状态机转移条件102指浮点指令满足时,则状态机状态转移到state=01;
当state≠00时,控制状态机则将hold_pc置为高电平,禁止取指模块的输出信号指令PC的更新;
当state=00时,且opf=00或opf=01时,控制状态机则将write_reg置为高电平;
当state=00时,且opf=10,则判断目标操作数的精度,当此时目标操作数为双或者扩展双精度时,控制状态机则将write_reg置为高电平;
当state=00时,且当opf=11,则判断目标操作数的精度,当此时目标操作数的精度为扩展双精度时,控制状态机则将write_reg置为高电平;
当state=01时,且当opf=00、opf=01或opf=10时,控制状态机则将write_reg置为高电平;
当state=01时,且当opf=11,则判断目标操作数的精度,当此时目标操作数的精度为双或扩展双精度,控制状态机则将write_reg置为高电平;
当state=10时,控制状态机则将write_reg置为高电平;
最后控制状态机将状态标识state及目标操作数写使能write_reg均输入到各级间寄存器的输入端相连接,当holdn=1时,控制状态机则将状态标识state及目标操作数写使能write_reg向DP2模块传递;控制状态机将流水线挂起无效信号holdn输入到启动模块中,控制状态机将状态标识state输入到地址生成器、启动模块、源操作偶数寄存器;
4)地址生成器根据状态标识state、源操作数的寄存器号、目标操作数的寄存器号以及浮点类型,计算生成不同状态标识state下的源操作数及目标操作数对应的物理地址,并将第一源操作数的物理地址rs1、第二源操作数的物理地址rs2、目标操作数的物理地址rd输入至相关判断模块中;具体的,
当状态标识state=01时,且当源操作数为双或扩展双精度,地址生成器则将当前源操作数寄存器号+1之后的结果作为源操作数物理地址输入至相关判断模块中;
当状态标识state=10时,且当源操作数为扩展双精度,地址生成器则将当前源操作数寄存器号+2之后的结果作为源操作数物理地址输入至相关判断模块中;
当state=01时,且当目标操作数为双或扩展双精度,地址生成器则将当前目标操作数寄存器号+1之后的结果作为目标操作数物理地址输入至相关判断模块中;
当state=10时,且当目标操作数为扩展双精度,地址生成器则将当前目标操作数寄存器号+2之后的结果作为目标操作数物理地址输入至判断模块中;
5)所述相关判断模块接收五级流水线的标志信号ctrl,然后根据标志信号ctrl和源操作数的类型check判断四级浮点流水线中是否存在控制相关及数据相关,当存在控制相关及数据相关时,则产生lock_pc信号,并通过lock_pc信号禁止取指模块指令PC更新;当不存在数据相关或控制相关时,则从浮点寄存器组中读取32位操作数rs1_data及rs2_data,然后将读取的32位操作数rs1_data及rs2_data接入到源操作数寄存器的输入端;
6)所述源操作数寄存器根据状态标识state和源操作数的精度opf将源操作数rs1_data及rs2_data保存到源操作数寄存器的相应位置,具体的,当state=00时,将rs1_data及rs2_data保存到源操作数寄存器的低32位;当state=01时,且当源操作数为双或者扩展双精度,则将rs1_data及rs2_data保存到源操作数寄存器的中间32位;当state=10时,且当源操作数为扩展双精度,则将rs1_data及rs2_data保存到源操作数寄存器的高15位,否则,源操作数寄存器保持不变;
7)当state=00时,且当源操作数为单精度且holdn=1,则启动模块将fp_start置为高电平;当state=01时,且当源操作数为双精度以及holdn=1时,启动模块则将fp_start置为高电平;当state=“10”时,且源操作数为扩展双精度以及holdn=1,则启动模块将fp_start为高电平,当fp_start为高电平时,待集成的FPU对fp_start进行计算,得计算结果fpuo_result;
8)所述DP2模块输入待集成的FPU的计算结果fpuo_result、异常情况fpuo_excep、控制状态机输出的目标操作数写使能write_reg、状态标识state、opf、dsz以及浮点寄存器组输出的异常屏蔽位fsr_tem;
当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电平;字选择模块选择根据state、opf、dsz及write_reg的组合作为32位result的选择使能,将目标操作数物理地址rd对应的浮点结果输出到32位result,32位result将所述浮点结果经第三个级间寄存器输入到DP1模块中;将异常标志信号trap输入到五级流水线的异常处理级,然后将state及目标操作数写使能write_reg经第三级间寄存器输入到DP1模块中;
9)所述DP1模块输入待集成的FPU输出的计算结果fpuo_result和异常情况fpuo_excep、DP2模块输出的state、write_reg、opf、dsz及浮点结果、以及浮点寄存器组输出的异常屏蔽位fsr_tem;
当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电平,同时DP1模块将目标操作数写使能write_reg及state经第四个级间寄存器输入到DP0模块中,同时字选择电路选择与目标操作数物理地址rd对应的浮点结果输出到32位result,32位result将所述浮点结果输入到DP0模块中result;
10)所述DP0模块输入到待集成的FPU输出的计算结果fpuo_result及异常情况fpuo_excep、DP1模块输出的state、目标操作数写使能write_reg、opf、dsz以及up_result、以及浮点寄存器组输出的异常屏蔽位fsr_tem,DP0模块内的字选择电路选择与目标操作数物理地址rd对应的浮点结果,当目标操作数写使能write_reg为高电平,不同state下目标操作数物理地址rd对应32位result则将对应的浮点结果输入到浮点寄存器组的浮点寄存器中。
所述DP2模块选择与目标操作数物理地址rd对应的浮点结果result的具体步骤包括:
所述DP2模块检测第一个级间寄存器输出的目标操作数写使能控制状态机输出的目标操作数写使能write_reg是否为高电平,若控制状态机输出的目标操作数写使能write_reg不是高电平时,则将直接将目标操作数物理地址rd对应的浮点结果输出到DP1模块中;当控制状态机输出的目标操作数写使能write_reg为高电平时,则检测控制状态机输出的opf、dsz及state,当opf为单精度或者整型时,且当dsz为单精度,则将1位符号位、8位指数位和23位小数位的拼接,并将拼接后的结果作为浮点结果输出到DP1模块中;当opf为单精度或者整型时,且当dsz为双精度以及state=01,则将32位小数位作为浮点结果输出到DP1中;当opf为单精度或者整型时,且当dsz为扩展双精度以及state=10,则将16位小数位及16位二进制0拼接起来作为浮点结果输出到DP1中;
当opf为双精度时,则检测控制状态机输出的state及dsz的类型,当控制状态机输出的state=01,且dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接的结果作为浮点结果输出到DP1模块中,当控制状态机输出的state=01,且dsz为双精度时,则将32位小数位作为浮点结果输出到DP1模块中;当控制状态机输出的state=01,且dsz不为双精度及单精度时,则将DP2模块输出的浮点结果保持不变;
当opf为双精度时,且当控制状态机输出的state=10以及dsz为扩展单精度,则将16位小数位及16位二进制0作为浮点结果输出到DP1模块中,当pf为双精度时,且当控制状态机输出的state=10以及dsz不为扩展单精度,则将32为result内的所有内容作为浮点结果输出到DP1模块中;
当opf为扩展双精度,且当state=10及dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接的结果作为浮点结果输出到DP1模块中,当opf为扩展双精度,且当state=10及dsz为双精度时,则将32位小数位作为浮点结果输出到DP1模块中;当opf为扩展双精度,且当state=10及dsz为扩展双精度时,则将16位小数位及16位二进制0作为浮点结果输出到DP1模块中;当opf为扩展双精度,且当state≠10时,则将DP2模块输出的浮点结果保持不变。
所述DP1模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步骤:
判断输入到DP1模块内的write_reg是否为高电平,当输入到DP1模块内的write_reg为低电平时,DP1模块将DP2模块输出的浮点结果转发至DP0模块中,当输入到DP1模块内的write_reg为高电平时,则检测输入到DP1模块内的opf,当输入到DP1模块内的opf为单精度或者整型时,则判断输入到DP1模块内的dsz的类型,当输入到DP1模块内的dsz为双精度,且state=00,则将1位符号位、11位指数位及20位小数位拼接起来输出到DP0模块中;当输入到DP1模块内的dsz为扩展双精度,且state=01,则将32位小数位转发至DP0模块中;当输入到DP1模块内的dsz不为双精度或扩展双精度时,则将DP1模块输出的浮点结果保持不变;
当opf为扩展双精度时,则检测目标操作数精度dsz的类型,当dsz为双精度,且state=01,则1位符号位、11位指数位及20位小数位拼接的结果输出到DP0模块中;当dsz为扩展双精度,且state=01,则将32位小数位输出到DP0模块中;当dsz不为双精度或扩展双精度时,DP1模块输出的浮点结果保持不变。
所述DP0模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步骤:
DP0模块判断DP1输出的目标操作数写使能write_reg是否为高电平,当DP1输出的目标操作数写使能write_reg为低电平时,DP0模块输出的浮点结果保持不变;
当DP1输出的目标操作数写使能write_reg为高电平时,则检测DP1模块输出的目标操作数精度dsz的类型,当DP1模块输出的目标操作数精度dsz为扩展双精度,则将1位符号位、5位指数位及16位小数位拼接的结果输出到浮点寄存器组;当DP0模块输出的目标操作数精度dsz不为扩展双精度时,DP模块输出的浮点结果保持不变。
所述控制相关为五级流水线中存在浮点访存指令;所述数据相关为当前指令的源操作数物理地址与后级流水中目标操作数物理地址相同。
本发明具有以下有益效果:
本发明所述的扩展双精度的80位浮点处理单元在处理器中的集成系统及方法在五级流水线上增设一条四级浮点处理流水线,并通过指令预译码模块进行调整,通过四级浮点处理流水线,采用三个DP模块完成对浮点运算结果的寄存,并最后以流水化形成写入浮点寄存器组中,从而可以使现有的仅支持单、双精度浮点运算的嵌入式处理器具备支持单、双及扩展双精度(80位)浮点运算的能力,将嵌入式处理器的计算精度提高了3个数量级,可满足现在及未来航空航天领域对计算精度的要求。同时本发明将一条多精度浮点指令的执行状态转变为多个单周期指令的执行状态,控制简单,实现效率高,硬件消耗少。
附图说明
图1为本发明的结构示意图;
图2为本发明中四级浮点处理流水线中浮点控制模块的电路框图;
图3为本发明中四级浮点控制模块中控制状态机的状态转换图;
图4为本发明中四级浮点处理流水线中DP2的电路框图;
图5为本发明中四级浮点处理流水线中DP1和DP0的电路框图;
图6为本发明中源、目标均为扩展双精度的浮点指令执行示意图;
图7为本发明中源单精度、目标扩展双精度的浮点指令示意图。
具体实施方式
下面结合附图对本发明做进一步详细描述:
参考图1及图2,本发明所述的扩展双精度的80位浮点处理单元在处理器中的集成系统包括PC、五级流水线、四级浮点处理流水线及指令预译码模块,四级浮点处理流水线包括浮点控制模块、DP2模块、DP1模块、DP0模块、待集成的FPU及浮点寄存器组,PC的输出端与取指模块的输入端相连接,取指模块的输出端与指令预译码模块的输入端相连接,指令预译码模块的输出端分别与五级流水线的输入端及浮点控制模块的输入端相连接,浮点控制模块的浮点输出端依次经DP2模块及DP1模块与DP0模块的输入端相连接,指令预译码模块与浮点控制模块之间、指令控制模块与五级流水线之间、浮点控制模块与DP2模块之间、DP2模块与DP1模块之间以及DP1模块与DP0模块之间分别设有第一个级间寄存器、第二个级间寄存器、第三个级间寄存器、第四个级间寄存器及第五个级间寄存器,浮点控制模块的控制信号输出端与待集成的FPU的输入端相连接,待集成的FPU的输出端分别与DP2模块的输入端、DP1模块的输入端及DP0模块的输入端相连接,浮点寄存器组的输入端分别与各级间寄存器的输出端及待集成的FPU的输出端相连接。
需要说明的是,所述浮点控制模块包括控制状态机、FPOP译码模块、地址生成器、相关判断模块、启动模块及原操作数寄存器,控制状态机与FPOP译码模块、地址生成器、相关判断模块、启动模块及原操作数寄存器相连接,地址生成器与FPOP译码模块、相关判断模块及启动模块相连接,启动模块与原操作数寄存器及待集成的FPU相连接。
所述五级流水线包含取指级、译码级、执行级、存储器访问级和回写级,各级之间通过级间寄存器依次相连,其中后四级为译码级、执行级、存储器访问级和回写级。
所述的指令预译码模块通过V8手册所示的指令op和op3域进行判断,如果取回的指令为浮点指令,则将指令发射到四级浮点处理流水线上,并向五级流水线发送空指令(不执行任何操作的指令);否则将指令发射到整点流水线,并将fnull信号置有效(高电平)。fnull为高电平时,则关闭浮点处理流水线的中所有部件的时钟,降低系统功耗。
另外,所述的四级浮点处理流水线,其不但与五级流水线共用取指模块,而且与整点流水线严格同步,当流水线阻塞(hold_pc或lock_pc为高电平)时,会阻止取指PC的更新,保证浮点处理流水线与整点流水线的同步。
所述待集成的FPU为待集成的80位FPU,该待集成的FPU实现了38条V8浮点运算类指令(算术、逻辑、乘除、开方、比较、转移等),浮点访存指令(LDF、STF、LDFSR、STFSR等)由五级流水线实现,待集成的FPU输出的结果和异常标志位同时连接至DP2模块、DP1模块、DP0模块,待集成的FPU输出的条件码连接至浮点寄存器组的FSR。
所述浮点寄存器组,包含32个32位的浮点寄存器和一个浮点状态寄存器FSR。浮点控制模块从浮点寄存器中读取源操作数,DP模块将目的操作数(即计算结果)写回到浮点寄存器。DP模块会读取FSR中的异常屏蔽位fsr_tem,用以判断浮点计算是否产生需要向处理器报告的异常。
参考图3、图4及图5,本发明所述的扩展双精度的80位浮点处理单元在处理器中的集成方法包括以下步骤:
1)指令预译码模块将取值模块根据PC取回的指令进行预译码,当取回的指令为浮点指令时,则将所述浮点指令转发至四级浮点处理流水线上,并向五级流水线发送空指令,当取回的指令为整点指令时,则将fnull信号置为有效,使四级浮点处理水流线的时钟关闭;
2)四级浮点处理流水线中的FPOP译码模块对浮点指令进行逻辑判断,得源操作数的精度opf、目标操作数的精度dsz、源操作数的类型check、操作数寄存器号addr、指令精度ind及流水线挂起无效信号holdn,并将源操作数的类型check输入到相关判断模块中,将源操作数的精度opf及操作数寄存器号addr输入到地址生成器中,将目标操作数的精度dsz输入到控制状态机及地址生成器中,将指令精度ind及流水线挂起无效信号holdn输入到控制状态机中,其中,当浮点指令只需第一个源操作数时,则check=01;当浮点指令只需第二个源操作数,则check=10;当浮点指令需要第一个源操作数及第二个源操作数时,则check=11;当所需的源操作数为整型,则opf=00;当所需的源操作数为单精度,则opf=01;当所需的源操作数为双精度,则opf=10;当所需的源操作数为扩展双精度,则opf=11;当目标操作数为单精度或者整型,则dsz=00;当目标操作数为双精度,则dsz=10;当目标操作数为扩展双精度,则dsz=11;当指令精度为单精度,则ind=00;当指令精度为双精度,则ind=10;当指令精度为扩展双精度,则ind=11,将浮点指令中第一个源操作数的寄存器号、第二个源操作数的寄存器号及目标操作数的寄存器号拼接之后输出到地址生成器中;
3)设控制状态机转移条件101指浮点指令为单精度指令且holdn=1;控制状态机转移条件102指浮点指令为双或者扩展双精度指令且holdn=1;控制状态机转移条件103指浮点指令为双精度指令且holdn=1;控制状态机转移条件104指浮点指令为扩展双精度指令且holdn=1;控制状态机转移条件105为holdn=1;其中,控制状态机当转移条件101、转移条件105或转移条件103指浮点指令有效时,则状态机状态转移到state=00;当控制状态机转移条件104指浮点指令有效时,则状态机状态转移到state=10;当控制状态机转移条件102指浮点指令满足时,则状态机状态转移到state=01;
当state≠00时,控制状态机则将hold_pc置为高电平,禁止取指模块的输出信号指令PC的更新;
当state=00时,且opf=00或opf=01时,控制状态机则将write_reg置为高电平;
当state=00时,且opf=10,则判断目标操作数的精度,当此时目标操作数为双或者扩展双精度时,控制状态机则将write_reg置为高电平;
当state=00时,且当opf=11,则判断目标操作数的精度,当此时目标操作数的精度为扩展双精度时,控制状态机则将write_reg置为高电平;
当state=01时,且当opf=00、opf=01或opf=10时,控制状态机则将write_reg置为高电平;
当state=01时,且当opf=11,则判断目标操作数的精度,当此时目标操作数的精度为双或扩展双精度,控制状态机则将write_reg置为高电平;
当state=10时,控制状态机则将write_reg置为高电平;
最后控制状态机将状态标识state及目标操作数写使能write_reg均输入到各级间寄存器的输入端相连接,当holdn=1时,控制状态机则将状态标识state及目标操作数写使能write_reg向DP2模块传递;控制状态机将流水线挂起无效信号holdn输入到启动模块中,控制状态机将状态标识state输入到地址生成器、启动模块、源操作偶数寄存器;
4)地址生成器根据状态标识state、源操作数的寄存器号、目标操作数的寄存器号以及浮点类型,计算生成不同状态标识state下的源操作数及目标操作数对应的物理地址,并将第一源操作数的物理地址rs1、第二源操作数的物理地址rs2、目标操作数的物理地址rd输入至相关判断模块中;具体的,
当状态标识state=01时,且当源操作数为双或扩展双精度,地址生成器则将当前源操作数寄存器号+1之后的结果作为源操作数物理地址输入至相关判断模块中;
当状态标识state=10时,且当源操作数为扩展双精度,地址生成器则将当前源操作数寄存器号+2之后的结果作为源操作数物理地址输入至相关判断模块中;
当state=01时,且当目标操作数为双或扩展双精度,地址生成器则将当前目标操作数寄存器号+1之后的结果作为目标操作数物理地址输入至相关判断模块中;
当state=10时,且当目标操作数为扩展双精度,地址生成器则将当前目标操作数寄存器号+2之后的结果作为目标操作数物理地址输入至判断模块中;
5)所述相关判断模块接收五级流水线的标志信号ctrl,然后根据标志信号ctrl和源操作数的类型check判断四级浮点流水线中是否存在控制相关及数据相关,当存在控制相关及数据相关时,则产生lock_pc信号,并通过lock_pc信号禁止取指模块指令PC更新;当不存在数据相关或控制相关时,则从浮点寄存器组中读取32位操作数rs1_data及rs2_data,然后将读取的32位操作数rs1_data及rs2_data接入到源操作数寄存器的输入端;
6)所述源操作数寄存器根据状态标识state和源操作数的精度opf将源操作数rs1_data及rs2_data保存到源操作数寄存器的相应位置,具体的,当state=00时,将rs1_data及rs2_data保存到源操作数寄存器的低32位;当state=01时,且当源操作数为双或者扩展双精度,则将rs1_data及rs2_data保存到源操作数寄存器的中间32位;当state=10时,且当源操作数为扩展双精度,则将rs1_data及rs2_data保存到源操作数寄存器的高15位,否则,源操作数寄存器保持不变;
7)当state=00时,且当源操作数为单精度且holdn=1,则启动模块将fp_start置为高电平;当state=01时,且当源操作数为双精度以及holdn=1时,启动模块则将fp_start置为高电平;当state=“10”时,且源操作数为扩展双精度以及holdn=1,则启动模块将fp_start为高电平,当fp_start为高电平时,待集成的FPU对fp_start进行计算,得计算结果fpuo_result;
8)所述DP2模块输入待集成的FPU的计算结果fpuo_result、异常情况fpuo_excep、控制状态机输出的目标操作数写使能write_reg、状态标识state、opf、dsz以及浮点寄存器组输出的异常屏蔽位fsr_tem;
当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电平;字选择模块选择根据state、opf、dsz及write_reg的组合作为32位result的选择使能,将目标操作数物理地址rd对应的浮点结果输出到32位result,32位result将所述浮点结果经第三个级间寄存器输入到DP1模块中;将异常标志信号trap输入到五级流水线的异常处理级,然后将state及目标操作数写使能write_reg经第三级间寄存器输入到DP1模块中;
9)所述DP1模块输入待集成的FPU输出的计算结果fpuo_result和异常情况fpuo_excep、DP2模块输出的state、write_reg、opf、dsz及浮点结果、以及浮点寄存器组输出的异常屏蔽位fsr_tem;
当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电平,同时DP1模块将目标操作数写使能write_reg及state经第四个级间寄存器输入到DP0模块中,同时字选择电路选择与目标操作数物理地址rd对应的浮点结果输出到32位result,32位result将所述浮点结果输入到DP0模块中result;
10)所述DP0模块输入到待集成的FPU输出的计算结果fpuo_result及异常情况fpuo_excep、DP1模块输出的state、目标操作数写使能write_reg、opf、dsz以及up_result、以及浮点寄存器组输出的异常屏蔽位fsr_tem,DP0模块内的字选择电路选择与目标操作数物理地址rd对应的浮点结果,当目标操作数写使能write_reg为高电平,不同state下目标操作数物理地址rd对应32位result则将对应的浮点结果输入到浮点寄存器组的浮点寄存器中。
所述DP2模块选择与目标操作数物理地址rd对应的浮点结果result的具体步骤包括:
所述DP2模块检测第一个级间寄存器输出的目标操作数写使能控制状态机输出的目标操作数写使能write_reg是否为高电平,若控制状态机输出的目标操作数写使能write_reg不是高电平时,则将直接将目标操作数物理地址rd对应的浮点结果输出到DP1模块中;当控制状态机输出的目标操作数写使能write_reg为高电平时,则检测控制状态机输出的opf、dsz及state,当opf为单精度或者整型时,且当dsz为单精度,则将1位符号位、8位指数位和23位小数位的拼接,并将拼接后的结果作为浮点结果输出到DP1模块中;当opf为单精度或者整型时,且当dsz为双精度以及state=01,则将32位小数位作为浮点结果输出到DP1中;当opf为单精度或者整型时,且当dsz为扩展双精度以及state=10,则将16位小数位及16位二进制0拼接起来作为浮点结果输出到DP1中;
当opf为双精度时,则检测控制状态机输出的state及dsz的类型,当控制状态机输出的state=01,且dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接的结果作为浮点结果输出到DP1模块中,当控制状态机输出的state=01,且dsz为双精度时,则将32位小数位作为浮点结果输出到DP1模块中;当控制状态机输出的state=01,且dsz不为双精度及单精度时,则将DP2模块输出的浮点结果保持不变;
当opf为双精度时,且当控制状态机输出的state=10以及dsz为扩展单精度,则将16位小数位及16位二进制0作为浮点结果输出到DP1模块中,当pf为双精度时,且当控制状态机输出的state=10以及dsz不为扩展单精度,则将32为result内的所有内容作为浮点结果输出到DP1模块中;
当opf为扩展双精度,且当state=10及dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接的结果作为浮点结果输出到DP1模块中,当opf为扩展双精度,且当state=10及dsz为双精度时,则将32位小数位作为浮点结果输出到DP1模块中;当opf为扩展双精度,且当state=10及dsz为扩展双精度时,则将16位小数位及16位二进制0作为浮点结果输出到DP1模块中;当opf为扩展双精度,且当state≠10时,则将DP2模块输出的浮点结果保持不变。
所述DP1模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步骤:
判断输入到DP1模块内的write_reg是否为高电平,当输入到DP1模块内的write_reg为低电平时,DP1模块将DP2模块输出的浮点结果转发至DP0模块中,当输入到DP1模块内的write_reg为高电平时,则检测输入到DP1模块内的opf,当输入到DP1模块内的opf为单精度或者整型时,则判断输入到DP1模块内的dsz的类型,当输入到DP1模块内的dsz为双精度,且state=00,则将1位符号位、11位指数位及20位小数位拼接起来输出到DP0模块中;当输入到DP1模块内的dsz为扩展双精度,且state=01,则将32位小数位转发至DP0模块中;当输入到DP1模块内的dsz不为双精度或扩展双精度时,则将DP1模块输出的浮点结果保持不变;
当opf为扩展双精度时,则检测目标操作数精度dsz的类型,当dsz为双精度,且state=01,则1位符号位、11位指数位及20位小数位拼接的结果输出到DP0模块中;当dsz为扩展双精度,且state=01,则将32位小数位输出到DP0模块中;当dsz不为双精度或扩展双精度时,DP1模块输出的浮点结果保持不变。
所述DP0模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步骤:
DP0模块判断DP1输出的目标操作数写使能write_reg是否为高电平,当DP1输出的目标操作数写使能write_reg为低电平时,DP0模块输出的浮点结果保持不变;
当DP1输出的目标操作数写使能write_reg为高电平时,则检测DP1模块输出的目标操作数精度dsz的类型,当DP1模块输出的目标操作数精度dsz为扩展双精度,则将1位符号位、5位指数位及16位小数位拼接的结果输出到浮点寄存器组;当DP0模块输出的目标操作数精度dsz不为扩展双精度时,DP模块输出的浮点结果保持不变。
所述控制相关为五级流水线中存在浮点访存指令;所述数据相关为当前指令的源操作数物理地址与后级流水中目标操作数物理地址相同。
该发明专利的有益效果如图6和7所示。基于该发明公开的技术方法将一款MEIKO接口的扩展双精度FPU集成到一款国产嵌入式V8处理器中,图6为源操作数和目标操作数均为扩展双精度的浮点加法仿真波形图,图7为源操作数为单精度、目标操作数为扩展双精度的浮点开方仿真波形图,仿真验证结果证明,该技术方案可以将高精度FPU集成到处理器中,将处理器计算精度提高3个数量级。目前,应用本发明实现的高精度处理器芯片已经流片,并成功应用的某型号任务中。

Claims (5)

1.一种扩展双精度的80位浮点处理单元在处理器中的集成方法,其特征在于,基于扩展双精度的80位浮点处理单元在处理器中的集成系统,所述扩展双精度的80位浮点处理单元在处理器中的集成系统包括PC、五级流水线、四级浮点处理流水线及指令预译码模块,四级浮点处理流水线包括浮点控制模块、DP2模块、DP1模块、DP0模块、待集成的FPU及浮点寄存器组,PC的输出端与取指模块的输入端相连接,取指模块的输出端与指令预译码模块的输入端相连接,指令预译码模块的输出端分别与五级流水线的输入端及浮点控制模块的输入端相连接,浮点控制模块的浮点输出端依次经DP2模块及DP1模块与DP0模块的输入端相连接,指令预译码模块与浮点控制模块之间、指令控制模块与五级流水线之间、浮点控制模块与DP2模块之间、DP2模块与DP1模块之间以及DP1模块与DP0模块之间分别设有第一个级间寄存器、第二个级间寄存器、第三个级间寄存器、第四个级间寄存器及第五个级间寄存器,浮点控制模块的控制信号输出端与待集成的FPU的输入端相连接,待集成的FPU的输出端分别与DP2模块的输入端、DP1模块的输入端及DP0模块的输入端相连接,浮点寄存器组的输入端分别与各级间寄存器的输出端及待集成的FPU的输出端相连接;
所述浮点控制模块包括控制状态机、FPOP译码模块、地址生成器、相关判断模块、启动模块及源操作数寄存器,控制状态机与FPOP译码模块、地址生成器、相关判断模块、启动模块及源操作数寄存器相连接,地址生成器与FPOP译码模块、相关判断模块及启动模块相连接,启动模块与源操作数寄存器及待集成的FPU相连接;
包括以下步骤:
1)指令预译码模块将取值模块根据PC取回的指令进行预译码,当取回的指令为浮点指令时,则将所述浮点指令转发至四级浮点处理流水线上,并向五级流水线发送空指令,当取回的指令为整点指令时,则将fnull信号置为有效,使四级浮点处理水流线的时钟关闭;
2)四级浮点处理流水线中的FPOP译码模块对浮点指令进行逻辑判断,得源操作数的精度opf、目标操作数的精度dsz、源操作数的类型check、操作数寄存器号addr、指令精度ind及流水线挂起无效信号holdn,并将源操作数的类型check输入到相关判断模块中,将源操作数的精度opf及操作数寄存器号addr输入到地址生成器中,将目标操作数的精度dsz输入到控制状态机及地址生成器中,将指令精度ind及流水线挂起无效信号holdn输入到控制状态机中,其中,当浮点指令只需第一个源操作数时,则check=01;当浮点指令只需第二个源操作数,则check=10;当浮点指令需要第一个源操作数及第二个源操作数时,则check=11;当所需的源操作数为整型,则opf=00;当所需的源操作数为单精度,则opf=01;当所需的源操作数为双精度,则opf=10;当所需的源操作数为扩展双精度,则opf=11;当目标操作数为单精度或者整型,则dsz=00;当目标操作数为双精度,则dsz=10;当目标操作数为扩展双精度,则dsz=11;当指令精度为单精度,则ind=00;当指令精度为双精度,则ind=10;当指令精度为扩展双精度,则ind=11,将浮点指令中第一个源操作数的寄存器号、第二个源操作数的寄存器号及目标操作数的寄存器号拼接之后输出到地址生成器中;
3)设控制状态机转移条件101指浮点指令为单精度指令且holdn=1;控制状态机转移条件102指浮点指令为双或者扩展双精度指令且holdn=1;控制状态机转移条件103指浮点指令为双精度指令且holdn=1;控制状态机转移条件104指浮点指令为扩展双精度指令且holdn=1;控制状态机转移条件105为holdn=1;其中,控制状态机当转移条件101、转移条件105或转移条件103指浮点指令有效时,则状态机状态转移到state=00;当控制状态机转移条件104指浮点指令有效时,则状态机状态转移到state=10;当控制状态机转移条件102指浮点指令满足时,则状态机状态转移到state=01;
当state≠00时,控制状态机则将hold_pc置为高电平,禁止取指模块的输出信号指令PC的更新;
当state=00时,且opf=00或opf=01时,控制状态机则将write_reg置为高电平;
当state=00时,且opf=10,则判断目标操作数的精度,当此时目标操作数为双或者扩展双精度时,控制状态机则将write_reg置为高电平;
当state=00时,且当opf=11,则判断目标操作数的精度,当此时目标操作数的精度为扩展双精度时,控制状态机则将write_reg置为高电平;
当state=01时,且当opf=00、opf=01或opf=10时,控制状态机则将write_reg置为高电平;
当state=01时,且当opf=11,则判断目标操作数的精度,当此时目标操作数的精度为双或扩展双精度,控制状态机则将write_reg置为高电平;
当state=10时,控制状态机则将write_reg置为高电平;
最后控制状态机将状态标识state及目标操作数写使能write_reg均输入到各级间寄存器的输入端相连接,当holdn=1时,控制状态机则将状态标识state及目标操作数写使能write_reg向DP2模块传递;控制状态机将流水线挂起无效信号holdn输入到启动模块中,控制状态机将状态标识state输入到地址生成器、启动模块、源操作偶数寄存器;
4)地址生成器根据状态标识state、源操作数的寄存器号、目标操作数的寄存器号以及浮点类型,计算生成不同状态标识state下的源操作数及目标操作数对应的物理地址,并将第一源操作数的物理地址rs1、第二源操作数的物理地址rs2、目标操作数的物理地址rd输入至相关判断模块中;具体的,
当状态标识state=01时,且当源操作数为双或扩展双精度,地址生成器则将当前源操作数寄存器号+1之后的结果作为源操作数物理地址输入至相关判断模块中;
当状态标识state=10时,且当源操作数为扩展双精度,地址生成器则将当前源操作数寄存器号+2之后的结果作为源操作数物理地址输入至相关判断模块中;
当state=01时,且当目标操作数为双或扩展双精度,地址生成器则将当前目标操作数寄存器号+1之后的结果作为目标操作数物理地址输入至相关判断模块中;
当state=10时,且当目标操作数为扩展双精度,地址生成器则将当前目标操作数寄存器号+2之后的结果作为目标操作数物理地址输入至判断模块中;
5)所述相关判断模块接收五级流水线的标志信号ctrl,然后根据标志信号ctrl和源操作数的类型check判断四级浮点流水线中是否存在控制相关及数据相关,当存在控制相关及数据相关时,则产生lock_pc信号,并通过lock_pc信号禁止取指模块指令PC更新;当不存在数据相关或控制相关时,则从浮点寄存器组中读取32位操作数rs1_data及rs2_data,然后将读取的32位操作数rs1_data及rs2_data接入到源操作数寄存器的输入端;
6)所述源操作数寄存器根据状态标识state和源操作数的精度opf将源操作数rs1_data及rs2_data保存到源操作数寄存器的相应位置,具体的,当state=00时,将rs1_data及rs2_data保存到源操作数寄存器的低32位;当state=01时,且当源操作数为双或者扩展双精度,则将rs1_data及rs2_data保存到源操作数寄存器的中间32位;当state=10时,且当源操作数为扩展双精度,则将rs1_data及rs2_data保存到源操作数寄存器的高15位,否则,源操作数寄存器保持不变;
7)当state=00时,且当源操作数为单精度且holdn=1,则启动模块将fp_start置为高电平;当state=01时,且当源操作数为双精度以及holdn=1时,启动模块则将fp_start置为高电平;当state=“10”时,且源操作数为扩展双精度以及holdn=1,则启动模块将fp_start为高电平,当fp_start为高电平时,待集成的FPU对fp_start进行计算,得计算结果fpuo_result;
8)所述DP2模块输入待集成的FPU的计算结果fpuo_result、异常情况fpuo_excep、控制状态机输出的目标操作数写使能write_reg、状态标识state、opf、dsz以及浮点寄存器组输出的异常屏蔽位fsr_tem;
当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电平;字选择模块选择根据state、opf、dsz及write_reg的组合作为32位result的选择使能,将目标操作数物理地址rd对应的浮点结果输出到32位result,32位result将所述浮点结果经第三个级间寄存器输入到DP1模块中;将异常标志信号trap输入到五级流水线的异常处理级,然后将state及目标操作数写使能write_reg经第三级间寄存器输入到DP1模块中;
9)所述DP1模块输入待集成的FPU输出的计算结果fpuo_result和异常情况fpuo_excep、DP2模块输出的state、write_reg、opf、dsz及浮点结果、以及浮点寄存器组输出的异常屏蔽位fsr_tem;
当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电平,同时DP1模块将目标操作数写使能write_reg及state经第四个级间寄存器输入到DP0模块中,同时字选择电路选择与目标操作数物理地址rd对应的浮点结果输出到32位result,32位result将所述浮点结果输入到DP0模块中result;
10)所述DP0模块输入到待集成的FPU输出的计算结果fpuo_result及异常情况fpuo_excep、DP1模块输出的state、目标操作数写使能write_reg、opf、dsz以及up_result、以及浮点寄存器组输出的异常屏蔽位fsr_tem,DP0模块内的字选择电路选择与目标操作数物理地址rd对应的浮点结果,当目标操作数写使能write_reg为高电平,不同state下目标操作数物理地址rd对应32位result则将对应的浮点结果输入到浮点寄存器组的浮点寄存器中。
2.根据权利要求1所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其特征在于,所述DP2模块选择与目标操作数物理地址rd对应的浮点结果result的具体步骤包括:
所述DP2模块检测第一个级间寄存器输出的目标操作数写使能控制状态机输出的目标操作数写使能write_reg是否为高电平,若控制状态机输出的目标操作数写使能write_reg不是高电平时,则将直接将目标操作数物理地址rd对应的浮点结果输出到DP1模块中;当控制状态机输出的目标操作数写使能write_reg为高电平时,则检测控制状态机输出的opf、dsz及state,当opf为单精度或者整型时,且当dsz为单精度,则将1位符号位、8位指数位和23位小数位的拼接,并将拼接后的结果作为浮点结果输出到DP1模块中;当opf为单精度或者整型时,且当dsz为双精度以及state=01,则将32位小数位作为浮点结果输出到DP1中;当opf为单精度或者整型时,且当dsz为扩展双精度以及state=10,则将16位小数位及16位二进制0拼接起来作为浮点结果输出到DP1中;
当opf为双精度时,则检测控制状态机输出的state及dsz的类型,当控制状态机输出的state=01,且dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接的结果作为浮点结果输出到DP1模块中,当控制状态机输出的state=01,且dsz为双精度时,则将32位小数位作为浮点结果输出到DP1模块中;当控制状态机输出的state=01,且dsz不为双精度及单精度时,则将DP2模块输出的浮点结果保持不变;
当opf为双精度时,且当控制状态机输出的state=10以及dsz为扩展单精度,则将16位小数位及16位二进制0作为浮点结果输出到DP1模块中,当pf为双精度时,且当控制状态机输出的state=10以及dsz不为扩展单精度,则将32为result内的所有内容作为浮点结果输出到DP1模块中;
当opf为扩展双精度,且当state=10及dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接的结果作为浮点结果输出到DP1模块中,当opf为扩展双精度,且当state=10及dsz为双精度时,则将32位小数位作为浮点结果输出到DP1模块中;当opf为扩展双精度,且当state=10及dsz为扩展双精度时,则将16位小数位及16位二进制0作为浮点结果输出到DP1模块中;当opf为扩展双精度,且当state≠10时,则将DP2模块输出的浮点结果保持不变。
3.根据权利要求1所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其特征在于,所述DP1模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步骤:
判断输入到DP1模块内的write_reg是否为高电平,当输入到DP1模块内的write_reg为低电平时,DP1模块将DP2模块输出的浮点结果转发至DP0模块中,当输入到DP1模块内的write_reg为高电平时,则检测输入到DP1模块内的opf,当输入到DP1模块内的opf为单精度或者整型时,则判断输入到DP1模块内的dsz的类型,当输入到DP1模块内的dsz为双精度,且state=00,则将1位符号位、11位指数位及20位小数位拼接起来输出到DP0模块中;当输入到DP1模块内的dsz为扩展双精度,且state=01,则将32位小数位转发至DP0模块中;当输入到DP1模块内的dsz不为双精度或扩展双精度时,则将DP1模块输出的浮点结果保持不变;
当opf为扩展双精度时,则检测目标操作数精度dsz的类型,当dsz为双精度,且state=01,则1位符号位、11位指数位及20位小数位拼接的结果输出到DP0模块中;当dsz为扩展双精度,且state=01,则将32位小数位输出到DP0模块中;当dsz不为双精度或扩展双精度时,DP1模块输出的浮点结果保持不变。
4.根据权利要求1所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其特征在于,所述DP0模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步骤:
DP0模块判断DP1输出的目标操作数写使能write_reg是否为高电平,当DP1输出的目标操作数写使能write_reg为低电平时,DP0模块输出的浮点结果保持不变;
当DP1输出的目标操作数写使能write_reg为高电平时,则检测DP1模块输出的目标操作数精度dsz的类型,当DP1模块输出的目标操作数精度dsz为扩展双精度,则将1位符号位、5位指数位及16位小数位拼接的结果输出到浮点寄存器组;当DP0模块输出的目标操作数精度dsz不为扩展双精度时,DP模块输出的浮点结果保持不变。
5.根据权利要求1所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其特征在于,所述控制相关为五级流水线中存在浮点访存指令;所述数据相关为当前指令的源操作数物理地址与后级流水中目标操作数物理地址相同。
CN201410410017.4A 2014-08-19 2014-08-19 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法 Active CN104156195B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410410017.4A CN104156195B (zh) 2014-08-19 2014-08-19 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410410017.4A CN104156195B (zh) 2014-08-19 2014-08-19 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法

Publications (2)

Publication Number Publication Date
CN104156195A CN104156195A (zh) 2014-11-19
CN104156195B true CN104156195B (zh) 2016-08-24

Family

ID=51881705

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410410017.4A Active CN104156195B (zh) 2014-08-19 2014-08-19 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法

Country Status (1)

Country Link
CN (1) CN104156195B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572029B (zh) * 2014-12-26 2017-06-30 中国科学院自动化研究所 一种状态机可拼接性和拼接规则判定方法和装置
CN104951283B (zh) * 2015-06-05 2017-05-31 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法
CN105068640B (zh) * 2015-08-13 2018-06-26 浪潮(北京)电子信息产业有限公司 一种提高高性能计算能耗比的方法及系统
CN108415728B (zh) * 2018-03-01 2020-12-29 中国科学院计算技术研究所 一种用于处理器的扩展浮点运算指令执行方法及装置
CN109976705B (zh) * 2019-03-20 2020-06-02 上海燧原智能科技有限公司 浮点格式数据处理装置、数据处理设备及数据处理方法
CN111443948B (zh) * 2020-03-30 2022-09-09 龙芯中科技术股份有限公司 指令执行方法、处理器和电子设备
CN112506468B (zh) * 2020-12-09 2023-04-28 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101174200A (zh) * 2007-05-18 2008-05-07 清华大学 一种浮点乘加融合单元的五级流水线结构
CN103294567A (zh) * 2013-05-31 2013-09-11 中国航天科技集团公司第九研究院第七七一研究所 一种单发射五级流水处理器的精确异常处理方法
CN103984530A (zh) * 2014-05-15 2014-08-13 中国航天科技集团公司第九研究院第七七一研究所 一种提高store指令执行效率的流水线结构及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376820B2 (en) * 2000-03-16 2008-05-20 Fujitsu Limited Information processing unit, and exception processing method for specific application-purpose operation instruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101174200A (zh) * 2007-05-18 2008-05-07 清华大学 一种浮点乘加融合单元的五级流水线结构
CN103294567A (zh) * 2013-05-31 2013-09-11 中国航天科技集团公司第九研究院第七七一研究所 一种单发射五级流水处理器的精确异常处理方法
CN103984530A (zh) * 2014-05-15 2014-08-13 中国航天科技集团公司第九研究院第七七一研究所 一种提高store指令执行效率的流水线结构及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
80位浮点运算的编译实现与优化;杨灿群等;《计算机工程与科学》;20090115;第31卷(第1期);第154页至第158页 *
微处理器浮点IP核集成设计;赵勇等;《微电子学与计算机》;20060731;第23卷(第7期);第130页至第134页 *

Also Published As

Publication number Publication date
CN104156195A (zh) 2014-11-19

Similar Documents

Publication Publication Date Title
CN104156195B (zh) 扩展双精度的80位浮点处理单元在处理器中的集成系统及方法
US20240070226A1 (en) Accelerator for sparse-dense matrix multiplication
CN106339202B (zh) 微处理器及其方法
CN106293640B (zh) 用于紧密耦合的异构计算的硬件处理器、方法以及硬件装置
CN109643228A (zh) 用于浮点乘加运算的低能耗尾数乘法
CN105468333B (zh) 具有条件指令的微处理器及其处理方法
CN100361072C (zh) 流水线处理一系列处理指令的方法和设备
CN106055308A (zh) 用于低能加速器处理器架构的设备
US8769249B2 (en) Instructions with floating point control override
CN108268278A (zh) 具有可配置空间加速器的处理器、方法和系统
CN107077417A (zh) 有效性配准
CN107250993A (zh) 向量缓存行写回处理器、方法、系统和指令
CN103793203A (zh) 响应于输入数据值降低fma单元中的功率消耗
CN104919432B (zh) 用于将多个位向左移并将多个1拉入较低有效位的指令
CN103984530B (zh) 一种提高store指令执行效率的流水线结构及方法
CN104185837B (zh) 在不同的粒度等级下广播数据值的指令执行单元
CN110321159A (zh) 用于实现链式区块操作的系统和方法
CN107832083A (zh) 具有条件指令的微处理器及其处理方法
CN108304217B (zh) 将长位宽操作数指令转换为短位宽操作数指令的方法
WO2010051298A2 (en) Instruction and logic for performing range detection
WO2013095614A1 (en) Super multiply add (super madd) instruction
CN108701028A (zh) 用于执行用于置换掩码的指令的系统和方法
CN107589957A (zh) 具有双矢量和成双的单矢量操作模式的流参考寄存器
TWI455019B (zh) 執行倒數指令的設備、方法及系統
CN109213525A (zh) 具有快捷起始指令的流式传输引擎

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant