掌桥专利:专业的专利平台
掌桥专利
首页

一种芯片内核浮点异常的处理方法

文献发布时间:2023-06-19 13:29:16


一种芯片内核浮点异常的处理方法

技术领域

本发明属于计算机验证技术领域,具体地说,涉及一种芯片内核浮点异常的处理方法。

背景技术

随着国产化处理器的发展,越来越多的基于MIPS架构的国产处理器使用到了工业生产中。工业生产中通常使用RTOS操作系统,相对于通用的操作系统RTOS要求系统响应快速简洁。但是相对于X86架构POWERPC架构MIPS浮点异常处理需要依赖于软件,传统处理方法需要调用软浮点程序进行处理,处理过程较长,消耗CPU资源并且影响RTOS环境下的中断异常的响应速度,给国产芯片内核架构CPU在工业场合的应用带来一系列的问题。

有鉴于此特提出本发明。

发明内容

本发明要解决的技术问题在于克服现有技术的不足,提供一种芯片内核浮点异常的处理方法,解决了芯片内核浮点异常处理速度慢的问题。

为解决上述技术问题,本发明采用技术方案的基本构思是:

一种芯片内核浮点异常的处理方法,所述处理方法包括:

监测芯片在运行过程中不满足屏蔽条件的第一异常信息,所述第一异常信息包括异常浮点;

确定引起所述第一异常信息中异常浮点的输入浮点寄存器;

对所述输入异常浮点的浮点寄存器进行处理,修正所述输入浮点寄存器至合法值。

进一步,所述方法还包括:在所述芯片初始化的过程中,监测所述芯片中满足屏蔽条件的第二异常信息;所述第二异常信息包括多种类型的MIPS异常;

对所述第二异常信息进行屏蔽处理。

进一步,在监测过程中,需要将浮点寄存器与通用寄存器压入堆栈中。

进一步,浮点寄存器与通用寄存器压入堆栈之后,处理器执行浮点指令,执行过程中,不满足屏蔽条件的异常浮点会被保存在浮点异常寄存器中,从而确定输入异常浮点的浮点寄存器。

进一步,在监测芯片过程中,屏蔽条件为:需对芯片内核初始化,将浮点寄存器中FS置为1,RM域置为0,Enables区域全部置0。

进一步,对于未满足屏蔽条件的异常浮点,则取出当前epc指向的指令填入待处理指令缓存,并判断异常浮点是否在MIPS分支延时槽之中,若是,将epc指向的下一条指令填入待处理指令缓存。

进一步,若异常浮点未在MIPS分支延时槽之中,则解析当前指令,找出当前指令输入的浮点寄存器。

进一步,找到浮点异常寄存器内的异常浮点,异常浮点与检验堆栈中的输入浮点寄存器中的值相对应,将其修正为规格化数。

进一步,异常结束处理流程,弹栈恢复寄存器上下文,跳转到epc返回地址。

进一步,监测芯片在运行过程中接收来自于内核的舍入方式信号,运算核心对初步的运算结果进行舍入操作。

采用上述技术方案后,本发明与现有技术相比具有以下有益效果:

1、通过对输入异常浮点的浮点寄存器进行修正,对异常浮点的处理方法进行分析优化,提高了芯片内核下异常浮点的处理速度。不同于传统的调用软浮点模拟程序的处理方法,该方法直接对操作指令进行解析,查找操作数的值,将其校正后退出返回到原处理流程,提高了处理速度。

2、对于可屏蔽掉的第二异常信息,直接交由硬件自动处理,不产生例外,提高程序执行速度。

下面结合附图对本发明的具体实施方式作进一步详细的描述。

附图说明

附图作为本发明的一部分,用来提供对本发明的进一步的理解,本发明的示意性实施例及其说明用于解释本发明,但不构成对本发明的不当限定。显然,下面描述中的附图仅仅是一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。在附图中:

图1是本发明实施例中芯片内核浮点异常的处理方法流程示意图。

需要说明的是,这些附图和文字描述并不旨在以任何方式限制本发明的构思范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对实施例中的技术方案进行清楚、完整地描述,以下实施例用于说明本发明,但不用来限制本发明的范围。

在本发明的描述中,需要说明的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

如图1所示,本发明实施例中,介绍一种芯片内核浮点异常的处理方法,所述处理方法包括:监测芯片在运行过程中不满足屏蔽条件的第一异常信息,所述第一异常信息包括异常浮点;

确定引起所述第一异常信息中异常浮点的输入浮点寄存器;

对所述输入异常浮点的浮点寄存器进行处理,修正所述输入浮点寄存器至合法值。

通过对确定引起异常浮点的输入浮点寄存器,对所述输入异常浮点的浮点寄存器进行处理,修正所述输入浮点寄存器至合法值,可以提高处理器对异常浮点的处理速度。

首先将该芯片内核处理器初始化系统的时候,屏蔽条件为:浮点寄存器中FS置为1,RM域置为0,Enables区域全部置0,FS设置为1保证浮点模块将输出的非规格化数清零,RM域设置为0保证自动舍入,Enables区域屏蔽大部分中断。设置上述屏蔽条件,可初步屏蔽掉大部分异常,从而减少处理器对于其他异常的时长,提高处理速度。

而现有技术中,对于异常浮点的处理过程采用调用浮点模拟程序,与现有技术相比,本申请中减少浮点异常处理时间,提高了RTOS操作系统中在芯片内核对于中断异常的响应速度。

所述浮点寄存器,用于控制利用浮点寄存器堆使能或禁止模拟浮点寄存器栈,同时,浮点寄存器也储存浮点数据值。

如果浮点寄存器中的栈使能位被置位,则选择32个浮点寄存器中的8个寄存器,如果浮点寄存器中的栈使能位被置位1,则在运算中被使用,表示寄存器模拟的浮点寄存器栈存在,那么凡是浮点运算指令中用到的编号小于8的寄存器,都被当作浮点寄存器栈的栈寄存器使用,从而模拟内核的浮点寄存器栈。

译码器,用于在操作指令集指令译码过程中,区分出操作指令集模式,将指令按照所区分的指令集模式,进行译码后输出给定点运算部件或者浮点运算部件;

所述定点运算部件用于根据译码器的输出,对指令集的定点指令进行处理,输出执行的结果。所述浮点运算部件用于根据译码器的输出,对指令集的浮点指令进行处理,输出执行结果。

在其他实施例中,在MIPS架构中,部分浮点指令给出的浮点寄存器号是一个相对值,必须和浮点状态字中的浮点循环栈的栈顶指针TOP相加后才是真正的浮点寄存器号。为解决这一问题,本发明在译码器设置TOP指针寄存器,在浮点物理寄存器堆中的浮点控制寄存器中设置维护一个栈使能信号,决定是否选定8个浮点寄存器用于模拟浮点栈,如果栈使能被置位,则在相应的浮点指令运算中,凡是寄存器号小于8的寄存器,在译码时根据TOP的值修改自己的源或目标逻辑寄存器号,并根据指令的内容修改TOP值;然后再发送到处理器;如果栈使能位被清零,则在运算中,认为寄存器模拟栈不存在,按照现有的工作步骤正常进行。

其维护一个栈使能位,当使能位置1时,表示处理器将模拟处理器浮点寄存器栈操作;当使能位置0时,表示处理器将不模拟处理器的浮点寄存器栈操作,处理器按照正常的过程进行操作处理。

本发明实施例中,浮点寄存器内包括一个浮点寄存器栈,该栈由8个可直接进行浮点运算的栈寄存器组成,按照顺序进行编号,分别是0~7。之所以称该寄存器是浮点寄存器栈,其原因在于X86处理器将它们作为一个堆栈进行使用。浮点寄存器栈是一个向下扩展的循环栈,处理器利用另外一个寄存器中的3位来标记栈顶所在的位置,这3位被称为TOP指针。

当需要向栈寄存器中装入数据,即压栈的时候,TOP指针的值减1,然后将数据存储到由TOP指针所指示的浮点寄存器中,当TOP指针值为0时,下一次压栈则将数据压入7号栈寄存器中,TOP指针的值则被设置成7。

当需要将堆栈中的数据保存到内存中,即弹出退栈的时候,则进行退栈操作,退栈操作与压栈操作类似,TOP指针通过增1进行,如果此时TOP指针值是7,则退栈后的TOP指针值设置位0。

所述TOP指针寄存器,用于维护一个TOP指针,也就是栈操作指针,存储TOP指针的值,这个TOP指针可以被读、写、增1、减1等。

本发明实施例中,在监测过程中,需要将浮点寄存器与通用寄存器压入堆栈中,即向输入浮点寄存器与通用寄存器的数值压入栈中。

浮点寄存器与通用寄存器压入堆栈之后,处理器执行浮点指令,执行过程中,不满足屏蔽条件的异常浮点会被保存在浮点异常寄存器中,从而确定输入异常浮点的浮点寄存器。在监测过程中,会有多个输入浮点的浮点寄存器,其中有多个不满足屏蔽条件,会成为异常浮点,这些异常浮点会存在浮点异常寄存器中,通过浮点异常寄存器中的异常浮点确定输出异常的浮点寄存器。

本发明实施例中,在监测芯片过程中,屏蔽条件为:对芯片内核初始化时,浮点寄存器中FS置为1,RM域置为0,Enables区域全部置0。利用硬件特性设置FS为1和设置RM为0,可以屏蔽所有可屏蔽例外,将上溢下溢等可以由硬件处理的异常,交由硬件处理修正为近似值满足RTOS操作系统的用户需要,同时减少了异常处理程序的负荷提高效率。

本发明实施例中,所述方法还包括:在所述芯片初始化的过程中,监测所述芯片中满足屏蔽条件的第二异常信息;所述第二异常信息包括多种类型的MIPS异常;对所述第二异常信息进行屏蔽处理。通过上述设置,在监测芯片的过程中,对于可屏蔽掉的第二类异常信息也进行简单处理,从而进一步的提高了芯片的处理速度。

本发明实施例中,在芯片内核浮点异常的处理方法中,在芯片检测时,对于可屏蔽例外交由硬件自动处理,不产生例外,可提高程序执行速度。

本发明浮点中断控制电路用一个可改写的微程序RAM替换,浮点中断控制电路是微程序RAM该微程序RAM构造简单,可以对异常中断的触发方式进行编程。

本发明实施例中,对于不可屏蔽的浮点异常,其触发原因可分为三点,第一点为非规格化操作数,第二点为非法操作数错误,第三点为非规格化数或者下溢,同时下溢或者不精确使能信号被设置同时FS位没有被设置。

由于第三点原因在之前FS设置为1并且全部可屏蔽例外都被屏蔽已交由硬件自动处理不会被触发。剩下的可能原因只有第一点与第二点。而MIPS架构中FPU保证不产生非规格化结果,而产生非法操作数已经被屏蔽,因此第一点与第二点两种情况只需要对源操作数进行修正即可。

同时,对于无法屏蔽的异常,通过简化处理流程,即直接对源操作数进行修正,不调用软浮点模拟程序,更进一步减少了处理步骤提高了处理速度。

通过分别对异常浮点的修正处理和对于无法屏蔽的异常浮点的其他异常进行简单处理,减少浮点异常处理时间,提高了RTOS操作系统在芯片内核下对于中断异常的响应速度

异常浮点处理完成后,弹栈恢复浮点寄存器的上下文,跳转到原来的epc地址。

本发明实施例中,对于未满足屏蔽条件的异常浮点,则取出当前epc指向的指令填入待处理指令缓存,并判断异常浮点是否在MIPS分支延时槽之中,若是,将epc指向的下一条指令填入待处理指令缓存,同时,解析当前指令,找出当前指令输入的浮点寄存器。

通过对当前异常是否是浮点异常,采用不用的处理过程,最终提高了处理器的处理速度。

本发明实施例中,若异常浮点未在MIPS分支延时槽之中,则直接解析当前指令,找出当前指令输入的浮点寄存器。不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交。

确定浮点异常寄存器内的异常浮点,异常浮点与检验堆栈中的输入浮点寄存器中的值相对应,将其修正为规格化数,最终实现处理器将异常浮点校正后退出返回到原处理流程,提高了处理速度。

本发明实施例中,无论是处理异常浮点还是多种类型的MIPS异常,在异常结束处理流程,弹栈恢复寄存器上下文,跳转到epe返回地址。

下面具体介绍一下本发明实施例中的芯片内核浮点异常的处理方法,该方法主要包括以下步骤:

1、将浮点寄存器及通用寄存器压栈;

2、判断当前异常原因是否为浮点异常,若是继续执行步骤3,否则执行步骤7;

3、取出当前epc(发生异常时的pc指针)指向的指令填入待处理指令缓存,进一步判断异常浮点是否在MIPS分支延时槽之中;若是执行步骤4否则执行步骤5;

4、将epe指向的下一条指令填入待处理指令缓存,执行步骤5;

5、解析当前指令,找出指令输入的浮点寄存器;检验堆栈中的输入浮点寄存器中的值,如果异常修正为规格化数或合法值,之后执行步骤6;

6、异常结束处理流程,弹栈恢复寄存器上下文,跳转到原来的epc地址;

7、其他异常处理流程,处理完成回到步骤6中。

本发明实施例中,把FPU与处理器核心连接起来。作为硬件加速器,FPU与处理器核心之间的通信应该尽量直接,FPU对处理器核心的控制信号响应应该尽量迅速,只有这样才能得到更高的运算效率。本发明的控制方法中,FPU的两个操作数直接与堆栈的栈顶和次栈顶相连;开始信号、运算符以和舍入方式都是直接来自译码器,当运行到浮点运算指令时,译码器可以第一时间将控制信号发送到FPU;运算结果直接返回到处理器核心堆栈的栈顶数据输入寄存器,栈顶可以在第一时间得到运算结果。

定义专门用于控制FPU的本地指令,即控制微码。这些控制微码应该能够控制FPU完成从读取参数到返回运算结果的整个过程。因此本发明定义了两类控制微码,第一类微码控制FPU读取参数(包括操作数、运算符以及舍入方式)并开始运算,第二类微码则控制FPU将运算结果返回到栈顶。

根据相应的算法完成基本的算术运算。包括阶码和尾数相应的算术运算,另外还需要根据舍入方式的值对初步的运算结果进行舍入操作,监测芯片在运行过程中接收来自于内核的舍入方式信号,运算核心对初步的运算结果进行舍入操作,其中,当舍入方式的值为“00”时,采用就近舍入的方法,为“01”时,采用向零舍入,为“10”时,采用向上舍入,为“11”时,采用向下舍入。

以上所述仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专利的技术人员在不脱离本发明技术方案范围内,当可利用上述提示的技术内容作出些许更动或修饰为等同变化的等效实施例,上述实施例中的实施方案可以进一步组合或者替换,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明方案的范围内。

相关技术
  • 一种芯片内核浮点异常的处理方法
  • 一种linux内核异常的处理方法、设备及装置
技术分类

06120113694149