在非cisc处理器上进行浮点栈溢出检查的装置和方法

文档序号:6613838阅读:256来源:国知局
专利名称:在非cisc处理器上进行浮点栈溢出检查的装置和方法
技术领域
本发明涉及微处理器技术领域,特别是涉及一种在非复杂指令集计算机处
理器上支持复杂指令集计算机(CISC)中的浮点栈,进行浮点栈溢出检査,
防止浮点栈溢出的装置和方法。
背景技术
中央处理器(CPU)简称微处理器,是计算机的核心单元。微处理器采用
的指令集、设计规范(体系结构)是计算机的首要特征,它决定了计算机需要 采用的外围设备和应用软件的类型。
当今世界比较流行的两大体系结构分别为以MIPS公司的MIPS32/64为 代表的精简指令集计算机(Reduced Instruction Set Computing, RISC)体系结 构和以Intel公司的X86为代表的复杂指令集计算机(Complex Instruction Set Computing, CISC)体系结构。CISC处理器指令数量繁多, 一些指令可执行 相当复杂的功能, 一般需要许多时钟周期来执行;RISC处理器使用较少数量 的可用指令,以更高的速率执行一组更简单的功能。而采用不同的体系结构的 处理器上运行的程序软件需要针对处理器的体系结构专门编写,X86上的应用 软件通常不能在MIPS体系结构的计算机上运行,即常说的不兼容。
然而计算机制造商希望通过在自己制造的一种体系结构的微处理器上运 行更多的现有软件来节省软件开发的开销,同时达到市场占有率最大化的目 的。
为了解决这一问题,虚拟机应运而生。 一般地,将具有一种类型体系结构 的CPU的计算机称为主机;同时将需要主机仿真的,不相关体系结构类型的 CPU环境称为目标机,需要一种应用程序,这种程序能够促使主机执行一个 或多个主机指令,响应于给定的目标机指令,运行为目标机编写的软件,这种 程序就叫虚拟机。
目前现有的虚拟机有SimOS, QEMU, Transmeta等,但是现有的虚拟
机由于各种体系结构的巨大差异造成虚拟机运行开销过大,执行效率过低,很 难应用到实际工作中。
由于X86体系结构是目前个人计算机(PC)上较流行的一类结构,所以
多数虚拟机都以X86体系结构为目标机,都需要解决向X86兼容的问题,而 众所周知的棘手问题是对X86所具有的独特的浮点栈防止溢出机制的模拟。 一般地,CISC类处理器,如X86,中都设置一个浮点寄存器栈,大部分浮点 运算都是在寄存器栈参与下进行的,而为了保证浮点栈的正常正确工作,X86 有一个复杂的防止溢出机制方法。而除了X86外,其他处理器,特别是RISC 处理器没有类似的浮点栈以及防止溢出机制方法,由此带来的如何在虚拟机上 进行浮点翻译是众多虚拟机研发部门迫切需要解决的热点问题。
一般而言,在非CISC处理器中,其内部设置若干个通用的浮点寄存器, 这些浮点寄存器统一编号,指令通过这些编号直接访问固定的浮点寄存器而完 成工作。
如果在多个虚拟机程序运行过程中,浮点栈溢出例外没有被发现,程序就 可能会执行错误操作,并且沿着错误的道路一直进行下去,而且错误比较难于 发现,直到造成比较大的损失。所以,在虚拟机对X86进行仿真时,往往需 要维护一个溢出检査机制,实时监控浮点栈的状态,但是这种检査机制对虚拟 机存在一定的性能影响,而且不便于程序对栈中数据状态的了解。

发明内容
本发明所要解决的问题是提供一种在非复杂指令集计算机处理器上进行 浮点栈溢出检査的装置和方法,其在非CISC体系结构的处理器上能够支持 CISC中的浮点栈运算,防止浮点栈溢出,具有各种类型的对栈中寄存器所进
行的操作,能大大减少虚拟机的工作量,提高效率。
为实现本发明而提供的一种在非复杂指令集计算机处理器上进行浮点栈 溢出检查的装置,包括一浮点寄存器栈,所述浮点寄存器栈由多个可进行浮点
运算的桟寄存器组成;
一溢出检査寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检 查,其包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器 的状态;
一栈溢出判断模块,用于检査指定的浮点寄存器栈中的栈寄存器,并根据 栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查。
所述浮点寄存器栈包括8个栈寄存器;所述溢出检査寄存器为一至少8 位的多位通用寄存器,分别表示所述8个栈寄存器的0 7位的状态。
所述装置为精简指令集计算机处理器。
所述栈溢出判断模块包括第一判断子模块,用于判断浮点寄存器栈中被指
定的栈寄存器是否为空,如果为空,则将指定的溢出检查寄存器的TAG位的
相应位置l,并继续执行;否则,引发浮点栈溢出例外。
所述栈溢出判断模块还包括第二判断子模块,用于判断浮点寄存器栈中被
指定的栈寄存器是否有效,如果有效,则将指定的溢出检查寄存器的TAG位
的相应位置O,并继续执行;否则,引发浮点栈溢出例外。
所述栈溢出判断模块还包括第三判断子模块,用于判断浮点寄存器栈中被 指定的两个栈寄存器是否都有效,如果都有效,并且栈寄存器中的数据不需要
出栈,则将指定的溢出检査寄存器的TAG位的值保持,并继续执行;否则,
引发浮点栈溢出例外。
所述栈溢出判断模块还包括第四判断子模块,用于判断浮点寄存器栈中被 指定的两个栈寄存器是否有效,如果都有效,并且有一个栈寄存器中的数据需
要出栈,则将数据出栈的栈寄存器对应的溢出检查寄存器的TAG位所对应的
位置O,然后继续执行;否则,引发浮点栈溢出例外。
所述栈溢出判断模块还包括第五判断子模块,用于判断浮点寄存器栈中被 指定的两个栈寄存器是否有效,如果都有效,并且栈寄存器中的数据都需要出
栈,则将对应的溢出检査寄存器的TAG位所对应的两位都置0,然后继续执 行;否则,引发浮点栈溢出例外。
为实现本发明还提供一种在非复杂指令集计算机处理器上进行浮点栈溢
出检査的方法,以非复杂指令集处理器的多个栈寄存器组成浮点寄存器栈;一 溢出检查寄存器,包括有与所述栈寄存器相应的多个位,每个位分别表示相应 的栈寄存器的状态,包括下列步骤
步骤A,检査指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对 溢出检查寄存器进行操作,进行浮点栈溢出检査。
所述浮点寄存器栈包括8个栈寄存器;所述溢出检査寄存器为一至少8
位的多位通用寄存器,分别表示所述8个栈寄存器的0~7位的状态。
所述装置为精简指令集计算机处理器。
所述步骤A包括下列步骤
判断浮点寄存器栈中被指定的桟寄存器是否为空,如果为空,则将指定的
溢出检査寄存器的TAG位的相应位置1,并继续执行;否则,引发浮点栈溢
出例外。
判断浮点寄存器栈中被指定的栈寄存器是否有效,如果有效,则将指定的
溢出检査寄存器的TAG位的相应位置0,并继续执行;否则,引发浮点栈溢
出例外。
判断浮点寄存器栈中被指定的两个栈寄存器是否都有效,如果都有效,并
且栈寄存器中的数据不需要出栈,则将指定的溢出检査寄存器的TAG位的值 保持,并继续执行;否则,引发浮点栈溢出例外。
判断浮点寄存器栈中被指定的两个栈寄存器是否有效,如果都有效,并且 有一个栈寄存器中的数据需要出栈,则将数据出栈的栈寄存器对应的溢出检查 寄存器的TAG位所对应的位置0,然后继续执行;否则,引发浮点栈溢出例 外。
判断浮点寄存器栈中被指定的两个栈寄存器是否有效,如果都有效,并且 栈寄存器中的数据都需要出栈,则将对应的溢出检查寄存器的TAG位所对应 的两位都置0,然后继续执行;否则,引发浮点栈溢出例外。
本发明的有益效果是本发明的在非复杂指令集计算机处理器上进行浮点 栈溢出检査的装置和方法,使得非CISC体系结构,如X86的处理器能够支持 X86中的特殊浮点栈的溢出检査机制,从而方便虚拟机进行二进制翻译工作, 提高虚拟机效率,增强处理器兼容性,能大大减少虚拟机的工作量,提高效率。


图1为本发明在非CISC处理器上进行浮点栈溢出检査的装置结构示意
图2为本发明栈寄存器与溢出检査寄存器的位对应示意图; 图3为本发明实施例在非CISC处理器上入栈过程中进行浮点栈溢出检査 过程流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明的一种在非复杂指令集计算机处理器上进行浮点栈溢出检査的 装置和方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用 以解释本发明,并不用于限定本发明。本发明实施例中,以提供一种在非复杂指令集计算机处理器上进行浮点栈溢出检査的装置和方法,其应用在协同设计虚拟机中,在RISC处理器上支持 CISC体系结构,如X86中的特殊浮点栈,防止浮点栈溢出的方法和系统为例 为进行说明,但应当理解的是,其并不是对本发明的限制。为了更深入理解本发明,本发明实施例先说明CISC体系结构,如X86的 浮点栈的防溢出机制方法。X86的浮点部件中包括一个浮点寄存器栈,该栈由8个可直接进行浮点运 算的栈寄存器组成,按照顺序进行编号,分别是0 7。 X86还包括一个16位 的浮点标志寄存器,其中每两位组成一个TAG,每个TAG用于检测浮点访问 时会不会发生栈溢出例外,每个TAG对应一个浮点寄存器的状态00表示 valid,表示该栈寄存器中含有一个可用的数据;01表示zero,表示该栈寄存 器中的数据为0; 10表示special,表示该栈寄存器含有非数、无穷数、或者错 误格式的数据;11表示empty,表示该栈寄存器为空,可以对栈进行操作,不 会发生溢出。举例而言,如果用户进行向栈中存储数据的操作(push),那么硬件会自 动检查相应栈寄存器所对应的浮点标志寄存器的TAG,以确定栈是否可用。 在这种情况下,如果TAG为OO、 01、 IO当中的任何一个,都代表相应的栈寄 存器己经被使用了,不能向里面装入数据,也就是不能再进行存储(push)操 作,表示栈已满,如果再进行存储(push)操作,就会发生浮点栈溢出例外。 相同,对于读取数据的操作(pop),其也是一样的。本发明实施例中,所述在非复杂指令集计算机处理器上进行浮点桟溢出检 查的装置,是一精简指令集计算机(RISC)处理器10,包括浮点寄存器栈11, 该栈由8个可直接进行浮点运算的栈寄存器111组成,按照顺序进行编号,分 别为0~7;
本发明实施例的RISC处理器10,还包括一个溢出检查寄存器12,用于实现与X86的浮点标志寄存器中的TAG的功能,检测对浮点寄存器栈11中 的栈寄存器111进行浮点访问时会不会发生栈溢出例外,其为一至少8位的多 位寄存器,表示TAG位,即溢出检查功能位,分别表示浮点寄存器栈11的栈 寄存器0 7号的状态。在本发明实施例中,在RISC处理器10中,选择一个通用寄存器r(i),其 低8位由低到高分别表示浮点寄存器栈的栈寄存器0 7号的状态。通用寄存器r(i)的低8位中,每位对应一个浮点寄存器栈U中的栈寄存器 111,每位的值代表不同状态,其中,0表示空,可压栈,不可出栈,否则会 溢出;l表示有效,不可再压栈,否则会溢出。作为-一种可实施方式,如图1所示,本发明的RISC处理器10中,包括 一个由0~31,共32个的多位浮点寄存器组成的浮点寄存器栈11,其中0~7 号,共8个栈寄存器111,模拟X86的浮点寄存器栈的8个栈寄存器;在RISC 处理器10中,还包括一个32位的通用寄存器(定点)r(i),其低8位由低到 高分别表示浮点寄存器栈的栈寄存器0~7号的状态,完成X86浮点栈机制中 的TAG功能,图1中的箭头表示了栈寄存器和通用寄存器(溢出检査寄存器 12)的TAG位之间的对应关系。所述RISC处理器10中,还包括栈溢出判断模块13,用于检査指定的浮 点寄存器栈11中的栈寄存器111,并根据栈寄存器111的值对溢出检査寄存 器12进行操作,进行浮点栈溢出检查。较佳地,所述栈溢出判断模块13,包括第一判断子模块131,第二判断子 模块132,第三判断子模块133,第四判断子模块134,第五判断子模块135, 其中第一判断子模块131,用于判断浮点寄存器栈11中被指定的栈寄存器111 是否为空,如果为空,则将指定的溢出检査寄存器12的TAG位的相应位置1, 并继续执行;否则,引发浮点栈溢出例外;第二判断子模块132,用于判断浮点寄存器栈11中被指定的栈寄存器111 是否有效,如果有效,则将指定的溢出检查寄存器12的TAG位的相应位置0, 并继续执行;否则,引发浮点栈溢出例外;
第三判断子模块133,用于判断浮点寄存器栈11中被指定的两个栈寄存 器lll是否都有效,如果都有效,并且栈寄存器lll中的数据不需要出栈,则将指定的溢出检査寄存器12的TAG位的值保持,并继续执行;否则,引发浮 点栈溢出例外;第四判断子模块134,用于判断浮点寄存器栈11中被指定的两个栈寄存 器U1是否有效,如果都有效,并且有一个桟寄存器lll中的数据需要出栈, 则将数据出栈的栈寄存器111对应的溢出检查寄存器12的TAG位所对应的位 置0,然后继续执行;否则,引发浮点栈溢出例外;第五判断子模块135,用于判断浮点寄存器栈11中被指定的两个栈寄存 器lll是否有效,如果都有效,并且栈寄存器11中的数据都需要出栈,则将 对应的溢出检査寄存器12的TAG位所对应的两位都置0,然后继续执行;否 则,引发浮点栈溢出例外。下面进一步详细说明本发明在非复杂指令集计算机处理器上进行浮点栈 溢出检查的方法,其以RISC处理器10的8个栈寄存器111组成浮点寄存器 栈ll;以一通用寄存器为溢出检査寄存器12,其低8位模拟X86的TAG功 能,每位对应一个栈寄存器111的不同状态。本发明的在非复杂指令集计算机处理器上进行浮点栈溢出检査的方法,包 括如下步骤步骤SIOO,检查指定的浮点寄存器栈ll中的桟寄存器lll,并根据栈寄 存器111的值对溢出检査寄存器12进行操作,进行浮点栈溢出检查; 所述步骤S100包括下列步骤步骤S110,判断浮点寄存器栈11中被指定的栈寄存器111是否为空,如 果为空,则将指定的溢出检査寄存器12的TAG位的相应位置1,并继续执行; 否则,引发浮点栈溢出例外;步骤S120,判断浮点寄存器桟11中被指定的栈寄存器111是否有效,如 果有效,则将指定的溢出检査寄存器12的TAG位的相应位置0,并继续执行; 否则,引发浮点栈溢出例外;步骤SHO,判断浮点寄存器栈11中被指定的两个栈寄存器111是否都有 效,如果都有效,并且栈寄存器中的数据不需要出栈,则将指定的溢出检査寄 存器12的TAG位的值保持,并继续执行;否则,引发浮点栈溢出例外;
步骤S140,判断浮点寄存器桟11中被指定的两个栈寄存器111是否有效, 如果都有效,并且有一个栈寄存器中的数据需要出栈,则将数据出栈的栈寄存器对应的溢出检査寄存器12的TAG位所对应的位置O,然后继续执行;否则, 引发浮点栈溢出例外;歩骤S150,判断浮点寄存器栈11中被指定的两个栈寄存器lll是否有效, 如果都有效,并且栈寄存器中的数据都需要出栈,则将对应的溢出检査寄存器 12的TAG位所对应的两位都置0,然后继续执行;否则,引发浮点栈溢出例 外。下面以对浮点寄存器栈的操作为例,进一步详细说明本发明的在非复杂指 令集计算机处理器上进行浮点栈溢出检查的方法。对浮点寄存器栈11的操作有很多种情况,如图2所示,为浮点寄存器栈 11的入栈操作流程图,进行入栈操作时。首先RISC处理器10确定浮点寄存器栈的栈顶,并读取该栈顶的栈寄存 器Ul对应的溢出检査寄存器12的TAG位;RISC处理器10根据本发明的浮点寄存器栈11,判断确定浮点寄存器栈 11的栈顶,并确定对应的本发明的栈顶的栈寄存器111对应的溢出检査寄存 器的TAG位,是一种现有技术,其不是本发明的发明创造,本领域技术人员 根据本发明实施例的描述,可以实现上述操作,因此,在本发明中不再一一详 细描述说明。判断栈顶的栈寄存器111对应的溢出检査寄存器的相应TAG位是否为0; 如果是,则将栈顶的栈寄存器111对应的溢出检査寄存器12的相应TAG 位置l,并将数据写入该栈寄存器lll,并结束返回; 如果否,则引发栈溢出例外。作为一种可实施的方式,本发明实施例中,选择通用寄存器r(3)作为溢出 检查寄存器,r(3)的低8位,也就是bit r(3)一0 bit r(3)—7分别对应浮点寄存器 栈中的栈寄存器f(0) f(7)的状态。1)如果遇到入栈操作,并且栈顶在栈寄存器f(5);则判断溢出检査寄存器r(3)的第5位,也就是bitr(3L4是否为0;如果为O,则先将溢出检査寄存器的bitr(3)—4置1,然后将数据入栈,存 入栈寄存器f(5);
如果为l,则引发栈溢出例外。2) 如果出栈操作,并且栈顶在栈寄存器f(5),则判断溢出检査寄存器r(3)的第5位,也就是bit r(3)一4是否为1; 如果为l,则先将溢出检査寄存器的bitf(3)一4清零,然后将数据出栈,存 入指定的浮点寄存器;如果为0,则引发桟溢出例外。3) 如果是运算操作,并且两个源操作数分别在栈寄存器f(4)和f(5)中, 则判断溢出检査寄存器r(3)的第4位,也就是bit r(3)—3是否为1; 如果为0,则引发栈溢出例外;如果为1,则继续下面的步骤则判断溢出检査寄存器r(3)的第5位,也就是bit r(3)—4是否为1; 如果为1,则继续运算操作; 如果为0,则引发栈溢出例外。4) 如果是运算并出栈操作,并且两个源操作数分别在栈寄存器f(4)和f(5)中;如果栈顶在栈寄存器f(5),则判断溢出检査寄存器r(3)的第5位,也就是 bitr(3)—4是否为1;如果为0,则引发栈溢出例外; 如果为l,则继续下面的步骤判断溢出检查寄存器r(3)的第4位,也就是bitr(3)—3是否为1; 如果为0,则引发栈溢出例外; 如果为1,则继续下面的步骤先将溢出检查寄存器的第5位,也就是bit r(3)一4清零,然后继续运算操作;5) 如果是运算并连续出栈操作,并且两个源操作数分别在栈寄存器f(4) 和f(5)中;则判断溢出检査寄存器r(3)的第4位,也就是bit r(3)—3是否为1; 如果为0,则引发桟溢出例外;如果为l,则将溢出检査寄存器的第4位,也就是bitr(3)一3清零,然后继 续下面的步骤 判断溢出检查寄存器r(3)的第5位,也就是bitr(3)—4是否为1; 如果为l,则将溢出检査寄存器的第5位,也就是bitr(3)一4清零,然后继 续运算操作;如果为0,则引发栈溢出例外。本发明的在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置和 方法,本发明的装置设计精巧简单,硬件开销很少;能够提供了很强的仿真支 持,可以省去对浮点栈的模拟维护,大大减少了在读取内存上的时间和空间损 失,提高了工作效率。其縮小了不同体系结构间的差异,为协同设计虚拟机以 及RISC和x86之间的兼容做出了开拓性的贡献。通过以上结合附图对本发明具体实施例的描述,本发明的其它方面及特征 对本领域的技术人员而言是显而易见的。以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只 是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行 解释。
权利要求
1、一种在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置,其特征在于,包括一浮点寄存器栈,所述浮点寄存器栈由多个可进行浮点运算的栈寄存器组成;一溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检查,其包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器的状态;一栈溢出判断模块,用于检查指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查。
2、 根据权利要求1所述的浮点栈溢出检査的装置,其特征在于,所述浮 点寄存器栈包括8个栈寄存器;所述溢出检査寄存器为一至少8位的多位通用 寄存器,分别表示所述8个栈寄存器的0 7位的状态。
3、 根据权利要求2所述的浮点栈溢出检査的装置,其特征在于,所述装 置为精简指令集计算机处理器。
4、 根据权利要求1至3任一项所述的浮点栈溢出检査的装置,其特征在 于,所述栈溢出判断模块包括第一判断子模块,用于判断浮点寄存器栈中被指 定的栈寄存器是否为空,如果为空,则将指定的溢出检査寄存器的TAG位的 相应位置l,并继续执行;否则,引发浮点栈溢出例外。
5、 根据权利要求1至3任一项所述的浮点栈溢出检査的装置,其特征在 于,所述栈溢出判断模块包括第二判断子模块,用于判断浮点寄存器栈中被指 定的栈寄存器是否有效,如果有效,则将指定的溢出检査寄存器的TAG位的 相应位置0,并继续执行;否则,引发浮点栈溢出例外。
6、 根据权利要求1至3任一项所述的浮点栈溢出检查的装置,其特征在 于,所述栈溢出判断模块包括第三判断子模块,用于判断浮点寄存器栈中被指 定的两个栈寄存器是否都有效,如果都有效,并且栈寄存器中的数据不需要出 栈,则将指定的溢出检査寄存器的TAG位的值保持,并继续执行;否则,引 发浮点栈溢出例外。
7、 根据权利要求1至3任一项所述的浮点栈溢出检査的装置,其特征在 于,所述栈溢出判断模块包括第四判断子模块,用于判断浮点寄存器栈中被指定的两个栈寄存器是否有效,如果都有效,并且有一个栈寄存器中的数据需要 出栈,则将数据出栈的栈寄存器对应的溢出检查寄存器的TAG位所对应的位 置0,然后继续执行;否则,引发浮点栈溢出例外。
8、 根据权利要求1至3任一项所述的浮点栈溢出检查的装置,其特征在 于,所述栈溢出判断模块包括第五判断子模块,用于判断浮点寄存器栈中被指 定的两个栈寄存器是否有效,如果都有效,并且栈寄存器中的数据都需要出栈,则将对应的溢出检査寄存器的TAG位所对应的两位都置0,然后继续执行;否则,引发浮点栈溢出例外。
9、 一种在非复杂指令集计算机处理器上进行浮点栈溢出检查的方法,其 特征在于,以非复杂指令集处理器的多个栈寄存器组成浮点寄存器栈; 一溢出检査寄存器,包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器的状态,包括下列步骤步骤A,检査指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检査寄存器进行操作,进行浮点栈溢出检查。
10、 根据权利要求9所述的浮点栈溢出检査的方法,其特征在于,所述浮点寄存器栈包括8个栈寄存器;所述溢出检査寄存器为一至少8位的多位通用寄存器,分别表示所述8个栈寄存器的0 7位的状态。
11、 根据权利要求IO所述的浮点栈溢出检査的方法,其特征在于,所述 装置为精简指令集计算机处理器。
12、 根据权利要求9至11任一项所述的浮点栈溢出检査的方法,其特征 在于,所述步骤A包括下列步骤判断浮点寄存器栈中被指定的栈寄存器是否为空,如果为空,则将指定的 溢出检查寄存器的TAG位的相应位置1,并继续执行;否则,引发浮点栈溢 出例外。
13、 根据权利要求9至11任一项所述的浮点栈溢出检査的方法,其特征在于,所述步骤A包括下列步骤判断浮点寄存器栈中被指定的栈寄存器是否有效,如果有效,则将指定的溢出检査寄存器的TAG位的相应位置0,并继续执行;否则,引发浮点桟溢 出例外。
14、 根据权利要求9至11任一项所述的浮点栈溢出检查的方法,其特征在于,所述步骤A包括下列步骤判断浮点寄存器栈中被指定的两个栈寄存器是否都有效,如果都有效,并 且栈寄存器中的数据不需要出栈,则将指定的溢出检查寄存器的TAG位的值 保持,并继续执行;否则,引发浮点栈溢出例外。
15、 根据权利要求9至11任-一项所述的浮点栈溢出检査的方法,其特征在于,所述步骤A包括下列歩骤判断浮点寄存器栈中被指定的两个栈寄存器是否有效,如果都有效,并且 有一个栈寄存器中的数据需要出栈,则将数据出栈的栈寄存器对应的溢出检查寄存器的TAG位所对应的位置0,然后继续执行;否则,引发浮点栈溢出例外。
16、 根据权利要求9至11任一项所述的浮点栈溢出检査的方法,其特征在于,所述步骤A包括下列步骤判断浮点寄存器栈中被指定的两个栈寄存器是否有效,如果都有效,并且栈寄存器中的数据都需要出栈,则将对应的溢出检查寄存器的TAG位所对应 的两位都置0,然后继续执行;否则,引发浮点栈溢出例外。
全文摘要
本发明公开了一种在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置和方法。该装置包括一浮点寄存器栈,所述浮点寄存器栈由多个可进行浮点运算的栈寄存器组成;一溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检查,其包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器的状态;一栈溢出判断模块,用于检查指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查。其能大大减少虚拟机的工作量,提高效率。
文档编号G06F7/48GK101158891SQ20071017765
公开日2008年4月9日 申请日期2007年11月19日 优先权日2007年11月19日
发明者刘哲源, 苏孟豪 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1