浮点处理单元中面向精确异常的流水线调度方法技术

技术编号:2848654 阅读:338 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种浮点处理单元中面向精确异常的流水线调度方法,包括下述步骤:在浮点译码单元设计精确异常预测逻辑,检查是否发生数据相关、资源冲突、以及在译码级和写回级异常发生的情况;如果预测产生异常,则同步流水线,保证该指令之前的指令执行完毕,该指令之后的指令没有发射,跳到步骤4);如果当前指令不产生数据相关和控制相关,并且当前指令的指令单元空闲,则乱序发射该指令,并且乱序完成;否则停滞当前指令发射至相关消除;顺序执行该指令,如果出现异常,响应精确异常。与现有技术相比,本发明专利技术设计的浮点单元在实现精确异常的同时,浮点处理单元面积降低0.18mm↑[2],关键路径提高了0.2ns。

【技术实现步骤摘要】

本专利技术涉及一种。
技术介绍
在基于指令级并行的浮点单元的设计中,为了提高指令的吞吐率,普遍采用指令乱序执行机制。实现指令乱序机制的关键是如何处理指令之间的相关。目前处理流水线相关的方法可分为两种。一种是流水线的静态调度方法。该方法是如果当前发射队列中的指令与已经在流水线中的指令之间存在数据相关,且不能通过旁路技术或直接通路技术来避免时,暂停流水线发射逻辑,直到该相关消除。该方法的主要局限是如果相关指令在流水线中被停顿,那么后继指令都无法前行。因此,若两条紧挨着的指令存在相关关系,就会引起流水线的停顿。该方法的优点是控制逻辑比较简单,易于实现。但是执行效率低,已不被普遍采用。另一种是流水线的动态调度法,即由流水线中的硬件逻辑动态调整相关的指令执行顺序以减少流水线相关的影响。文献“A Efficient Algorithm for Exploiting Multiple ArithmeticUnits(IBM J.Research and Development,Vol.11,Jan.1967,pp.25-33.)”介绍了一种采用Tomasulo方法来处理指令相关,可以较好的解决指令乱序执行所引起的相关。动态调度算法和静态调度算法相比,使处理器的执行效率有了显著的提高。因此先进微处理器设计中普遍采用该方法来处理相关。但该方法的缺点由于指令乱序执行的控制逻辑比较复杂,限制了该方法在面向精确异常处理的嵌入式处理器设计中的使用;同时,该方法浮点处理单元面积大,浮点处理单元面积为1.90mm2;关键路径延迟时间长,关键路径延迟时间为4ns,增加了设计成本。专利
技术实现思路
为了克服现有技术浮点处理单元面积大、关键路径延迟时间长的不足,本专利技术提供一种在。该方法实现了浮点指令面向精确异常的动态调度,同时降低了处理器的面积,使处理器的整体性能得到了提高。本专利技术解决其技术问题所采用的技术方案是一种,其特征在于,包括下述步骤1)在浮点译码单元设计精确异常预测逻辑,检查是否发生数据相关、资源冲突、以及在译码级和写回级异常发生的情况;2)如果预测产生异常,则同步流水线,保证该指令之前的指令执行完毕,该指令之后的指令没有发射,跳到步骤4); 3)如果当前指令不产生数据相关和控制相关,并且当前指令的指令单元空闲,则乱序发射该指令,并且乱序完成;否则停滞当前指令发射至相关消除;4)顺序执行该指令,如果出现异常,响应精确异常。本专利技术的有益效果是,由于采用了基于浮点精确异常预测的动态流水线调度方法,浮点指令可以在浮点处理单元的四个流水线中同时执行,乱序结束。保证如果有异常产生,一定产生所需的精确异常。使用SPEC95中的浮点基准程序对现有技术和本专利技术所实现的浮点处理单元进行测试,结果显示,采用本专利技术设计的浮点单元在实现精确异常的同时,浮点处理单元面积为1.72mm2,比现有技术降低0.18mm2,关键路径为3.8ns,比现有技术提高了0.2ns,提高了处理器的性能。下面结合实施例对本专利技术进一步说明。具体实施例方式在浮点处理单元中,存在四条彼此无关的流水线,乘加流水线,除法/平方根流水线,浮点存取流水线以及移动/类型转换流水线。参见表1,四条彼此无关的流水线中每一条流水线的延迟各不相同。并且除了除法/平方根流水线和存取流水线之外,在没有数据相关发生的情况下,可以每一个时钟周期向乘加流水线和移动/类型转换流水线发射一条指令。表1指令及其执行延迟周期 表1中标记*的标志表示为浮点处理单元完成此操作所需要的准备时间。浮点处理单元中,译码控制逻辑检查是否发生数据相关、资源冲突、以及在译码级和写回级异常发生的情况。在没有以上各种情况产生的情况下,主处理器可以连续发送指令。指令在四个流水线中同时执行,乱序结束。如浮点加指令可以先被发射,紧接着浮点移动指令被发射。本专利技术的微处理器所支持的浮点异常类型如表2所示表2本专利技术的微处理器所支持的浮点异常种类 在采用该方法实现中,对于每一个异常,都有一个异常使能位与之相对应,用来进行必要的屏蔽工作。在所有的异常中,最可能发生是浮点不精确异常,几乎每一条浮点算术运算指令的结果都会进行舍入并且产生非精确结果。因此,在大多数情况下,XX的对应控制位应该关闭。在所有异常中,VX和ZX可以在指令译码完成、操作数读出后、运算执行之前能够被判断出。并且由于在寄存器堆中,每一个操作数都有属于自身的三位标志位来标志操作数的特性。因此,在译码结束,并且操作数读出后,可以立即判断出所有的VX异常和ZX异常。对于上溢OX和下溢UX操作,其判断过程相对而言比较复杂。在算术操作之前,检查读出的两个操作数的指数对于当前的有效操作而言,有没有可能发生溢出。如果有,那么控制逻辑将使这条指令按顺序结束,并且顺序结束以后的指令。当这条指令结束后,判断是否真的有异常产生,如果预判断是错误的,那么可以继续乱序执行和乱序结束指令;如果判断正确,那么就等待进入异常处理程序,同时,冲刷浮点处理单元的所有运算单元和中间寄存器。例如如果两个操作数的指数都是最大数,并且当前操作是有效加,那么必然会产生上溢。具体实现如下对于双精度有效加法,判断两个操作数的指数中是否至少有一个是1023。如果是,则结果有可能发生上溢。这是因为当一个操作数的指数是1023时,假如加法的结果大于等于2,则指数会成为1024,大于IEEE754规定的范围,发生上溢。对于双精度有效减法,判断两个操作数中大数的指数小于-970。如果是,那么有可能会产生下溢。情况如下1)两个操作数指数相同时,当两个操作数的指数都是-971时,减法的结果会进行前导零判断,假如结果出了最低位之外都是0,那么指数需要减去52,那么最终的结果的指数是-1023,超出了IEEE754规定的范围;2)如果两个操作数的指数不同,那么最极端的情况是,大数的指数是-971,小数的指数是-972,并且大数的尾数是1.00...000,小数的尾数是1.111...111。则两者相减的结果是0.000...001。规格化后,结果的指数为-1023,超出了IEEE754规定的范围;对于双精度乘法和加/减法而言,以上的判断机制比较容易实现。但是对于双精度乘加指令而言,由于存在一个加法源操作数与中间乘法结果的预测比较。因此,在译码结束,并且三个源操作数读出后,很难直接通过上述方法进行预测异常判断。对于双精度有效浮点乘加指令或者有效乘减指令,假设是D=A×B±C。改进如下对于双精度浮点乘加指令。首先预测A×B结果的指数,在多数情况下,即exp(result_from_multi)=exp(A)+exp(B)+1。因为,A×B的结果在大多数情况下是大于等于2的。因此,按照双精度浮点加法的预测方法,当exp(result_from_multi)的值或exp(C)的值有一个是1023时,就有可能发生上溢。对于双精度浮点乘减指令。首先预测A×B结果的指数,在大多数情况下,即exp(result_from_multi)=exp(A)+exp(B)+1。然后判断两个操作数中大数的指数小于-970。如果是,那么有可能会产生下溢。由于乘加操作或者乘减操作可以通过操作数的预置而变化成为单纯的乘操作或者加减操作。因此,可以将对本文档来自技高网
...

【技术保护点】
一种浮点处理单元中面向精确异常的流水线调度方法,其特征在于,包括下述步骤:1)在浮点译码单元设计精确异常预测逻辑,检查是否发生数据相关、资源冲突、以及在译码级和写回级异常发生的情况;2)如果预测产生异常,则同步流水线,保证该 指令之前的指令执行完毕,该指令之后的指令没有发射,跳到步骤4);3)如果当前指令不产生数据相关和控制相关,并且当前指令的指令单元空闲,则乱序发射该指令,并且乱序完成;否则停滞当前指令发射至相关消除;4)顺序执行该指令,如果出 现异常,响应精确异常。

【技术特征摘要】
1.一种浮点处理单元中面向精确异常的流水线调度方法,其特征在于,包括下述步骤1)在浮点译码单元设计精确异常预测逻辑,检查是否发生数据相关、资源冲突、以及在译码级和写回级异常发生的情况;2)如果预测产生异常,则同步流水线,保证该指令之前的...

【专利技术属性】
技术研发人员:高德远樊晓桠张盛兵王党辉安建锋黄小平张萌
申请(专利权)人:西北工业大学
类型:发明
国别省市:87[中国|西安]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1