CN101216756A - 一种risc处理器装置及其模拟浮点栈操作的方法 - Google Patents

一种risc处理器装置及其模拟浮点栈操作的方法 Download PDF

Info

Publication number
CN101216756A
CN101216756A CNA2007103046562A CN200710304656A CN101216756A CN 101216756 A CN101216756 A CN 101216756A CN A2007103046562 A CNA2007103046562 A CN A2007103046562A CN 200710304656 A CN200710304656 A CN 200710304656A CN 101216756 A CN101216756 A CN 101216756A
Authority
CN
China
Prior art keywords
stack
register
point
floating
pointer
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
CNA2007103046562A
Other languages
English (en)
Other versions
CN101216756B (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 CN2007103046562A priority Critical patent/CN101216756B/zh
Publication of CN101216756A publication Critical patent/CN101216756A/zh
Priority to EP08871886A priority patent/EP2226718A4/en
Priority to US12/746,882 priority patent/US8788796B2/en
Priority to KR1020107012687A priority patent/KR101159603B1/ko
Priority to CA2709613A priority patent/CA2709613C/en
Priority to PCT/CN2008/002005 priority patent/WO2009094827A1/zh
Priority to JP2010539999A priority patent/JP5441918B2/ja
Application granted granted Critical
Publication of CN101216756B publication Critical patent/CN101216756B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种RISC处理器装置及其模拟浮点栈操作的方法。该处理器装置包括浮点寄存器堆,译码部件和浮点运算部件,还包括控制寄存器,用于控制利用所述浮点寄存器堆模拟浮点寄存器栈;所述译码部件,包括一指针寄存器,用于维护一栈操作指针,存储栈操作指针的值;所述浮点运算部件,包括一指针操作模块,用于对所述指针寄存器进行操作,在对模拟浮点寄存器栈进行操作时,模拟指针寄存器的栈指针的栈操作,修改并监控栈指针的状态。其提高虚拟机效率,增强处理器兼容性。

Description

一种RISC处理器装置及其模拟浮点栈操作的方法
技术领域
本发明涉及微处理器技术领域,特别是涉及一种精简指令集计算机(RISC)处理器装置及其模拟浮点栈操作,进行浮点数据的压栈和退栈等栈操作的方法。
背景技术
中央处理器(CPU)简称微处理器,是计算机的核心单元。微处理器采用的指令集、设计规范(体系结构)是计算机的首要特征,它决定了计算机需要采用的外围设备和应用软件的类型。
当今世界比较流行的两大处理器体系结构分别为:以MIPS公司的MIPS32/64指令集为代表的精简指令集计算机(Reduced Instruction SetComputing,RISC)处理器体系结构和以Intel公司的X86为代表的复杂指令集计算机(Complex Instruction Set Computing,CISC)处理器体系结构。CISC处理器指令数量繁多,一些指令可执行相当复杂的功能,一般需要许多时钟周期来执行;RISC处理器使用较少数量的可用指令,以更高的速率执行一组更简单的功能。而采用不同的体系结构的处理器上运行的程序软件需要针对处理器的体系结构专门编写,X86上的应用软件通常不能在MIPS指令集的RSIC处理器的计算机上运行,即常说的不兼容。
然而计算机制造商希望通过在自己制造的一种体系结构的微处理器上运行更多的现有软件来节省软件开发的开销,同时达到市场占有率最大化的目的。
为了解决这一问题,虚拟机应运而生。一般地,将具有一种类型体系结构的处理器(CPU)计算机称为主机;同时将需要主机仿真的,不相关体系结构类型的处理器(CPU)环境称为目标机,需要一种应用程序,这种程序能够促使主机执行一个或多个主机指令,响应于给定的目标机指令,运行为目标机编写的软件,这种程序就叫虚拟机。
目前现有的虚拟机有:SimOS,QEMU,Transmeta等,但是现有的虚拟机由于各种体系结构的巨大差异造成虚拟机运行开销过大,执行效率过低,很难应用到实际工作中。
由于X86处理器体系结构是目前个人计算机(PC)上较流行的一类结构,所以多数虚拟机都以X86处理器体系结构为目标机,都需要解决向X86处理器兼容的问题,而众所周知的棘手问题是对X86处理器所具有的独特的浮点栈机制的模拟。一般地,CISC类处理器,如X86,中都设置一个浮点寄存器栈,大部分浮点运算都是在寄存器栈参与下进行的。而除了X86处理器外,其他处理器,特别是MIPS指令集的RISC处理器没有类似的结构,由此带来的如何在虚拟机上进行浮点翻译是众多虚拟机研发部门迫切需要解决的热点问题。
X86处理器的浮点运算提供了压栈(浮点装入指令)、退栈(浮点保存指令)、浮点运算指令和一些其他的辅助指令,程序可以通过浮点装入指令将内存中的浮点数据压入浮点寄存器栈中,通过浮点运算指令对浮点数据进行运算,通过浮点保存指令进行退栈,并将栈顶寄存器的内容保存到内存单元中。
这种浮点运算方式是CISC处理器,如X86处理器所独有的,其他类型的处理器,如MIPS指令集的RISC处理器基本上都没有类似的运算方式。
一般而言,在非CISC处理器,如使用MIPS指令集的RISC处理器内部,设置若干个通用的浮点寄存器,这些浮点寄存器统一编号,指令通过这些编号来直接访问一个固定的浮点寄存器,而X86处理器中,指令所操作的寄存器随着栈顶指针的变化而变化。一般地,为了解决二进制数据翻译问题,非CISC处理器,如RISC处理器需要在内存中开辟一块空间,维护一个仿真的X86浮点寄存器栈。
申请号为200410074532.6的中国申请,公开了一种二进制翻译中对X86中浮点运算的处理方法,包括以下步骤:在运行时环境中设置一个浮点栈,用于仿真X86中的物理浮点栈;通过浮点寄存器映射的处理和归一方法依次对源二进制程序中的每个基本块进行处理。其通过用目标机器的寄存器来映射X86的源寄存器,保证了X86处理器的浮点运算在目标机器上也是由寄存器来实现,确保运算的效率;采用归一的方法,确保每个基本块的入口满足每次top的值相同的假设。
但是,这些现有技术虽然能够准确仿真各种X86浮点操作,但是效率非常低下,无法在性能上实现飞跃。
发明内容
本发明所要解决的问题是提供一种RISC处理器装置及其模拟浮点栈操作的方法,其在RISC处理器上能够支持浮点栈操作,从而方便不同架构的虚拟机进行二进制翻译工作,提高虚拟机效率,增强处理器兼容性。
为实现本发明而提供的一种RISC处理器装置,包括浮点寄存器堆,译码部件和浮点运算部件,还包括控制寄存器,用于控制利用所述浮点寄存器堆模拟浮点寄存器栈操作;
所述译码部件,包括一指针寄存器,用于维护一栈操作指针,存储栈操作指针的值;
所述浮点运算部件,包括一指针操作模块,用于对所述指针寄存器进行操作,在模拟所述浮点寄存器栈操作时,模拟所述指针寄存器的栈操作指针的栈操作,修改并监控栈操作指针的状态。
所述控制模拟浮点寄存器栈,是指所述控制寄存器维护一个栈使能位,当使能位置1时,表示处理器将模拟浮点寄存器栈操作;当使能位置0时,表示处理器将不模拟浮点寄存器栈操作。
所述模拟浮点寄存器栈,是利用RISC处理器中编号为0~31的32个浮点寄存器,模拟得到的。
所述栈操作指针为被读、写、增1、减1操作的栈操作指针。
所述利用32个浮点寄存器,模拟得到浮点寄存器栈,是指所述控制寄存器中的栈使能位被置1时,选择32个浮点寄存器中的8个寄存器,模拟X86处理器的序号为0~7浮点寄存器栈的栈寄存器。
为实现本发明目的还提供一种RISC处理器模拟浮点栈操作的方法,包括下列步骤:
步骤A,根据栈使能位,决定是否选定浮点寄存器用于模拟浮点寄存器栈操作,并设置指针寄存器;
步骤B,在模拟浮点寄存器栈操作时,对指针寄存器进行操作,模拟栈操作指针的栈操作,修改并监控栈操作指针的状态。
所述步骤A包括下列步骤:
步骤A1,在控制寄存器中选择一位为浮点栈使能位;当使能位置1时,表示模拟X86的浮点寄存器栈,进行浮点寄存器栈操作;当使能位置0时,表示不模拟X86的浮点寄存器栈,不进行浮点寄存器栈操作,处理器按照正常的过程工作;
步骤A2,设置一个至少3位的指针寄存器,存放栈操作指针的值。
所述步骤B包括下列步骤:
设置栈操作模式,浮点栈使能位置1,允许用户模拟浮点寄存器栈栈操作;
清除栈操作模式,浮点栈使能位置0,不允许用户模拟浮点寄存器栈进行浮点栈操作;
栈操作指针值增1;
栈操作指针值减1;
读栈操作指针值;
写栈操作指针值。
本发明的有益效果是:本发明的RISC处理器装置及其模拟浮点栈操作的方法,提供了很强的仿真支持,可以省去对浮点栈的模拟维护,大大减少在读取内存上的时间和空间损失,提高工作效率。并缩小了不同处理器体系结构间的差异,为协同设计虚拟机以及RISC和CISC处理器之间的兼容做出开拓性的贡献。
附图说明
图1为本发明RISC处理器装置结构示意图;
图2为本发明RISC处理器模拟浮点栈操作流程图;
图3为本发明实施例利用MIPS指令集实现设置栈操作模式使能位置1指令编码示意图;
图4为本发明实施例利用MIPS指令集实现清除栈操作模块使能位置0指令编码示意图;
图5为本发明实施例利用MIPS指令集实现栈指针值增1指令编码示意图;
图6为本发明实施例利用MIPS指令集实现栈指针值减1指令编码示意图;
图7为本发明实施例利用MIPS指令集实现读栈指针值指令编码示意图;
图8为本发明实施例利用MIPS指令集实现写栈指针值指令编码示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种RISC处理器及其模拟浮点栈操作的方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例以MIPS64指令集的RISC处理器装置为例,而对本发明的RISC处理器装置及其模拟浮点栈操作的方法而进行说明,但是,应当指明的是,其不是对本发明权利要求的限定。
本发明实施例中,以提供一种RISC处理器及其模拟浮点栈操作的方法,其应用在协同设计虚拟机中,在RISC处理器上支持CISC处理器架构浮点栈操作,如X86处理器中的浮点栈操作。
为了更深入理解本发明,本发明实施例先说明CISC处理器体系结构,如X86处理器的浮点栈操作方法。
X86处理器的浮点部件中包括一个浮点寄存器栈,该栈由8个可直接进行浮点运算的栈寄存器组成,按照顺序进行编号,分别是0~7。之所以称该寄存器是浮点寄存器栈,其原因在于X86处理器将它们作为一个堆栈进行使用。浮点寄存器栈是一个向下扩展的循环栈,处理器利用另外一个寄存器中的3位来标记栈顶所在的位置,这3位被称为TOP指针。
当需要向栈寄存器中装入数据,即压栈的时候,TOP指针的值减1,然后将数据存储到由TOP指针所指示的浮点寄存器中,当TOP指针值为0时,下一次压栈则将数据压入7号栈寄存器中,TOP指针的值则被设置成7。
当需要将堆栈中的数据保存到内存中,即弹出退栈的时候,则进行退栈操作,退栈操作与压栈操作类似,TOP指针通过增1进行,如果此时TOP指针值是7,则退栈后的TOP指针值设置位0。
在X86处理器中,所述压栈和弹栈操作由硬件自动实现,对用户而言是透明的。
通过指令对浮点数据进行操作时,所见到的浮点寄存器是ST(0)、S(1)、……、ST(7)。其中,ST(i)是指距离栈顶第i个单元的寄存器,如果TOP指针值是2,则ST(0)为第2号寄存器,ST(1)为第3号寄存器,依此类推。
下面详细描述本发明的RISC处理器装置。
本发明的RISC处理器,包括现有的浮点寄存器堆4,译码部件2,浮点运算部件3。
所述的RISC处理器,还包括控制寄存器1,用于控制利用浮点寄存器堆4使能或禁止模拟浮点寄存器栈。
其维护一个栈使能位,当使能位置1时,表示处理器将模拟X86处理器的浮点寄存器栈操作;当使能位置0时,表示处理器将不模拟X86处理器的浮点寄存器栈操作,处理器按照正常的过程进行操作处理。
本发明实施例中,利用RISC处理器中编号为0~31的32个现有的浮点寄存器,模拟X86处理器的浮点寄存器栈操作。
所述译码部件2包括一个指针寄存器21,用于维护一个TOP指针,也就是栈操作指针,存储TOP指针的值,这个TOP指针可以被读、写、增1、减1等。
所述浮点运算部件3,包括一指针操作模块31,用于对指针寄存器21进行操作,在模拟浮点寄存器栈操作时,模拟指针寄存器21的栈操作指针的栈操作,修改并监控栈操作指针的状态。
作为一种可实施方式,如果控制寄存器1中的栈使能位被置位1,则选择32个浮点寄存器中的8个寄存器,用于模拟X86处理器的浮点寄存器栈的栈寄存器,序号为0~7。
如果控制寄存器1中的栈使能位被置位1,则在运算中被使用,表示寄存器模拟的浮点寄存器栈存在,那么凡是浮点运算指令中用到的编号小于8的寄存器,都被当作浮点寄存器栈的栈寄存器使用,从而模拟X86处理器的浮点寄存器栈。
其后指针操作模块31使用TOP指针进行栈寄存器号进行转换,即用户所见的浮点寄存器号跟程序使用的浮点寄存器号转换,例如,寄存器号是指距离栈顶第i个单元的寄存器ST(i)加上TOP指针值。如果TOP指针值是2,则ST(0)为第2号寄存器,ST(1)为第3号寄存器。如果溢出也有相应处理,使得这组寄存器形成了一个循环栈,完成了本发明要实现的模拟x86中浮点寄存器栈的功能。然后进行后续工作,后续工作与没有置位栈使能相同;
如果控制寄存器1中的栈使能位被置位0,即被清零,则在运算中,认为寄存器模拟栈不存在,按照现有的工作步骤正常工作。
下面进一步详细说明本发明RISC处理器模拟浮点栈操作的方法,其以RISC处理器的8个浮点寄存器组成浮点寄存器栈,通过控制寄存器1,并模拟X86的TOP指针功能,即栈指针操作功能,完成模拟浮点寄存器的栈操作。
本发明的RISC处理器模拟浮点栈操作的方法,包括如下步骤:
步骤S100,根据栈使能位,决定是否选定8个浮点寄存器用于模拟浮点寄存器栈中8个栈寄存器,模拟浮点寄存器栈操作,并设置指针寄存器;
所述步骤S100包括下列步骤:
步骤S110,在控制寄存器1中选择一位为浮点栈使能位;当使能位置1时,表示将模拟X86处理器的浮点栈,进行浮点栈操作;当使能位置0时,表示不模拟X86处理器的浮点栈,不能进行浮点栈操作,处理器按照正常的过程工作;
步骤S120,设置一个至少3位的指针寄存器21,存放TOP指针的值。
该TOP指针的值可以被读、写、增1、减1,TOP指针的范围是0~7。
TOP指针在压栈时压入7号寄存器,TOP指针的值被设置成6;在弹栈时如果TOP指针值为7,则弹栈后TOP指针值设置位0。
因为TOP指针永远指向栈顶寄存器,本栈为自顶向下生长,即压栈时TOP指针值减一,弹出时TOP指针值增一,所以向7号寄存器存入数据时(也就是向7号寄存器压栈),TOP指针值应该减一变为6。当从7号寄存器中弹出数据时,TOP指针值应该加1变为8,但是由于只有0~7号共8个寄存器,所以TOP指针值最大为7,当加一时,TOP指针应该指向下一个寄存器,也就是循环栈中的0号寄存器,此时TOP指针值应该变为0。
例如,如果TOP指针的值为3,当使能位为1时,如果参与运算的浮点寄存器为$f(i):i<=7,则用浮点寄存器$f(j)替换浮点寄存器$f(i)进行运算,其中j=(i+3)mod 8;
如果寄存器$f(i):i>7,则无需改变,直接使用浮点寄存器$f(i)。
步骤S200,在模拟浮点寄存器栈操作时,对指针寄存器21进行操作,模拟栈操作指针的栈操作,修改并监控栈操作指针的状态。
所述步骤S200包括下列步骤:
步骤S210,设置栈操作模式,浮点栈使能位置1,允许用户模拟浮点寄存器栈进行浮点栈操作;
作为一种可实施方式,设置模拟浮点栈模式,为X86浮点栈模式置位1可以通过下式指令而执行。
其指令格式为:SETTM
本发明提供的扩展指令的指令编码如图3所示。其利用MIPS指令集中的SPECIAL2的空的保留值来定义扩展指令。
通过指令完成使能位置1操作,为X86浮点栈模式置位,允许用户使用x86浮点栈进行浮点操作。
步骤S220,清除栈操作模式,浮点栈使能位置0,不允许用户模拟浮点寄存器栈进行浮点栈操作;
作为一种可实施方式,本发明实施例清模拟浮点栈模式,X86浮点栈模式置位0的指令格式为:CLRTM
本发明提供的扩展指令的指令编码如图4所示。
其为X86浮点栈模式清位,不允许用户使用x86浮点栈,而只能使用MIPS处理器的浮点寄存器进行浮点操作。
该置位、清零的栈指针操作指令可以分别完成浮点寄存器栈的激活、禁用工作。
步骤S230,栈操作指针值增1,即TOP指针的值增1;
作为一种可实施方式,本发明实施例栈指针值增1,即TOP指针的值增1的指令格式为:INCTOP
本发明提供的扩展指令的指令编码如图5所示。
步骤S240,栈操作指针值减1,即TOP指针的值减1;
作为一种可实施方式,本发明实施例栈指针值减1,即TOP指针的值减1的指令格式为:DECTOP
本发明提供的扩展指令的指令编码如图6所示。
该TOP指针的值增1、减1指令可以分别模拟X86处理器浮点栈中的入栈、出栈工作;
步骤250,读栈操作指针值,即读出TOP指针的值;
作为一种可实施方式,本发明实施例读出TOP指针值操作的指令格式为:MFTOP rd
其指令功能为将X86浮点栈顶指针的值读入寄存器GPR[rd]。
本发明提供的扩展指令的指令编码如图7所示。
步骤S260,写栈操作指针值,即在指针寄存器21中写入当前TOP指针的值。
作为一种可实施方式,本发明实施例完成写TOP指针值操作的指令格式为:MTTOP imm
其指令功能为将三位的立即数imm写入x86浮点栈顶指针。
本发明提供的扩展指令的指令编码如图8所示。
该读、写TOP指针指令可以方便的控制操作浮点栈。
为了能更好地理解本发明的RISC处理器模拟浮点栈操作的方法,下面以加法运算中栈指针操作为例进行说明。
在使能位是1,TOP指针值为2时,运算add.s$f(6),$f(1),$f(9)在RISC处理器内部进行如下转换:
模拟X86浮点栈操作被激活,即使能位置1;
用$f(0)替换$f(6);    //6+2mod 8=0
用$f(3)替换$f(1);    //1+2mod 8=3
$f(9)无需转换;       //9>7所以无需变换,直接使用寄存器$f(9)
最终实际进行运算的表达式为add.s$f(0),$f(3),$f(9)
而此时没有入栈和出栈操作,所以TOP值不会发生变化。
该详细过程如步骤S100中所描述。其模拟了x86中的循环栈结构,增加了处理器间的兼容性,为虚拟机和编译器中的二进制翻译提供了方便,提高了程序运行的效率。
通过以上结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (13)

1.一种RISC处理器装置,包括浮点寄存器堆,译码部件和浮点运算部件,其特征在于,还包括控制寄存器,用于控制利用所述浮点寄存器堆模拟浮点寄存器栈操作;
所述译码部件,包括一指针寄存器,用于维护一栈操作指针,存储栈操作指针的值;
所述浮点运算部件,包括一指针操作模块,用于对所述指针寄存器进行操作,在模拟所述浮点寄存器栈操作时,模拟所述指针寄存器的栈操作指针的栈操作,修改并监控栈操作指针的状态。
2.根据权利要求1所述的RISC处理器装置,其特征在于,所述控制模拟浮点寄存器栈,是指所述控制寄存器维护一个栈使能位,当使能位置1时,表示处理器将模拟浮点寄存器栈操作;当使能位置0时,表示处理器将不模拟浮点寄存器栈操作。
3.根据权利要求1所述的RISC处理器装置,其特征在于,所述模拟浮点寄存器栈,是利用RISC处理器中编号为0~31的32个浮点寄存器,模拟得到的。
4.根据权利要求1所述的RISC处理器装置,其特征在于,所述栈操作指针为被读、写、增1、减1操作的栈操作指针。
5.根据权利要求3所述的RISC处理器装置,其特征在于,所述利用32个浮点寄存器,模拟得到浮点寄存器栈,是指所述控制寄存器中的栈使能位被置1时,选择32个浮点寄存器中的8个寄存器,模拟X86处理器的浮点寄存器栈的序号为0~7的栈寄存器,。
6.一种RISC处理器模拟浮点栈操作的方法,其特征在于,包括下列步骤:
步骤A,根据栈使能位,决定是否选定浮点寄存器用于模拟浮点寄存器栈操作,并设置指针寄存器;
步骤B,在模拟浮点寄存器栈操作时,对指针寄存器进行操作,模拟栈操作指针的栈操作,修改并监控栈操作指针的状态。
7.根据权利要求6所述的模拟浮点栈操作的方法,其特征在于,所述步骤A包括下列步骤:
步骤A1,在控制寄存器中选择一位为浮点栈使能位;当使能位置1时,表示模拟X86的浮点寄存器栈,进行浮点寄存器栈操作;当使能位置0时,表示不模拟X86的浮点寄存器栈,不进行浮点寄存器栈操作,处理器按照正常的过程工作;
步骤A2,设置一个至少3位的指针寄存器,存放栈操作指针的值。
8.根据权利要求6或7所述的模拟浮点栈操作的方法,其特征在于,所述步骤B包括下列步骤:
设置栈操作模式,浮点栈使能位置1,允许用户模拟浮点寄存器栈操作。
9.根据权利要求6或7所述的模拟浮点栈操作的方法,其特征在于,所述步骤B包括下列步骤:
清除栈操作模式,浮点栈使能位置0,不允许用户模拟浮点寄存器栈操作。
10.根据权利要求6或7所述的模拟浮点栈操作的方法,其特征在于,所述步骤B包括下列步骤:
栈操作指针值增1。
11.根据权利要求6或7所述的模拟浮点栈操作的方法,其特征在于,所述步骤B包括下列步骤:
栈操作指针值减1。
12.根据权利要求6或7所述的模拟浮点栈操作的方法,其特征在于,所述步骤B包括下列步骤:
读栈操作指针值。
13.根据权利要求6或7所述的模拟浮点栈操作的方法,其特征在于,所述步骤B包括下列步骤:
写栈操作指针值。
CN2007103046562A 2007-12-28 2007-12-28 一种risc处理器装置及其模拟浮点栈操作的方法 Active CN101216756B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN2007103046562A CN101216756B (zh) 2007-12-28 2007-12-28 一种risc处理器装置及其模拟浮点栈操作的方法
EP08871886A EP2226718A4 (en) 2007-12-28 2008-12-12 RISC PROCESSOR DEVICE AND METHOD FOR SIMULATING SLIDING COMBUSTION PROCESSES THEREWITH
US12/746,882 US8788796B2 (en) 2007-12-28 2008-12-12 Technique for simulating floating-point stack operation involving conversion of certain floating-point register numbers based on a top-of-stack pointer and modulo function
KR1020107012687A KR101159603B1 (ko) 2007-12-28 2008-12-12 Risc 프로세서 장치 및 그의 부동 소수점 스택 조작 에뮬레이션 방법
CA2709613A CA2709613C (en) 2007-12-28 2008-12-12 Risc processor device and method of simulating floating-point stack operation thereof
PCT/CN2008/002005 WO2009094827A1 (en) 2007-12-28 2008-12-12 Risc processor device and method of simulating floating-point stack operation thereof
JP2010539999A JP5441918B2 (ja) 2007-12-28 2008-12-12 Riscプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007103046562A CN101216756B (zh) 2007-12-28 2007-12-28 一种risc处理器装置及其模拟浮点栈操作的方法

Publications (2)

Publication Number Publication Date
CN101216756A true CN101216756A (zh) 2008-07-09
CN101216756B CN101216756B (zh) 2011-03-23

Family

ID=39623195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007103046562A Active CN101216756B (zh) 2007-12-28 2007-12-28 一种risc处理器装置及其模拟浮点栈操作的方法

Country Status (7)

Country Link
US (1) US8788796B2 (zh)
EP (1) EP2226718A4 (zh)
JP (1) JP5441918B2 (zh)
KR (1) KR101159603B1 (zh)
CN (1) CN101216756B (zh)
CA (1) CA2709613C (zh)
WO (1) WO2009094827A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009094827A1 (en) * 2007-12-28 2009-08-06 Institute Of Computing Technology Of The Chinese Academy Of Sciences Risc processor device and method of simulating floating-point stack operation thereof

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347288B1 (en) * 2009-12-28 2013-01-01 Amazon Technologies, Inc. System and method for verification of repeatable virtualized computing
US8572613B1 (en) 2009-12-28 2013-10-29 Amazon Technologies, Inc. Comparison of virtual computing states by performing identified repeatable computations in a changing virtual computing environment
US10169043B2 (en) 2015-11-17 2019-01-01 Microsoft Technology Licensing, Llc Efficient emulation of guest architecture instructions
US10423218B1 (en) 2018-03-12 2019-09-24 Micron Technology, Inc. Power management integrated circuit with in situ non-volatile programmability
US10802754B2 (en) * 2018-03-12 2020-10-13 Micron Technology, Inc. Hardware-based power management integrated circuit register file write protection
JP7487535B2 (ja) * 2020-04-08 2024-05-21 富士通株式会社 演算処理装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
JP3544330B2 (ja) * 1992-03-31 2004-07-21 トランスメタ コーポレイション 命令ストリームの変換システム
US5673407A (en) 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6651159B1 (en) * 1999-11-29 2003-11-18 Ati International Srl Floating point register stack management for CISC
JP2001331305A (ja) * 2000-05-22 2001-11-30 Hitachi Ltd 浮動小数点演算命令エミュレーション方法
US6725361B1 (en) * 2000-06-16 2004-04-20 Transmeta Corporation Method and apparatus for emulating a floating point stack in a translation process
KR20040034601A (ko) * 2001-04-23 2004-04-28 아트멜 코포레이숀 바이트 컴파일된 자바 코드를 실행하는 마이크로 프로세서
US7363475B2 (en) * 2004-04-19 2008-04-22 Via Technologies, Inc. Managing registers in a processor to emulate a portion of a stack
CN100345117C (zh) 2004-09-07 2007-10-24 中国科学院计算技术研究所 二进制翻译中对x86中浮点运算的处理方法
US7478224B2 (en) 2005-04-15 2009-01-13 Atmel Corporation Microprocessor access of operand stack as a register file using native instructions
CN101216756B (zh) 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种risc处理器装置及其模拟浮点栈操作的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009094827A1 (en) * 2007-12-28 2009-08-06 Institute Of Computing Technology Of The Chinese Academy Of Sciences Risc processor device and method of simulating floating-point stack operation thereof

Also Published As

Publication number Publication date
CN101216756B (zh) 2011-03-23
EP2226718A1 (en) 2010-09-08
EP2226718A4 (en) 2011-01-12
KR101159603B1 (ko) 2012-06-27
KR20100081366A (ko) 2010-07-14
US8788796B2 (en) 2014-07-22
US20100274991A1 (en) 2010-10-28
CA2709613C (en) 2015-10-27
JP5441918B2 (ja) 2014-03-12
JP2011508324A (ja) 2011-03-10
CA2709613A1 (en) 2009-08-06
WO2009094827A1 (en) 2009-08-06

Similar Documents

Publication Publication Date Title
CN101216756B (zh) 一种risc处理器装置及其模拟浮点栈操作的方法
CN100555225C (zh) 一种支持x86虚拟机的risc处理器装置及方法
TWI407366B (zh) 具有微代碼之微處理器、在微處理器中儲存資料的方法、以及使用於計算裝置之電腦程式產品
CN105051680B (zh) 用于在处理器内部的硬件并行执行道上处理指令的处理器及方法
EP0938703B1 (en) Real time program language accelerator
CN103150146A (zh) 基于可扩展处理器架构的专用指令集处理器及其实现方法
CN101156131A (zh) 使用本机指令将操作数堆栈作为寄存器堆的微处理器存取
RU2002129004A (ru) Запоминание операндов стека в регистре
CN105074657B (zh) 并行管道中的发散分支的硬件和软件解决方案
CN100535851C (zh) 一种浮点数据转换装置和方法
CN101847096B (zh) 包含栈变量函数的优化方法
CN104346132A (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
CN100451951C (zh) Risc cpu中的5+3级流水线设计方法
JPS5621242A (en) Pipeline control method for computer operation
GB2429084A (en) Operating system coprocessor support module
CN101158891B (zh) 在非cisc处理器上进行浮点栈溢出检查的装置和方法
JP4465081B2 (ja) Vliwプロセッサにおける効率的なサブ命令エミュレーション
CN101216755B (zh) Risc处理器及其浮点寄存器的非对齐访存方法
TW200535698A (en) Apparatus and method for managing registersn in a processor to emulate a portion of a stack
CN100583030C (zh) 一种risc处理器及其数据访存方法
US7350059B2 (en) Managing stack transfers in a register-based processor
TW201005649A (en) Operating system fast run command
Säntti et al. Java Co-Processor for Embedded Systems
Elahi et al. ARM Instructions Part I
Li Basic structure of computers

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: RISC processor processor arrangement and its floating point stack manipulation simulation method

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: 20080709

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: RISC processor processor arrangement and its floating point stack manipulation simulation method

Granted publication date: 20110323

License type: Common License

Record date: 20150211

TR01 Transfer of patent right

Effective date of registration: 20200819

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.