一种支持X86虚拟机的RISC处理器装置及方法制造方法及图纸

技术编号:2825669 阅读:510 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种支持X86虚拟机的RISC处理器装置及方法。该RISC处理器,包括指令模块包括扩展指令模块,用于存储支持X86虚拟机的虚拟机指令集;译码器,用于在虚拟机指令集指令译码过程中,区分出指令的虚拟机指令集模式,将指令按照所区分的虚拟机指令集模式,进行译码后输出给定点运算部件或者浮点运算部件;定点运算部件用于根据译码器的输出,对虚拟机指令集的定点指令进行处理,输出执行的结果;浮点运算部件用于根据译码器的输出,对虚拟机指令集的浮点指令进行处理,输出执行结果。其提高RISC处理器运行虚拟机的性能。

【技术实现步骤摘要】

本专利技术涉及微处理器体系架构跨平台兼容
,特别是涉及一种支持X86虚拟机的精简指令集计算机(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虚拟机到RISC的二进制指令翻译效率,很大程度上依靠RISC和X86体系结构上的相似性。但是,X86体系结构的很多特性是RISC架构所没有的,包括X86体系结构中的定点运算指令支持标志位运算;X86架构中80位的浮点数操作和浮点栈运算;段基址寄存器的存在等特性。这样,使得RISC处理器上的X86虚拟机在运算过程中,由于不同体系结构指令的翻译问题,而使得二进制指令翻译效率低下,不能提高运算速度。
技术实现思路
本专利技术的目的在于提供一种支持X86虚拟机的RISC处理器装置及方法。其提高RISC处理器性能。为实现本专利技术目的而提供的一种支持X86虚拟机的RISC处理器,包括指令模块,译码器,查找表,定点运算部件和浮点运算部件,其中:所述指令模块包括扩展指令模块,用于存储支持X86虚拟机的虚拟机指令集;所述译码器,用于在虚拟机指令集指令译码过程中,区分出指令的虚拟机指令集模式,将指令按照所区分的虚拟机指令集模式,进行译码后输出给定点运算部件或者浮点运算部件;所述查找表,用于对X86程序中的跳转地址到MIPS跳转地址的翻译进行快速查找,提高虚拟机性能;所述定点运算部件用于根据译码器的输出,对虚拟机指令集的定点指令进行相应的处理,输出执行的结果;所述浮点运算部件用于根据译码器的输出,对虚拟机指令集的浮点指令进行相应的处理,输出执行结果。所述的支持X86虚拟机的RISC处理器,还包括访存执行单元,内存及相应的数据通路;所述访存执行单元根据译码器的输出,通过数据通路完成内部寄存器与内存之间的数据传输。所述的支持X86虚拟机的RISC处理器,还包括通用物理寄存器堆,所述-->通用物理寄存器堆包括溢出检查寄存器,上界、下界地址寄存器,模拟标志寄存器,虚拟机模式控制寄存器;所述溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时检查是否存在栈溢出例外;所述上界、下界地址寄存器,用于模拟X86处理器的有界访存机制时存储作为上界、下界的有效地址;所述模拟标志寄存器,用于模拟实现CISC处理器的标志寄存器标志位;所述虚拟机模式控制寄存器,当该控制位标志为1时表示此时相应的指令运行在X86虚拟机指令集模式下;当该控制位标志为0时表示指令运行在非X86虚拟机指令集模式下。所述的支持X86虚拟机的RISC处理器,还包括浮点寄存器堆;所述浮点寄存器堆包括浮点控制寄存器;浮点寄存器栈;以及第1~3浮点寄存器。所述虚拟机指令集包括多倍访存指令、前缀指令、EFLAG标志位指令、浮点栈相关指令、查找表指令中的一种或者一种以上的组合。所述译码器包括指令处理模块,模式识别模块,其中:所述指令处理模块,用于对虚拟机指令集的指令进行指令译码,然后输出给定点运算部件或者浮点运算部件;所述模式识别模块,用于在指令译码过程中,区分出指令的虚拟机指令集模式,进行相应的处理。所述模式识别模块包括多倍存储译码模块和/或多倍读取译码模块;所述多倍存储译码模块,用于在输入的指令是访存扩展指令中的存储操作指令时,将源寄存器由一个扩展成多个相邻的寄存器,然后输出到访存执行单元执行;所述多倍读取译码模块,用于在输入的指令是访存扩展指令中的读取操作指令时,将该读取操作指令译码为多条内部操作指令,将目标寄存器由一个扩展成多个相邻的寄存器,然后分配到所述多条内部操作中,输出到执行单元执行。所述模式识别模块还包括前缀指令译码模块和标志位指令译码模块;-->所述标志位指令译码模块,用于对处于模拟EFLAGS工作模式下的EFLAG标志位指令进行处理,根据不同的EFLAG标志位指令,将模拟标志寄存器译码为其指令的源寄存器和/或目标寄存器;所述前缀指令译码模块,用于指示前缀指令后的多条指令处于X86虚拟机指令集模式下。当前缀指令的范围参数为n时,译码器还包括前缀指令计数器,用于记录受前缀指令影响且不出现转移指令的指令序列的指令数n。所述译码器还包括TOP指针寄存器,查找表模块,其中:所述TOP指针寄存器,用于维护一浮点栈操作指针,存储浮点栈栈操作指针的值;所述查找表模块,用于根据查找表指令,利用查找表实现从X86源指令地址到MIPS目标指令地址的转换。所述定点运算部件包括标志读写模块,标志运算模块,例外处理模块,前缀例外控制寄存器;所述标志读写模块,用于读写模拟标志寄存器标志位的值;所述标志运算模块,用于在运算过程中,当RISC处理器处于X86虚拟机工作模式时,根据模拟标志寄存器标志位的值,进行控制;所述例外处理模块,用于在前缀指令只影响紧接其后的一条指令时,如果出现执行例外,则采用与延迟槽例外相同的方法,将Cause寄存器的bd位置1,同时将EPC指向前缀指令,例外服务程序完成后重新执行前缀指令;所述前缀例外控制寄存器,用于记录发生例外的指令是否受所述前缀指令影响;在出现异常而中断进程的时候存入当前指令的计数,在异常结束返回被中断进程时,根据所述计数恢复所述被中断进程。所述浮点运算部件包括指针操作模块,栈溢出判断模块,转换模块;所述指针操作模块,用于对所述指针寄存器进行操作,在模拟所述浮点寄存器栈操作时,模拟所述指针寄存器的栈操作指针的栈操作,修改并监控栈操作指针的状态;所述栈溢出判断模块,用于检查指定的浮点寄存器栈中的栈寄存器,并根据栈寄存器的值对溢出检查寄存器进行操作,进行浮点栈溢出检查;所述转换模块,用于进行本文档来自技高网
...

【技术保护点】
一种支持X86虚拟机的RISC处理器,其特征在于,包括指令模块,译码器,查找表,定点运算部件和浮点运算部件,其中:所述指令模块包括扩展指令模块,用于存储支持X86虚拟机的虚拟机指令集;所述译码器,用于在虚拟机指令集指令译码过 程中,区分出指令的虚拟机指令集模式,将指令按照所区分的虚拟机指令集模式,进行译码后输出给定点运算部件或者浮点运算部件;所述查找表,用于对X86程序中的跳转地址到MIPS跳转地址的翻译进行快速查找,提高虚拟机性能;所述定点运算 部件用于根据译码器的输出,对虚拟机指令集的定点指令进行处理,输出执行的结果;所述浮点运算部件用于根据译码器的输出,对虚拟机指令集的浮点指令进行处理,输出执行结果。

【技术特征摘要】
1、一种支持X86虚拟机的RISC处理器,其特征在于,包括指令模块,译码器,查找表,定点运算部件和浮点运算部件,其中:所述指令模块包括扩展指令模块,用于存储支持X86虚拟机的虚拟机指令集;所述译码器,用于在虚拟机指令集指令译码过程中,区分出指令的虚拟机指令集模式,将指令按照所区分的虚拟机指令集模式,进行译码后输出给定点运算部件或者浮点运算部件;所述查找表,用于对X86程序中的跳转地址到MIPS跳转地址的翻译进行快速查找,提高虚拟机性能;所述定点运算部件用于根据译码器的输出,对虚拟机指令集的定点指令进行处理,输出执行的结果;所述浮点运算部件用于根据译码器的输出,对虚拟机指令集的浮点指令进行处理,输出执行结果。2、根据权利要求1所述的支持X86虚拟机的RISC处理器,其特征在于,还包括访存执行单元,内存及相应的数据通路;所述访存执行单元根据译码器的输出,通过数据通路完成内部寄存器与内存之间的数据传输。3、根据权利要求2所述的支持X86虚拟机的RISC处理器,其特征在于,还包括通用物理寄存器堆,所述通用物理寄存器堆包括溢出检查寄存器,上界、下界地址寄存器,模拟标志寄存器,虚拟机模式控制寄存器;所述溢出检查寄存器,用于在对所述栈寄存器进行浮点访问时栈溢出例外检查;所述上界、下界地址寄存器,用于模拟X86处理器的有界访存机制时存储作为上界、下界的有效地址;所述模拟标志寄存器,用于模拟实现CISC处理器的标志寄存器标志位;所述虚拟机模式控制寄存器,当该控制位标志为1时表示此时相应的指令运行在X86虚拟机指令集模式下;当该控制位标志为0时表示指令运行在非X86虚拟机指令集模式下。4、根据权利要求3所述的支持X86虚拟机的RISC处理器,其特征在于,还包括浮点寄存器堆;所述浮点寄存器堆包括浮点控制寄存器,浮点寄存器栈;以及第1~3浮点寄存器。5、根据权利要求1至4任一项所述的支持X86虚拟机的RISC处理器,其特征在于,所述虚拟机指令集包括多倍访存指令、前缀指令、EFLAG标志位指令、浮点栈相关指令、查找表指令中的一种或者一种以上的组合。6、根据权利要求5所述的支持X86虚拟机的RISC处理器,其特征在于,所述译码器包括指令处理模块,模式识别模块,其中:所述指令处理模块,用于对虚拟机指令集的指令进行指令译码,然后输出给定点运算部件或者浮点运算部件;所述模式识别模块,用于在指令译码过程中,区分出指令的虚拟机指令集模式,进行相应的处理。7、根据权利要求6所述的支持X86虚拟机的RISC处理器,其特征在于,所述模式识别模块包括多倍存储译码模块和/或多倍读取译码模块;所述多倍存储译码模块,用于在输入的指令是访存扩展指令中的存储操作指令时,将源寄存器由一个扩展成多个相邻的寄存器,然后输出到访存执行单元执行;所述多倍读取译码模块,用于在输入的指令是访存扩展指令中的读取操作指令时,将该读取操作指令译码为多条内部操作指令,将目标寄存器由一个扩展成多个相邻的寄存器,然后分配到所述多条内部操作中,输出到执行单元执行。8、根据权利要求7所述的支持X86虚拟机的RISC处理器,其特征在于,所述模式识别模块还包括前缀指令译码模块和标志位指令译码模块;所述标志位指令译码模块,用于对处于模拟EFLAGS工作模式下的EFLAG标志位指令进行处理,根据不同的EFLAG标志位指令,将模拟标志寄存器译码为其指令的源寄存器和/或目标寄存器;所述前缀指令译码模块,用于指示前缀指令后的多条指令处于X86虚拟机指令集模式下。9、根据权利要求8所述的支持X86虚拟机的RISC处理器,其特征在于,当前缀指令的范围参数为n时,译码器还包括前缀指令计数器,用于记录受前缀指令影响且不出现转移指令的指令序列的指令数n。10、根据权利要求6所述的支持X86虚拟机的RISC处理器,其特征在于,所述译码器还包括TOP指针寄存器,查找表模块,其中:所述TOP指针寄存器,用于维护一浮点栈操作指针,存储浮点栈栈操作指针的值;所述查找表模块,用于根据查找表指令,利用查找表实现从X86源指令地址到MIPS目标指令地址的转换。11、根据权利要求5所述的支持X86虚拟机的RISC处理器,其特征在于,所述定点运算部件包括标志读写模块,标志运算模块,例外处理模块,前缀例外控制寄存器;所述标志读写模块,用于读写模拟标志寄存器标志位的值;所述标志运算模块,用于在运算过程中,当RISC处理器处于X86虚拟机工作模式时,根据模拟标志寄存器标志位的值,进行控制;所述例外处理模块,用于在前缀指令只影响紧接其后的一条指令时,如果出现执行例外,则采用与延迟槽例外相同的方法,将Cause寄存器的bd位置1,同时将EPC指...

【专利技术属性】
技术研发人员:李国杰胡伟武李晓钰苏孟豪
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1