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

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

Info

Publication number
CN101158891A
CN101158891A CNA2007101776556A CN200710177655A CN101158891A CN 101158891 A CN101158891 A CN 101158891A CN A2007101776556 A CNA2007101776556 A CN A2007101776556A CN 200710177655 A CN200710177655 A CN 200710177655A CN 101158891 A CN101158891 A CN 101158891A
Authority
CN
China
Prior art keywords
stack
register
overflow
floating
point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007101776556A
Other languages
English (en)
Other versions
CN101158891B (zh
Inventor
苏孟豪
刘哲源
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2007101776556A priority Critical patent/CN101158891B/zh
Publication of CN101158891A publication Critical patent/CN101158891A/zh
Application granted granted Critical
Publication of CN101158891B publication Critical patent/CN101158891B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置和方法。该装置包括一浮点寄存器栈,所述浮点寄存器栈由多个可进行浮点运算的栈寄存器组成;一溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检查,其包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器的状态;一栈溢出判断模块,用于检查指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查。其能大大减少虚拟机的工作量,提高效率。

Description

在非CISC处理器上进行浮点栈溢出检查的装置和方法
技术领域
本发明涉及微处理器技术领域,特别是涉及一种在非复杂指令集计算机处理器上支持复杂指令集计算机(CISC)中的浮点栈,进行浮点栈溢出检查,防止浮点栈溢出的装置和方法。
背景技术
中央处理器(CPU)简称微处理器,是计算机的核心单元。微处理器采用的指令集、设计规范(体系结构)是计算机的首要特征,它决定了计算机需要采用的外围设备和应用软件的类型。
当今世界比较流行的两大体系结构分别为:以MIPS公司的MIPS32/64为代表的精简指令集计算机(Reduced Instruction Set Computing,RISC)体系结构和以Intel公司的X86为代表的复杂指令集计算机(Complex Instruction SetComputing,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位的相应位置1,并继续执行;否则,引发浮点栈溢出例外。
所述栈溢出判断模块还包括第二判断子模块,用于判断浮点寄存器栈中被指定的栈寄存器是否有效,如果有效,则将指定的溢出检查寄存器的TAG位的相应位置0,并继续执行;否则,引发浮点栈溢出例外。
所述栈溢出判断模块还包括第三判断子模块,用于判断浮点寄存器栈中被指定的两个栈寄存器是否都有效,如果都有效,并且栈寄存器中的数据不需要出栈,则将指定的溢出检查寄存器的TAG位的值保持,并继续执行;否则,引发浮点栈溢出例外。
所述栈溢出判断模块还包括第四判断子模块,用于判断浮点寄存器栈中被指定的两个栈寄存器是否有效,如果都有效,并且有一个栈寄存器中的数据需要出栈,则将数据出栈的栈寄存器对应的溢出检查寄存器的TAG位所对应的位置0,然后继续执行;否则,引发浮点栈溢出例外。
所述栈溢出判断模块还包括第五判断子模块,用于判断浮点寄存器栈中被指定的两个栈寄存器是否有效,如果都有效,并且栈寄存器中的数据都需要出栈,则将对应的溢出检查寄存器的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为00、01、10当中的任何一个,都代表相应的栈寄存器已经被使用了,不能向里面装入数据,也就是不能再进行存储(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位中,每位对应一个浮点寄存器栈11中的栈寄存器111,每位的值代表不同状态,其中,0表示空,可压栈,不可出栈,否则会溢出;1表示有效,不可再压栈,否则会溢出。
作为一种可实施方式,如图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中被指定的两个栈寄存器111是否都有效,如果都有效,并且栈寄存器111中的数据不需要出栈,则将指定的溢出检查寄存器12的TAG位的值保持,并继续执行;否则,引发浮点栈溢出例外;
第四判断子模块134,用于判断浮点寄存器栈11中被指定的两个栈寄存器111是否有效,如果都有效,并且有一个栈寄存器111中的数据需要出栈,则将数据出栈的栈寄存器111对应的溢出检查寄存器12的TAG位所对应的位置0,然后继续执行;否则,引发浮点栈溢出例外;
第五判断子模块135,用于判断浮点寄存器栈11中被指定的两个栈寄存器111是否有效,如果都有效,并且栈寄存器11中的数据都需要出栈,则将对应的溢出检查寄存器12的TAG位所对应的两位都置0,然后继续执行;否则,引发浮点栈溢出例外。
下面进一步详细说明本发明在非复杂指令集计算机处理器上进行浮点栈溢出检查的方法,其以RISC处理器10的8个栈寄存器111组成浮点寄存器栈11;以一通用寄存器为溢出检查寄存器12,其低8位模拟X86的TAG功能,每位对应一个栈寄存器111的不同状态。
本发明的在非复杂指令集计算机处理器上进行浮点栈溢出检查的方法,包括如下步骤:
步骤S100,检查指定的浮点寄存器栈11中的栈寄存器111,并根据栈寄存器111的值对溢出检查寄存器12进行操作,进行浮点栈溢出检查;
所述步骤S100包括下列步骤:
步骤S110,判断浮点寄存器栈11中被指定的栈寄存器111是否为空,如果为空,则将指定的溢出检查寄存器12的TAG位的相应位置1,并继续执行;否则,引发浮点栈溢出例外;
步骤S120,判断浮点寄存器栈11中被指定的栈寄存器111是否有效,如果有效,则将指定的溢出检查寄存器12的TAG位的相应位置0,并继续执行;否则,引发浮点栈溢出例外;
步骤S130,判断浮点寄存器栈11中被指定的两个栈寄存器111是否都有效,如果都有效,并且栈寄存器中的数据不需要出栈,则将指定的溢出检查寄存器12的TAG位的值保持,并继续执行;否则,引发浮点栈溢出例外;
步骤S140,判断浮点寄存器栈11中被指定的两个栈寄存器111是否有效,如果都有效,并且有一个栈寄存器中的数据需要出栈,则将数据出栈的栈寄存器对应的溢出检查寄存器12的TAG位所对应的位置0,然后继续执行;否则,引发浮点栈溢出例外;
步骤S150,判断浮点寄存器栈11中被指定的两个栈寄存器111是否有效,如果都有效,并且栈寄存器中的数据都需要出栈,则将对应的溢出检查寄存器12的TAG位所对应的两位都置0,然后继续执行;否则,引发浮点栈溢出例外。
下面以对浮点寄存器栈的操作为例,进一步详细说明本发明的在非复杂指令集计算机处理器上进行浮点栈溢出检查的方法。
对浮点寄存器栈11的操作有很多种情况,如图2所示,为浮点寄存器栈11的入栈操作流程图,进行入栈操作时。
首先RISC处理器10确定浮点寄存器栈的栈顶,并读取该栈顶的栈寄存器111对应的溢出检查寄存器12的TAG位;
RISC处理器10根据本发明的浮点寄存器栈11,判断确定浮点寄存器栈11的栈顶,并确定对应的本发明的栈顶的栈寄存器111对应的溢出检查寄存器的TAG位,是一种现有技术,其不是本发明的发明创造,本领域技术人员根据本发明实施例的描述,可以实现上述操作,因此,在本发明中不再一一详细描述说明。
判断栈顶的栈寄存器111对应的溢出检查寄存器的相应TAG位是否为0;
如果是,则将栈顶的栈寄存器111对应的溢出检查寄存器12的相应TAG位置1,并将数据写入该栈寄存器111,并结束返回;
如果否,则引发栈溢出例外。
作为一种可实施的方式,本发明实施例中,选择通用寄存器r(3)作为溢出检查寄存器,r(3)的低8位,也就是bit r(3)_0~bit r(3)_7分别对应浮点寄存器栈中的栈寄存器f(0)~f(7)的状态。
1)如果遇到入栈操作,并且栈顶在栈寄存器f(5);
则判断溢出检查寄存器r(3)的第5位,也就是bit r(3)_4是否为0;
如果为0,则先将溢出检查寄存器的bit r(3)_4置1,然后将数据入栈,存入栈寄存器f(5);
如果为1,则引发栈溢出例外。
2)如果出栈操作,并且栈顶在栈寄存器f(5),
则判断溢出检查寄存器r(3)的第5位,也就是bit r(3)_4是否为1;
如果为1,则先将溢出检查寄存器的bit r(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位,也就是bit r(3)_4是否为1;
如果为0,则引发栈溢出例外;
如果为1,则继续下面的步骤:
判断溢出检查寄存器r(3)的第4位,也就是bit r(3)_3是否为1;
如果为0,则引发栈溢出例外;
如果为1,则继续下面的步骤:
先将溢出检查寄存器的第5位,也就是bit r(3)_4清零,然后继续运算操作;
5)如果是运算并连续出栈操作,并且两个源操作数分别在栈寄存器f(4)和f(5)中;
则判断溢出检查寄存器r(3)的第4位,也就是bit r(3)_3是否为1;
如果为0,则引发栈溢出例外;
如果为1,则将溢出检查寄存器的第4位,也就是bit r(3)_3清零,然后继续下面的步骤:
判断溢出检查寄存器r(3)的第5位,也就是bit r(3)_4是否为1;
如果为1,则将溢出检查寄存器的第5位,也就是bit r(3)_4清零,然后继续运算操作;
如果为0,则引发栈溢出例外。
本发明的在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置和方法,本发明的装置设计精巧简单,硬件开销很少;能够提供了很强的仿真支持,可以省去对浮点栈的模拟维护,大大减少了在读取内存上的时间和空间损失,提高了工作效率。其缩小了不同体系结构间的差异,为协同设计虚拟机以及RISC和x86之间的兼容做出了开拓性的贡献。
通过以上结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (16)

1.一种在非复杂指令集计算机处理器上进行浮点栈溢出检查的装置,其特征在于,包括一浮点寄存器栈,所述浮点寄存器栈由多个可进行浮点运算的栈寄存器组成;
一溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检查,其包括有与所述栈寄存器相应的多个位,每个位分别表示相应的栈寄存器的状态;
一栈溢出判断模块,用于检查指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查。
2.根据权利要求1所述的浮点栈溢出检查的装置,其特征在于,所述浮点寄存器栈包括8个栈寄存器;所述溢出检查寄存器为一至少8位的多位通用寄存器,分别表示所述8个栈寄存器的0~7位的状态。
3.根据权利要求2所述的浮点栈溢出检查的装置,其特征在于,所述装置为精简指令集计算机处理器。
4.根据权利要求1至3任一项所述的浮点栈溢出检查的装置,其特征在于,所述栈溢出判断模块包括第一判断子模块,用于判断浮点寄存器栈中被指定的栈寄存器是否为空,如果为空,则将指定的溢出检查寄存器的TAG位的相应位置1,并继续执行;否则,引发浮点栈溢出例外。
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.根据权利要求10所述的浮点栈溢出检查的方法,其特征在于,所述装置为精简指令集计算机处理器。
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,然后继续执行;否则,引发浮点栈溢出例外。
CN2007101776556A 2007-11-19 2007-11-19 在非cisc处理器上进行浮点栈溢出检查的装置和方法 Active CN101158891B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101776556A CN101158891B (zh) 2007-11-19 2007-11-19 在非cisc处理器上进行浮点栈溢出检查的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101776556A CN101158891B (zh) 2007-11-19 2007-11-19 在非cisc处理器上进行浮点栈溢出检查的装置和方法

Publications (2)

Publication Number Publication Date
CN101158891A true CN101158891A (zh) 2008-04-09
CN101158891B CN101158891B (zh) 2010-07-21

Family

ID=39307003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101776556A Active CN101158891B (zh) 2007-11-19 2007-11-19 在非cisc处理器上进行浮点栈溢出检查的装置和方法

Country Status (1)

Country Link
CN (1) CN101158891B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150521A (zh) * 2013-03-07 2013-06-12 周海林 一种高性能微处理器寄存器及其内存地址弹性保护方法
CN112199116A (zh) * 2020-10-16 2021-01-08 常熟理工学院 操作数栈寄存器识别方法、装置、设备及存储介质
CN112948000A (zh) * 2021-03-17 2021-06-11 星汉智能科技股份有限公司 栈空间统计方法、装置及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054898B1 (en) * 2000-08-04 2006-05-30 Sun Microsystems, Inc. Elimination of end-around-carry critical path in floating point add/subtract execution unit
CN1320451C (zh) * 2002-04-18 2007-06-06 皇家飞利浦电子股份有限公司 具有数据溢出装置的vliw处理器
CN1447244A (zh) * 2003-04-03 2003-10-08 杭州中天微系统有限公司 一种设计在cpu里的侦测缓冲区溢出的方法
CN1818822A (zh) * 2005-02-07 2006-08-16 福建东方微点信息安全有限责任公司 缓冲区溢出攻击的检测方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150521A (zh) * 2013-03-07 2013-06-12 周海林 一种高性能微处理器寄存器及其内存地址弹性保护方法
WO2014135052A1 (zh) * 2013-03-07 2014-09-12 成都腾悦科技有限公司 一种高性能微处理器寄存器及其内存地址弹性保护方法
CN103150521B (zh) * 2013-03-07 2015-05-13 周海林 一种高性能微处理器寄存器及其内存地址弹性保护方法
CN112199116A (zh) * 2020-10-16 2021-01-08 常熟理工学院 操作数栈寄存器识别方法、装置、设备及存储介质
CN112199116B (zh) * 2020-10-16 2023-08-11 常熟理工学院 操作数栈寄存器识别方法、装置、设备及存储介质
CN112948000A (zh) * 2021-03-17 2021-06-11 星汉智能科技股份有限公司 栈空间统计方法、装置及介质
CN112948000B (zh) * 2021-03-17 2023-03-03 星汉智能科技股份有限公司 栈空间统计方法、装置及介质

Also Published As

Publication number Publication date
CN101158891B (zh) 2010-07-21

Similar Documents

Publication Publication Date Title
CN100555225C (zh) 一种支持x86虚拟机的risc处理器装置及方法
CN100480994C (zh) 分支目标缓冲器及其使用方法
TWI507980B (zh) 最佳化暫存器初始化操作
CN101627366B (zh) 预加载指令的方法及装置
CN101198930B (zh) 用于支持计算机系统中的数据值一致性的系统和方法
CN103150146A (zh) 基于可扩展处理器架构的专用指令集处理器及其实现方法
CN103257849A (zh) 程序执行控制装置
US20110231633A1 (en) Operand size control
CN101802779B (zh) 具有可重新组构的浮点单元的处理器
CN102298514A (zh) 用于有效动态二进制变换的寄存器映射技术
KR100368166B1 (ko) 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법
CN101216756B (zh) 一种risc处理器装置及其模拟浮点栈操作的方法
CN100535851C (zh) 一种浮点数据转换装置和方法
CN108733412B (zh) 一种运算装置和方法
CN100451951C (zh) Risc cpu中的5+3级流水线设计方法
CN101158891B (zh) 在非cisc处理器上进行浮点栈溢出检查的装置和方法
US20160378498A1 (en) Systems, Methods, and Apparatuses for Last Branch Record Support
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
US20020056034A1 (en) Mechanism and method for pipeline control in a processor
CN110058884B (zh) 用于计算型存储指令集运算的优化方法、系统及存储介质
WO2013095558A1 (en) Method, apparatus and system for execution of a vector calculation instruction
CN102436781B (zh) 基于隐式相关性和隐式旁路的微处理器指令拆分装置
CN101226468A (zh) 一种risc处理器装置及其有界访存方法
CN109683959B (zh) 处理器的指令执行方法及其处理器
US11775336B2 (en) Apparatus and method for performance state matching between source and target processors based on interprocessor interrupts

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
EE01 Entry into force of recordation of patent licensing contract

Assignee: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract fulfillment period: 2009.12.16 to 2028.12.31

Contract record no.: 2010990000062

Denomination of invention: Apparatus and method for checking floating point stack overflow on non-CISC processor

License type: exclusive license

Record date: 20100128

LIC Patent licence contract for exploitation submitted for record

Free format text: EXCLUSIVE LICENSE; TIME LIMIT OF IMPLEMENTING CONTACT: 2009.12.16 TO 2028.12.31; CHANGE OF CONTRACT

Name of requester: BEIJING LOONGSON TECHNOLOGY SERVICE CENTER CO., LT

Effective date: 20100128

C14 Grant of patent or utility model
GR01 Patent grant
EC01 Cancellation of recordation of patent licensing contract

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2010990000062

Date of cancellation: 20141231

EM01 Change of recordation of patent licensing contract

Change date: 20141231

Contract record no.: 2010990000062

Assignee after: Longxin Zhongke Technology Co., Ltd.

Assignee before: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20080409

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: Apparatus and method for checking floating point stack overflow on non-CISC processor

Granted publication date: 20100721

License type: Common License

Record date: 20150211

TR01 Transfer of patent right

Effective date of registration: 20200824

Address after: 100095, Beijing, Zhongguancun Haidian District environmental science and technology demonstration park, Liuzhou Industrial Park, No. 2 building

Patentee after: LOONGSON TECHNOLOGY Corp.,Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

TR01 Transfer of patent right
EC01 Cancellation of recordation of patent licensing contract

Assignee: LOONGSON TECHNOLOGY Corp.,Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Date of cancellation: 20200928

EC01 Cancellation of recordation of patent licensing contract
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.