本发明专利技术公开了一种在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置和方法。该装置包括一浮点寄存器栈,所述浮点寄存器栈由多个可进行浮点运算的栈寄存器组成;一溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检查,其包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器的状态;一栈溢出判断模块,用于检查指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查。其能大大减少虚拟机的工作量,提高效率。
【技术实现步骤摘要】
本专利技术涉及微处理器
,特别是涉及一种在非复杂指令集计算机处理器上支持复杂指令集计算机(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,然后继续执行;否则,引发浮点栈溢出例外。本专利技术的有益效果是本专利技术的在非复杂指令集计算机处理器上进行浮点 栈溢出检本文档来自技高网...
【技术保护点】
一种在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置,其特征在于,包括一浮点寄存器栈,所述浮点寄存器栈由多个可进行浮点运算的栈寄存器组成;一溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检查,其包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器的状态;一栈溢出判断模块,用于检查指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查。
【技术特征摘要】
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任一项所述的浮点栈溢出检查的装置,其特征在 于,所述栈溢出判断模块包括第五判断子模块,用于判断浮点寄存器栈中被指 定的两个栈寄存器是否有效,如果都有效,并且栈寄存器中的数据都需要出栈,则将对应的溢出...
【专利技术属性】
技术研发人员:苏孟豪,刘哲源,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。