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

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

【技术领域】
[0001] 本发明属于嵌入式微处理器领域,涉及一种扩展双精度的80位浮点处理单元在 处理器中的集成系统及方法。

【背景技术】
[0002] 工程应用对嵌入式处理器的计算精度提出了更高的要求。一方面是由于实时图像 处理、3D技术等多媒体技术的应用需求;另一方面是因为飞行控制、自动导航、姿态校准等 航空、航天领域的发展要求。
[0003] 当前仅有部分x86架构的CISC处理器支持80位扩展双精度浮点运算;而ARM、 PowerPC、MIPS和SPARC V8等典型架构的嵌入式RISC处理器仅支持单、双精度的浮点运算。 由于SPARC V8架构的开源、免费及高可靠性,基于V8架构的嵌入式处理器在国内外航空航 天领域应用广泛,如航天771所的LCR3206RH、Atmel公司的AT697系列、Aeroflex公司的 UT699系列,上述国内外各种型号的嵌入式V8处理器仅支持单精度或双精度的浮点运算, 已逐渐不能满足未来航天领域对计算精度的要求。
[0004] 文献"微处理器浮点IP核集成设计"公开了一种适用于X86指令集的80位FPU集 成方案,该方案利用微指令控制器读取ROM中的浮点微指令码,在浮点微指令码的控制下 完成FPU与整点单元IU的数据交换。该方法实现了 80位FPU与IU的数据交互和异常处 理,但是整个处理过程需要不断的读取ROM中的微指令码,从而消耗大量的处理器时间,效 率较低。
[0005] 文献"Scalable LEON 3 based SoC for Multiple Floating Point Operations" 中给出了一种基于LEON 3 (SPARC V8架构)的FPU集成方法。该方法将FPU作为AHB总线 上的从机,通过LEON 3处理器向FPU写源操作、启动传输、读取结果等步骤完成FPU浮点运 算。该方法实现简单,硬件消耗少,但是其需要LE0N 3不断以访存指令干预运算,其效率仅 为常规设计的1/4。
[0006] 瑞典Gaisler研究所(已被美国Aeroflex收购)在其产品列表"GRLIB IP Core User' s Manual"中给出了适用于LEON处理器(SPARC V8架构)的单、双精度的FPU集成 方案RGFPC、GRLFPC。用户只能获得其实现方案的网表文件(*. edf),无法得知其具体的实 现方案,且上述RGFPC、GRLFPC仅支持单精度或者双精度的FPU集成,更高精度的FPU集成 无法实现。
[0007] 目前,FPU的设计技术比较成熟,专利"提高半规模双精度浮点乘法流水线效率的 结构"(ZL01141498. 7)、"一种浮点乘加融合单元的五级流水结构"(ZL20071009908. 9)等均 给出了高性能的浮点处理单元FPU的设计方案。然而,这些专利文献中均未给出如何让这 些高效的FPU与处理器整点单元IU协同工作。


【发明内容】

[0008] 本发明的目的在于克服上述现有技术的缺点,提供了一种扩展双精度的80位浮 点处理单元在处理器中的集成系统及方法,该系统及方法可以使现有的仅支持单、双精度 浮点运算的嵌入式处理器具备支持单、双及扩展双精度浮点运算的能力。
[0009] 为达到上述目的,本发明所述的扩展双精度的80位浮点处理单元在处理器中的 集成系统包括PC、五级流水线、四级浮点处理流水线及指令预译码模块,四级浮点处理流水 线包括浮点控制模块、DP2模块、DPI模块、DP0模块、待集成的FPU及浮点寄存器组,PC的输 出端与取指模块的输入端相连接,取指模块的输出端与指令预译码模块的输入端相连接, 指令预译码模块的输出端分别与五级流水线的输入端及浮点控制模块的输入端相连接,浮 点控制模块的浮点输出端依次经DP2模块及DPI模块与DP0模块的输入端相连接,指令预 译码模块与浮点控制模块之间、指令控制模块与五级流水线之间、浮点控制模块与DP2模 块之间、DP2模块与DPI模块之间以及DPI模块与DP0模块之间分别设有第一个级间寄存 器、第二个级间寄存器、第三个级间寄存器、第四个级间寄存器及第五个级间寄存器,浮点 控制模块的控制信号输出端与待集成的FPU的输入端相连接,待集成的FPU的输出端分别 与DP2模块的输入端、DPI模块的输入端及DP0模块的输入端相连接,浮点寄存器组的输入 端分别与各级间寄存器的输出端及待集成的FPU的输出端相连接。
[0010] 所述浮点控制模块包括控制状态机、FP0P译码模块、地址生成器、相关判断模块、 启动模块及原操作数寄存器,控制状态机与FP0P译码模块、地址生成器、相关判断模块、启 动模块及原操作数寄存器相连接,地址生成器与FP0P译码模块、相关判断模块及启动模块 相连接,启动模块与原操作数寄存器及待集成的FPU相连接。
[0011] 本发明所述的扩展双精度的80位浮点处理单元在处理器中的集成方法包括以下 步骤:
[0012] 1)指令预译码模块将取值模块根据PC取回的指令进行预译码,当取回的指令为 浮点指令时,则将所述浮点指令转发至四级浮点处理流水线上,并向五级流水线发送空指 令,当取回的指令为整点指令时,则将fnull信号置为有效,使四级浮点处理水流线的时钟 关闭;
[0013] 2)四级浮点处理流水线中的FP0P译码模块对浮点指令进行逻辑判断,得源操作 数的精度opf、目标操作数的精度dsz、源操作数的类型check、操作数寄存器号addr、指令 精度ind及流水线挂起无效信号holdn,并将源操作数的类型check输入到相关判断模块 中,将源操作数的精度opf及操作数寄存器号addr输入到地址生成器中,将目标操作数的 精度dsz输入到控制状态机及地址生成器中,将指令精度ind及流水线挂起无效信号holdn 输入到控制状态机中,其中,当浮点指令只需第一个源操作数时,则check = 01 ;当浮点指 令只需第二个源操作数,则check = 10 ;当浮点指令需要第一个源操作数及第二个源操作 数时,则check= 11 ;当所需的源操作数为整型,则opf = 00;当所需的源操作数为单精度, 则opf = 01 ;当所需的源操作数为双精度,则opf = 10 ;当所需的源操作数为扩展双精度, 贝1J opf = 11 ;当目标操作数为单精度或者整型,则dsz = 00 ;当目标操作数为双精度,则dsz =10 ;当目标操作数为扩展双精度,则dsz = 11 ;当指令精度为单精度,则ind = 00 ;当指 令精度为双精度,则ind = 10 ;当指令精度为扩展双精度,则ind = 11,将浮点指令中第一 个源操作数的寄存器号、第二个源操作数的寄存器号及目标操作数的寄存器号拼接之后输 出到地址生成器中;
[0014] 3)设控制状态机转移条件101指浮点指令为单精度指令且holdn = 1 ;控制状态 机转移条件102指浮点指令为双或者扩展双精度指令且holdn = 1 ;控制状态机转移条件 103指浮点指令为双精度指令且holdn = 1 ;控制状态机转移条件104指浮点指令为扩展双 精度指令且holdn = 1 ;控制状态机转移条件105为holdn = 1 ;其中,控制状态机当转移 条件101、转移条件105或转移条件103指浮点指令有效时,则状态机状态转移到state = 〇〇 ;当控制状态机转移条件104指浮点指令有效时,则状态机状态转移到state = 10 ;当控 制状态机转移条件102指浮点指令满足时,则状态机状态转移到state = 01 ;
[0015] 当state尹00时,控制状态机则将hold_pc置为高电平,禁止取指模块的输出信 号指令PC的更新;
[0016] 当state = 00时,且opf = 00或opf = 01时,控制状态机则将write_reg置为 高电平;
[0017] 当state = 00时,且opf = 10,则判断目标操作数的精度,当此时目标操作数为双 或者扩展双精度时,控制状态机则将write_reg置为高电平;
[0018] 当state = 00时,且当opf = 11,则判断目标操作数的精度,当此时目标操作数的 精度为扩展双精度时,控制状态机则将write_reg置为高电平;
[0019] 当 state = 01 时,且当 opf = 00、opf = 01 或 opf = 10 时,控制状态机则将 write_ reg置为高电平;
[0020] 当state = 01时,且当opf = 11,则判断目标操作数的精度,当此时目标操作数的 精度为双或扩展双精度,控制状态机则将write_reg置为高电平;
[0021] 当state = 10时,控制状态机则将write_reg置为高电平;
[0022] 最后控制状态机将状态标识state及目标操作数写使能writejeg均输入到各级 间寄存器的输入端相连接,当holdn = 1时,控制状态机则将状态标识state及目标操作数 写使能write_reg向DP2模块传递;控制状态机将流水线挂起无效信号holdn输入到启动 模块中,控制状态机将状态标识state输入到地址生成器、启动模块、源操作偶数寄存器;
[0023] 4)地址生成器根据状态标识state、源操作数的寄存器号、目标操作数的寄存器 号以及浮点类型,计算生成不同状态标识state下的源操作数及目标操作数对应的物理地 址,并将第一源操作数的物理地址rsl、第二源操作数的物理地址rs2、目标操作数的物理 地址rd输入至相关判断模块中;具体的,
[0024] 当状态标识state = 01时,且当源操作数为双或扩展双精度,地址生成器则将当 前源操作数寄存器号+1之后的结果作为源操作数物理地址输入至相关判断模块中;
[0025] 当状态标识state = 10时,且当源操作数为扩展双精度,地址生成器则将当前源 操作数寄存器号+2之后的结果作为源操作数物理地址输入至相关判断模块中;
[0026] 当state = 01时,且当目标操作数为双或扩展双精度,地址生成器则将当前目标 操作数寄存器号+1之后的结果作为目标操作数物理地址输入至相关判断模块中;
[0027] 当state = 10时,且当目标操作数为扩展双精度,地址生成器则将当前目标操作 数寄存器号+2之后的结果作为目标操作数物理地址输入至判断模块中;
[0028] 5)所述相关判断模块接收五级流水线的标志信号Ctrl,然后根据标志信号Ctrl 和源操作数的类型check判断四级浮点流水线中是否存在控制相关及数据相关,当存在控 制相关及数据相关时,则产生l〇ck_pc信号,并通过l 〇ck_pc信号禁止取指模块指令PC更 新;当不存在数据相关或控制相关时,则从浮点寄存器组中读取32位操作数rsl_data及 rs2_data,然后将读取的32位操作数rsl_data及rs2_data接入到源操作数寄存器的输入 端;
[0029] 6)所述源操作数寄存器根据状态标识state和源操作数的精度opf将源操作数 rsl_data及rs2_data保存到源操作数寄存器的相应位置,具体的,当state = 00时,将 rsl_data及rs2_data保存到源操作数寄存器的低32位;当state = 01时,且当源操作数 为双或者扩展双精度,则将rsl_data及rs2_data保存到源操作数寄存器的中间32位;当 state = 10时,且当源操作数为扩展双精度,则将rsl_data及rs2_data保存到源操作数寄 存器的高15位,否则,源操作数寄存器保持不变;
[0030] 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 ;
[0031] 8)所述DP2模块输入待集成的FPU的计算结果fpuo_result、异常情况fpuo_ excep、控制状态机输出的目标操作数写使能write_reg、状态标识state、opf、dsz以及浮 点寄存器组输出的异常屏蔽位fsr_tem ;
[0032] 当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置 为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电 平;字选择模块选择根据state、opf、dsz及write_reg的组合作为32位result的选择使 能,将目标操作数物理地址rd对应的浮点结果输出到32位result, 32位result将所述浮 点结果经第三个级间寄存器输入到DPI模块中;将异常标志信号trap输入到五级流水线的 异常处理级,然后将state及目标操作数写使能writejeg经第三级间寄存器输入到DPI 模块中;
[0033] 9)所述DPI模块输入待集成的FPU输出的计算结果fpu〇_reSult和异常情况 fpuo_excep、DP2模块输出的state、write_reg、opf、dsz及浮点结果、以及浮点寄存器组输 出的异常屏蔽位fsr_tem ;
[0034] 当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind 置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能writejeg置为低 电平,同时DPI模块将目标操作数写使能writejeg及state经第四个级间寄存器输入到 DP0模块中,同时字选择电路选择与目标操作数物理地址rd对应的浮点结果输出到32位 result, 32位result将所述浮点结果输入到DP0模块中result ;
[0035] 10)所述DP0模块输入到待集成的FPU输出的计算结果fpu〇_re Sult及异常情 况fpuo_excep、DPI模块输出的state、目标操作数写使能write_reg、opf、dsz以及up_ result、以及浮点寄存器组输出的异常屏蔽位fsr_tem,DP0模块内的字选择电路选择与 目标操作数物理地址rd对应的浮点结果,当目标操作数写使能writejeg为高电平,不同 state下目标操作数物理地址rd对应32位result则将对应的浮点结果输入到浮点寄存器 组的浮点寄存器中。
[0036] 所述DP2模块选择与目标操作数物理地址rd对应的浮点结果result的具体步骤 包括:
[0037] 所述DP2模块检测第一个级间寄存器输出的目标操作数写使能控制状态机输出 的目标操作数写使能write_ reg是否为高电平,若控制状态机输出的目标操作数写使能 write_reg不是高电平时,则将直接将目标操作数物理地址rd对应的浮点结果输出到DPI 模块中;当控制状态机输出的目标操作数写使能write_reg为高电平时,则检测控制状态 机输出的〇pf、dsz及state,当opf为单精度或者整型时,且当dsz为单精度,则将1位符 号位、8位指数位和23位小数位的拼接,并将拼接后的结果作为浮点结果输出到DPI模块 中;当opf为单精度或者整型时,且当dsz为双精度以及state = 01,则将32位小数位作 为浮点结果输出到DPI中;当opf为单精度或者整型时,且当dsz为扩展双精度以及state =10,则将16位小数位及16位二进制0拼接起来作为浮点结果输出到DPI中;
[0038] 当opf为双精度时,则检测控制状态机输出的state及dsz的类型,当控制状态机 输出的state = 01,且dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接 的结果作为浮点结果输出到DPI模块中,当控制状态机输出的state = 01,且dsz为双精度 时,则将32位小数位作为浮点结果输出到DPI模块中;当控制状态机输出的state = 01, 且dsz不为双精度及单精度时,则将DP2模块输出的浮点结果保持不变;
[0039] 当opf为双精度时,且当控制状态机输出的state = 10以及dsz为扩展单精度, 则将16位小数位及16位二进制0作为浮点结果输出到DPI模块中,当pf为双精度时,且 当控制状态机输出的state = 10以及dsz不为扩展单精度,则将32为result内的所有内 容作为浮点结果输出到DPI模块中;
[0040] 当opf为扩展双精度,且当state = 10及dsz为单精度时,则将1位符号位、8位指 数位及23位小数位相拼接的结果作为浮点结果输出到DPI模块中,当opf为扩展双精度, 且当state = 10及dsz为双精度时,则将32位小数位作为浮点结果输出到DPI模块中;当 opf为扩展双精度,且当state = 10及dsz为扩展双精度时,则将16位小数位及16位二进 制〇作为浮点结果输出到DPI模块中;当opf为扩展双精度,且当state尹10时,则将DP2 模块输出的浮点结果保持不变。
[0041] 所述DPI模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步 骤:
[0042] 判断输入到DP 1模块内的write_reg是否为高电平,当输入到DP 1模块内的 Write_reg为低电平时,DPI模块将DP2模块输出的浮点结果转发至DP0模块中,当输入到 DPI模块内的write_reg为高电平时,则检测输入到DPI模块内的opf,当输入到DPI模块 内的opf为单精度或者整型时,则判断输入到DPI模块内的dsz的类型,当输入到DPI模块 内的dsz为双精度,且state = 00,则将1位符号位、11位指数位及20位小数位拼接起来 输出到DP0模块中;当输入到DPI模块内的dsz为扩展双精度,且state = 01,则将32位小 数位转发至DP0模块中;当输入到DPI模块内的dsz不为双精度或扩展双精度时,则将DPI 模块输出的浮点结果保持不变;
[0043] 当opf为扩展双精度时,则检测目标操作数精度dsz的类型,当dsz为双精度,且 state = 01,则1位符号位、11位指数位及20位小数位拼接的结果输出到DP0模块中;当 dsz为扩展双精度,且state = 01,则将32位小数位输出到DP0模块中;当dsz不为双精度 或扩展双精度时,DPI模块输出的浮点结果保持不变。
[0044] 所述DP0模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步 骤:
[0045] DP0模块判断DPI输出的目标操作数写使能Write_reg是否为高电平,当DPI输出 的目标操作数写使能write_ reg为低电平时,DP0模块输出的浮点结果保持不变;
[0046] 当DPI输出的目标操作数写使能Write_reg为高电平时,则检测DPI模块输出的 目标操作数精度dsz的类型,当DPI模块输出的目标操作数精度dsz为扩展双精度,则将1 位符号位、5位指数位及16位小数位拼接的结果输出到浮点寄存器组;当DP0模块输出的 目标操作数精度dsz不为扩展双精度时,DP模块输出的浮点结果保持不变。
[0047] 所述控制相关为五级流水线中存在浮点访存指令;所述数据相关为当前指令的源 操作数物理地址与后级流水中目标操作数物理地址相同。
[0048] 本发明具有以下有益效果:
[0049] 本发明所述的扩展双精度的80位浮点处理单元在处理器中的集成系统及方法在 五级流水线上增设一条四级浮点处理流水线,并通过指令预译码模块进行调整,通过四级 浮点处理流水线,采用三个DP模块完成对浮点运算结果的寄存,并最后以流水化形成写入 浮点寄存器组中,从而可以使现有的仅支持单、双精度浮点运算的嵌入式处理器具备支持 单、双及扩展双精度(80位)浮点运算的能力,将嵌入式处理器的计算精度提高了 3个数量 级,可满足现在及未来航空航天领域对计算精度的要求。同时本发明将一条多精度浮点指 令的执行状态转变为多个单周期指令的执行状态,控制简单,实现效率高,硬件消耗少。

【专利附图】

【附图说明】
[0050] 图1为本发明的结构示意图;
[0051] 图2为本发明中四级浮点处理流水线中浮点控制模块的电路框图;
[0052] 图3为本发明中四级浮点控制模块中控制状态机的状态转换图;
[0053] 图4为本发明中四级浮点处理流水线中DP2的电路框图;
[0054] 图5为本发明中四级浮点处理流水线中DPI和DP0的电路框图;
[0055] 图6为本发明中源、目标均为扩展双精度的浮点指令执行示意图;
[0056] 图7为本发明中源单精度、目标扩展双精度的浮点指令示意图。

【具体实施方式】
[0057] 下面结合附图对本发明做进一步详细描述:
[0058] 参考图1及图2,本发明所述的扩展双精度的80位浮点处理单元在处理器中的集 成系统包括PC、五级流水线、四级浮点处理流水线及指令预译码模块,四级浮点处理流水线 包括浮点控制模块、DP2模块、DPI模块、DP0模块、待集成的FPU及浮点寄存器组,PC的输出 端与取指模块的输入端相连接,取指模块的输出端与指令预译码模块的输入端相连接,指 令预译码模块的输出端分别与五级流水线的输入端及浮点控制模块的输入端相连接,浮点 控制模块的浮点输出端依次经DP2模块及DPI模块与DP0模块的输入端相连接,指令预译 码模块与浮点控制模块之间、指令控制模块与五级流水线之间、浮点控制模块与DP2模块 之间、DP2模块与DPI模块之间以及DPI模块与DP0模块之间分别设有第一个级间寄存器、 第二个级间寄存器、第三个级间寄存器、第四个级间寄存器及第五个级间寄存器,浮点控制 模块的控制信号输出端与待集成的FPU的输入端相连接,待集成的FPU的输出端分别与DP2 模块的输入端、DPI模块的输入端及DPO模块的输入端相连接,浮点寄存器组的输入端分别 与各级间寄存器的输出端及待集成的FPU的输出端相连接。
[0059] 需要说明的是,所述浮点控制模块包括控制状态机、FP0P译码模块、地址生成器、 相关判断模块、启动模块及原操作数寄存器,控制状态机与FP0P译码模块、地址生成器、相 关判断模块、启动模块及原操作数寄存器相连接,地址生成器与FP0P译码模块、相关判断 模块及启动模块相连接,启动模块与原操作数寄存器及待集成的FPU相连接。
[0060] 所述五级流水线包含取指级、译码级、执行级、存储器访问级和回写级,各级之间 通过级间寄存器依次相连,其中后四级为译码级、执行级、存储器访问级和回写级。
[0061] 所述的指令预译码模块通过V8手册所示的指令op和op3域进行判断,如果取回 的指令为浮点指令,则将指令发射到四级浮点处理流水线上,并向五级流水线发送空指令 (不执行任何操作的指令);否则将指令发射到整点流水线,并将fnull信号置有效(高电 平)。fnull为高电平时,则关闭浮点处理流水线的中所有部件的时钟,降低系统功耗。 [0062] 另外,所述的四级浮点处理流水线,其不但与五级流水线共用取指模块,而且与整 点流水线严格同步,当流水线阻塞(hold_pc或l 〇ck_pc为高电平)时,会阻止取指PC的更 新,保证浮点处理流水线与整点流水线的同步。
[0063] 所述待集成的FPU为待集成的80位FPU,该待集成的FPU实现了 38条V8浮点运 算类指令(算术、逻辑、乘除、开方、比较、转移等),浮点访存指令(LDF、STF、LDFSR、STFSR 等)由五级流水线实现,待集成的FPU输出的结果和异常标志位同时连接至DP2模块、DPI 模块、DP0模块,待集成的FPU输出的条件码连接至浮点寄存器组的FSR。
[0064] 所述浮点寄存器组,包含32个32位的浮点寄存器和一个浮点状态寄存器FSR。浮 点控制模块从浮点寄存器中读取源操作数,DP模块将目的操作数(即计算结果)写回到浮 点寄存器。DP模块会读取FSR中的异常屏蔽位fsrjem,用以判断浮点计算是否产生需要 向处理器报告的异常。
[0065] 参考图3、图4及图5,本发明所述的扩展双精度的80位浮点处理单元在处理器中 的集成方法包括以下步骤:
[0066] 1)指令预译码模块将取值模块根据PC取回的指令进行预译码,当取回的指令为 浮点指令时,则将所述浮点指令转发至四级浮点处理流水线上,并向五级流水线发送空指 令,当取回的指令为整点指令时,则将fnull信号置为有效,使四级浮点处理水流线的时钟 关闭;
[0067] 2)四级浮点处理流水线中的FP0P译码模块对浮点指令进行逻辑判断,得源操作 数的精度opf、目标操作数的精度dsz、源操作数的类型check、操作数寄存器号addr、指令 精度ind及流水线挂起无效信号holdn,并将源操作数的类型check输入到相关判断模块 中,将源操作数的精度opf及操作数寄存器号addr输入到地址生成器中,将目标操作数的 精度dsz输入到控制状态机及地址生成器中,将指令精度ind及流水线挂起无效信号holdn 输入到控制状态机中,其中,当浮点指令只需第一个源操作数时,则check = 01 ;当浮点指 令只需第二个源操作数,则check = 10 ;当浮点指令需要第一个源操作数及第二个源操作 数时,则check = 11 ;当所需的源操作数为整型,则opf = 00 ;当所需的源操作数为单精度, 则opf = 01 ;当所需的源操作数为双精度,则opf = 10 ;当所需的源操作数为扩展双精度, 贝1J opf = 11 ;当目标操作数为单精度或者整型,则dsz = 00 ;当目标操作数为双精度,则dsz =10 ;当目标操作数为扩展双精度,则dsz = 11 ;当指令精度为单精度,则ind = 00 ;当指 令精度为双精度,则ind = 10 ;当指令精度为扩展双精度,则ind = 11,将浮点指令中第一 个源操作数的寄存器号、第二个源操作数的寄存器号及目标操作数的寄存器号拼接之后输 出到地址生成器中;
[0068] 3)设控制状态机转移条件101指浮点指令为单精度指令且holdn = 1 ;控制状态 机转移条件102指浮点指令为双或者扩展双精度指令且holdn = 1 ;控制状态机转移条件 103指浮点指令为双精度指令且holdn = 1 ;控制状态机转移条件104指浮点指令为扩展双 精度指令且holdn = 1 ;控制状态机转移条件105为holdn = 1 ;其中,控制状态机当转移 条件101、转移条件105或转移条件103指浮点指令有效时,则状态机状态转移到state = 〇〇 ;当控制状态机转移条件104指浮点指令有效时,则状态机状态转移到state = 10 ;当控 制状态机转移条件102指浮点指令满足时,则状态机状态转移到state = 01 ;
[0069] 当state尹00时,控制状态机则将hold_pc置为高电平,禁止取指模块的输出信 号指令PC的更新;
[0070] 当state = 00时,且opf = 00或opf = 01时,控制状态机则将write_reg置为 高电平;
[0071] 当state = 00时,且opf = 10,贝U判断目标操作数的精度,当此时目标操作数为双 或者扩展双精度时,控制状态机则将write_reg置为高电平;
[0072] 当state = 00时,且当opf = 11,则判断目标操作数的精度,当此时目标操作数的 精度为扩展双精度时,控制状态机则将write_reg置为高电平;
[0073] 当 state = 01 时,且当 opf = 00、opf = 01 或 opf = 10 时,控制状态机则将 write_ reg置为高电平;
[0074] 当state = 01时,且当opf = 11,贝U判断目标操作数的精度,当此时目标操作数的 精度为双或扩展双精度,控制状态机则将write_reg置为高电平;
[0075] 当state = 10时,控制状态机则将write_reg置为高电平;
[0076] 最后控制状态机将状态标识state及目标操作数写使能writejeg均输入到各级 间寄存器的输入端相连接,当holdn = 1时,控制状态机则将状态标识state及目标操作数 写使能write_reg向DP2模块传递;控制状态机将流水线挂起无效信号holdn输入到启动 模块中,控制状态机将状态标识state输入到地址生成器、启动模块、源操作偶数寄存器;
[0077] 4)地址生成器根据状态标识state、源操作数的寄存器号、目标操作数的寄存器 号以及浮点类型,计算生成不同状态标识state下的源操作数及目标操作数对应的物理地 址,并将第一源操作数的物理地址rsl、第二源操作数的物理地址rs2、目标操作数的物理 地址rd输入至相关判断模块中;具体的,
[0078] 当状态标识state = 01时,且当源操作数为双或扩展双精度,地址生成器则将当 前源操作数寄存器号+1之后的结果作为源操作数物理地址输入至相关判断模块中;
[0079] 当状态标识state = 10时,且当源操作数为扩展双精度,地址生成器则将当前源 操作数寄存器号+2之后的结果作为源操作数物理地址输入至相关判断模块中;
[0080] 当State = 01时,且当目标操作数为双或扩展双精度,地址生成器则将当前目标 操作数寄存器号+1之后的结果作为目标操作数物理地址输入至相关判断模块中;
[0081] 当State = 10时,且当目标操作数为扩展双精度,地址生成器则将当前目标操作 数寄存器号+2之后的结果作为目标操作数物理地址输入至判断模块中;
[0082] 5)所述相关判断模块接收五级流水线的标志信号Ctrl,然后根据标志信号Ctrl 和源操作数的类型check判断四级浮点流水线中是否存在控制相关及数据相关,当存在控 制相关及数据相关时,则产生l〇ck_pc信号,并通过l〇ck_pc信号禁止取指模块指令PC更 新;当不存在数据相关或控制相关时,则从浮点寄存器组中读取32位操作数rsl_data及 rs2_data,然后将读取的32位操作数rsl_data及rs2_data接入到源操作数寄存器的输入 端;
[0083] 6)所述源操作数寄存器根据状态标识state和源操作数的精度opf将源操作数 rsl_data及rs2_data保存到源操作数寄存器的相应位置,具体的,当state = 00时,将 rsl_data及rs2_data保存到源操作数寄存器的低32位;当state = 01时,且当源操作数 为双或者扩展双精度,则将rsl_data及rs2_data保存到源操作数寄存器的中间32位;当 state = 10时,且当源操作数为扩展双精度,则将rsl_data及rs2_data保存到源操作数寄 存器的高15位,否则,源操作数寄存器保持不变;
[0084] 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 ;
[0085] 8)所述DP2模块输入待集成的FPU的计算结果fpuo_result、异常情况fpuo_ excep、控制状态机输出的目标操作数写使能write_reg、状态标识state、opf、dsz以及浮 点寄存器组输出的异常屏蔽位fsr_tem ;
[0086] 当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置 为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能write_reg置为低电 平;字选择模块选择根据state、opf、dsz及write_reg的组合作为32位result的选择使 能,将目标操作数物理地址rd对应的浮点结果输出到32位result, 32位result将所述浮 点结果经第三个级间寄存器输入到DPI模块中;将异常标志信号trap输入到五级流水线的 异常处理级,然后将state及目标操作数写使能writejeg经第三级间寄存器输入到DPI 模块中;
[0087] 9)所述DPI模块输入待集成的FPU输出的计算结果fpu〇_reSult和异常情况 fpuo_excep、DP2模块输出的state、write_reg、opf、dsz及浮点结果、以及浮点寄存器组输 出的异常屏蔽位fsr_tem ;
[0088] 当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind 置为高电平,将异常标志位trap置为高电平,同时将目标操作数写使能writejeg置为低 电平,同时DPI模块将目标操作数写使能writejeg及state经第四个级间寄存器输入到 DP0模块中,同时字选择电路选择与目标操作数物理地址rd对应的浮点结果输出到32位 result, 32位result将所述浮点结果输入到DP0模块中result ;
[0089] 10)所述DP0模块输入到待集成的FPU输出的计算结果fpuo_reSult及异常情 况fpuo_excep、DPI模块输出的state、目标操作数写使能write_reg、opf、dsz以及up_ result、以及浮点寄存器组输出的异常屏蔽位fsr_tem,DPO模块内的字选择电路选择与 目标操作数物理地址rd对应的浮点结果,当目标操作数写使能writejeg为高电平,不同 state下目标操作数物理地址rd对应32位result则将对应的浮点结果输入到浮点寄存器 组的浮点寄存器中。
[0090] 所述DP2模块选择与目标操作数物理地址rd对应的浮点结果result的具体步骤 包括:
[0091] 所述DP2模块检测第一个级间寄存器输出的目标操作数写使能控制状态机输出 的目标操作数写使能write_ reg是否为高电平,若控制状态机输出的目标操作数写使能 write_reg不是高电平时,则将直接将目标操作数物理地址rd对应的浮点结果输出到DPI 模块中;当控制状态机输出的目标操作数写使能write_reg为高电平时,则检测控制状态 机输出的〇pf、dsz及state,当opf为单精度或者整型时,且当dsz为单精度,则将1位符 号位、8位指数位和23位小数位的拼接,并将拼接后的结果作为浮点结果输出到DPI模块 中;当opf为单精度或者整型时,且当dsz为双精度以及state = 01,则将32位小数位作 为浮点结果输出到DPI中;当opf为单精度或者整型时,且当dsz为扩展双精度以及state =10,则将16位小数位及16位二进制0拼接起来作为浮点结果输出到DPI中;
[0092] 当opf为双精度时,则检测控制状态机输出的state及dsz的类型,当控制状态机 输出的state = 01,且dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接 的结果作为浮点结果输出到DPI模块中,当控制状态机输出的state = 01,且dsz为双精度 时,则将32位小数位作为浮点结果输出到DPI模块中;当控制状态机输出的state = 01, 且dsz不为双精度及单精度时,则将DP2模块输出的浮点结果保持不变;
[0093] 当opf为双精度时,且当控制状态机输出的state = 10以及dsz为扩展单精度, 则将16位小数位及16位二进制0作为浮点结果输出到DPI模块中,当pf为双精度时,且 当控制状态机输出的state = 10以及dsz不为扩展单精度,则将32为result内的所有内 容作为浮点结果输出到DPI模块中;
[0094] 当opf为扩展双精度,且当state = 10及dsz为单精度时,则将1位符号位、8位指 数位及23位小数位相拼接的结果作为浮点结果输出到DPI模块中,当opf为扩展双精度, 且当state = 10及dsz为双精度时,则将32位小数位作为浮点结果输出到DPI模块中;当 opf为扩展双精度,且当state = 10及dsz为扩展双精度时,则将16位小数位及16位二进 制〇作为浮点结果输出到DPI模块中;当opf为扩展双精度,且当state尹10时,则将DP2 模块输出的浮点结果保持不变。
[0095] 所述DPI模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步 骤:
[0096] 判断输入到DP 1模块内的write_reg是否为高电平,当输入到DP 1模块内的 Write_reg为低电平时,DPI模块将DP2模块输出的浮点结果转发至DP0模块中,当输入到 DPI模块内的write_reg为高电平时,则检测输入到DPI模块内的opf,当输入到DPI模块 内的opf为单精度或者整型时,则判断输入到DPI模块内的dsz的类型,当输入到DPI模块 内的dsz为双精度,且state = 00,则将1位符号位、11位指数位及20位小数位拼接起来 输出到DP0模块中;当输入到DPI模块内的dsz为扩展双精度,且state = 01,则将32位小 数位转发至DP0模块中;当输入到DPI模块内的dsz不为双精度或扩展双精度时,则将DPI 模块输出的浮点结果保持不变;
[0097] 当opf为扩展双精度时,则检测目标操作数精度dsz的类型,当dsz为双精度,且 state = 01,则1位符号位、11位指数位及20位小数位拼接的结果输出到DP0模块中;当 dsz为扩展双精度,且state = 01,则将32位小数位输出到DP0模块中;当dsz不为双精度 或扩展双精度时,DPI模块输出的浮点结果保持不变。
[0098] 所述DP0模块选择与目标操作数物理地址rd对应的浮点结果result包括以下步 骤:
[0099] DP0模块判断DPI输出的目标操作数写使能Write_reg是否为高电平,当DPI输出 的目标操作数写使能write_ reg为低电平时,DP0模块输出的浮点结果保持不变;
[0100] 当DPI输出的目标操作数写使能Write_reg为高电平时,则检测DPI模块输出的 目标操作数精度dsz的类型,当DPI模块输出的目标操作数精度dsz为扩展双精度,则将1 位符号位、5位指数位及16位小数位拼接的结果输出到浮点寄存器组;当DP0模块输出的 目标操作数精度dsz不为扩展双精度时,DP模块输出的浮点结果保持不变。
[0101] 所述控制相关为五级流水线中存在浮点访存指令;所述数据相关为当前指令的源 操作数物理地址与后级流水中目标操作数物理地址相同。
[0102] 该发明专利的有益效果如图6和7所示。基于该发明公开的技术方法将一款ΜΕΙΚ0 接口的扩展双精度FPU集成到一款国产嵌入式V8处理器中,图6为源操作数和目标操作数 均为扩展双精度的浮点加法仿真波形图,图7为源操作数为单精度、目标操作数为扩展双 精度的浮点开方仿真波形图,仿真验证结果证明,该技术方案可以将高精度FPU集成到处 理器中,将处理器计算精度提高3个数量级。目前,应用本发明实现的高精度处理器芯片已 经流片,并成功应用的某型号任务中。
【权利要求】
1. 一种扩展双精度的80位浮点处理单元在处理器中的集成系统,其特征在于,包括 PC、五级流水线、四级浮点处理流水线及指令预译码模块,四级浮点处理流水线包括浮点控 制模块、DP2模块、DPI模块、DP0模块、待集成的FPU及浮点寄存器组,PC的输出端与取指 模块的输入端相连接,取指模块的输出端与指令预译码模块的输入端相连接,指令预译码 模块的输出端分别与五级流水线的输入端及浮点控制模块的输入端相连接,浮点控制模块 的浮点输出端依次经DP2模块及DPI模块与DP0模块的输入端相连接,指令预译码模块与 浮点控制模块之间、指令控制模块与五级流水线之间、浮点控制模块与DP2模块之间、DP2 模块与DPI模块之间以及DPI模块与DP0模块之间分别设有第一个级间寄存器、第二个级 间寄存器、第三个级间寄存器、第四个级间寄存器及第五个级间寄存器,浮点控制模块的控 制信号输出端与待集成的FPU的输入端相连接,待集成的FPU的输出端分别与DP2模块的 输入端、DPI模块的输入端及DP0模块的输入端相连接,浮点寄存器组的输入端分别与各级 间寄存器的输出端及待集成的FPU的输出端相连接。
2. 根据权利要求1所述的扩展双精度的80位浮点处理单元在处理器中的集成系统,所 述浮点控制模块包括控制状态机、FPOP译码模块、地址生成器、相关判断模块、启动模块及 原操作数寄存器,控制状态机与FPOP译码模块、地址生成器、相关判断模块、启动模块及原 操作数寄存器相连接,地址生成器与FPOP译码模块、相关判断模块及启动模块相连接,启 动模块与原操作数寄存器及待集成的FPU相连接。
3. -种扩展双精度的80位浮点处理单元在处理器中的集成方法,其特征在于,基于权 利要求2所述的扩展双精度的80位浮点处理单元在处理器中的集成系统,包括以下步骤: 1) 指令预译码模块将取值模块根据PC取回的指令进行预译码,当取回的指令为浮点 指令时,则将所述浮点指令转发至四级浮点处理流水线上,并向五级流水线发送空指令,当 取回的指令为整点指令时,则将fnull信号置为有效,使四级浮点处理水流线的时钟关闭; 2) 四级浮点处理流水线中的FPOP译码模块对浮点指令进行逻辑判断,得源操作数的 精度〇pf、目标操作数的精度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,贝U判断目标操作数的精度,当此时目标操作数的精度 为扩展双精度时,控制状态机则将write_reg置为高电平; 当state = 01时,且当opf = 00、opf = 01或opf = 10时,控制状态机则将write_ reg置为高电平; 当state = 01时,且当opf = 11,贝U判断目标操作数的精度,当此时目标操作数的精度 为双或扩展双精度,控制状态机则将write_reg置为高电平; 当state = 10时,控制状态机则将write_reg置为高电平; 最后控制状态机将状态标识state及目标操作数写使能writejeg均输入到各级间寄 存器的输入端相连接,当holdn = 1时,控制状态机则将状态标识state及目标操作数写使 能Write_reg向DP2模块传递;控制状态机将流水线挂起无效信号holdn输入到启动模块 中,控制状态机将状态标识state输入到地址生成器、启动模块、源操作偶数寄存器; 4) 地址生成器根据状态标识state、源操作数的寄存器号、目标操作数的寄存器号以 及浮点类型,计算生成不同状态标识state下的源操作数及目标操作数对应的物理地址, 并将第一源操作数的物理地址rsl、第二源操作数的物理地址rs2、目标操作数的物理地址 rd输入至相关判断模块中;具体的, 当状态标识state = 01时,且当源操作数为双或扩展双精度,地址生成器则将当前源 操作数寄存器号+1之后的结果作为源操作数物理地址输入至相关判断模块中; 当状态标识state = 10时,且当源操作数为扩展双精度,地址生成器则将当前源操作 数寄存器号+2之后的结果作为源操作数物理地址输入至相关判断模块中; 当state = 01时,且当目标操作数为双或扩展双精度,地址生成器则将当前目标操作 数寄存器号+1之后的结果作为目标操作数物理地址输入至相关判断模块中; 当state = 10时,且当目标操作数为扩展双精度,地址生成器则将当前目标操作数寄 存器号+2之后的结果作为目标操作数物理地址输入至判断模块中; 5) 所述相关判断模块接收五级流水线的标志信号ctrl,然后根据标志信号Ctrl和源 操作数的类型check判断四级浮点流水线中是否存在控制相关及数据相关,当存在控制相 关及数据相关时,则产生l〇ck_pc信号,并通过l 〇ck_pc信号禁止取指模块指令PC更新; 当不存在数据相关或控制相关时,则从浮点寄存器组中读取32位操作数rsl_data及rs2_ data,然后将读取的32位操作数rsl_data及rs2_data接入到源操作数寄存器的输入端; 6) 所述源操作数寄存器根据状态标识state和源操作数的精度opf将源操作数rsl_ data及rs2_data保存到源操作数寄存器的相应位置,具体的,当state = 00时,将rsl_ data及rs2_data保存到源操作数寄存器的低32位;当state = 01时,且当源操作数为双 或者扩展双精度,则将rsl_data及rs2_data保存到源操作数寄存器的中间32位;当state =10时,且当源操作数为扩展双精度,则将rsl_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置为高电平,同时将目标操作数写使能writejeg置为低电平;字 选择模块选择根据state、opf、dsz及write_reg的组合作为32位result的选择使能,将 目标操作数物理地址rd对应的浮点结果输出到32位result,32位result将所述浮点结 果经第三个级间寄存器输入到DPI模块中;将异常标志信号trap输入到五级流水线的异常 处理级,然后将state及目标操作数写使能writejeg经第三级间寄存器输入到DPI模块 中; 9) 所述DPI模块输入待集成的FPU输出的计算结果fpuo_result和异常情况fpuo_ excep、DP2模块输出的state、write_reg、opf、dsz及浮点结果、以及浮点寄存器组输出的 异常屏蔽位fsr_tem ; 当fpuo_excep和fsr_tem作与运算的结果不为0时,则将异常置位信号t_ind置为高 电平,将异常标志位trap置为高电平,同时将目标操作数写使能writejeg置为低电平,同 时DPI模块将目标操作数写使能writejeg及state经第四个级间寄存器输入到DP0模块 中,同时字选择电路选择与目标操作数物理地址rd对应的浮点结果输出到32位result,32 位result将所述浮点结果输入到DP0模块中result ; 10) 所述DP0模块输入到待集成的FPU输出的计算结果fpuo_result及异常情况fpuo_ excep、DPI模块输出的state、目标操作数写使能write_reg、opf、dsz以及up_result、以 及浮点寄存器组输出的异常屏蔽位fsr_tem,DP0模块内的字选择电路选择与目标操作数 物理地址rd对应的浮点结果,当目标操作数写使能write_reg为高电平,不同state下目 标操作数物理地址rd对应32位result则将对应的浮点结果输入到浮点寄存器组的浮点 寄存器中。
4.根据权利要求3所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其 特征在于,所述DP2模块选择与目标操作数物理地址rd对应的浮点结果result的具体步 骤包括: 所述DP2模块检测第一个级间寄存器输出的目标操作数写使能控制状态机输出的目 标操作数写使能write_reg是否为高电平,若控制状态机输出的目标操作数写使能write_ reg不是高电平时,则将直接将目标操作数物理地址rd对应的浮点结果输出到DPI模块中; 当控制状态机输出的目标操作数写使能write_reg为高电平时,则检测控制状态机输出的 opf、dsz及state,当opf为单精度或者整型时,且当dsz为单精度,则将1位符号位、8位 指数位和23位小数位的拼接,并将拼接后的结果作为浮点结果输出到DPI模块中;当opf 为单精度或者整型时,且当dsz为双精度以及state = 01,则将32位小数位作为浮点结果 输出到DPI中;当opf为单精度或者整型时,且当dsz为扩展双精度以及state = 10,则将 16位小数位及16位二进制0拼接起来作为浮点结果输出到DPI中; 当opf为双精度时,则检测控制状态机输出的state及dsz的类型,当控制状态机输出 的state = 01,且dsz为单精度时,则将1位符号位、8位指数位及23位小数位相拼接的结 果作为浮点结果输出到DPI模块中,当控制状态机输出的state = 01,且dsz为双精度时, 则将32位小数位作为浮点结果输出到DPI模块中;当控制状态机输出的state = 01,且dsz 不为双精度及单精度时,则将DP2模块输出的浮点结果保持不变; 当opf为双精度时,且当控制状态机输出的state = 10以及dsz为扩展单精度,则将 16位小数位及16位二进制0作为浮点结果输出到DPI模块中,当pf为双精度时,且当控制 状态机输出的state = 10以及dsz不为扩展单精度,则将32为result内的所有内容作为 浮点结果输出到DPI模块中; 当opf为扩展双精度,且当state = 10及dsz为单精度时,则将1位符号位、8位指数 位及23位小数位相拼接的结果作为浮点结果输出到DPI模块中,当opf为扩展双精度,且 当state = 10及dsz为双精度时,则将32位小数位作为浮点结果输出到DPI模块中;当 opf为扩展双精度,且当state = 10及dsz为扩展双精度时,则将16位小数位及16位二进 制〇作为浮点结果输出到DPI模块中;当opf为扩展双精度,且当state尹10时,则将DP2 模块输出的浮点结果保持不变。
5. 根据权利要求3所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其 特征在于,所述DPI模块选择与目标操作数物理地址rd对应的浮点结果result包括以下 步骤: 判断输入到DPI模块内的write_reg是否为高电平,当输入到DPI模块内的write_reg 为低电平时,DPI模块将DP2模块输出的浮点结果转发至DP0模块中,当输入到DPI模块内 的Write_reg为高电平时,则检测输入到DPI模块内的opf,当输入到DPI模块内的opf为 单精度或者整型时,则判断输入到DPI模块内的dsz的类型,当输入到DPI模块内的dsz为 双精度,且state = 00,则将1位符号位、11位指数位及20位小数位拼接起来输出到DP0 模块中;当输入到DPI模块内的dsz为扩展双精度,且state = 01,则将32位小数位转发 至DP0模块中;当输入到DPI模块内的dsz不为双精度或扩展双精度时,则将DPI模块输出 的浮点结果保持不变; 当opf为扩展双精度时,则检测目标操作数精度dsz的类型,当dsz为双精度,且state =01,则1位符号位、11位指数位及20位小数位拼接的结果输出到DP0模块中;当dsz为 扩展双精度,且state = 01,则将32位小数位输出到DP0模块中;当dsz不为双精度或扩 展双精度时,DPI模块输出的浮点结果保持不变。
6. 根据权利要求3所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其 特征在于,所述DP0模块选择与目标操作数物理地址rd对应的浮点结果result包括以下 步骤: DPO模块判断DPI输出的目标操作数写使能Write_reg是否为高电平,当DPI输出的目 标操作数写使能write_reg为低电平时,DP0模块输出的浮点结果保持不变; 当DPI输出的目标操作数写使能writejeg为高电平时,则检测DPI模块输出的目标 操作数精度dsz的类型,当DPI模块输出的目标操作数精度dsz为扩展双精度,则将1位符 号位、5位指数位及16位小数位拼接的结果输出到浮点寄存器组;当DP0模块输出的目标 操作数精度dsz不为扩展双精度时,DP模块输出的浮点结果保持不变。
7.根据权利要求3所述的扩展双精度的80位浮点处理单元在处理器中的集成方法,其 特征在于,所述控制相关为五级流水线中存在浮点访存指令;所述数据相关为当前指令的 源操作数物理地址与后级流水中目标操作数物理地址相同。
【文档编号】G06F9/30GK104156195SQ201410410017
【公开日】2014年11月19日 申请日期:2014年8月19日 优先权日:2014年8月19日
【发明者】陈庆宇, 吴龙胜, 艾刁, 张辉, 唐威 申请人:中国航天科技集团公司第九研究院第七七一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1