CN101196869A - 一种risc处理器及其寄存器标志位处理方法 - Google Patents

一种risc处理器及其寄存器标志位处理方法 Download PDF

Info

Publication number
CN101196869A
CN101196869A CNA2007103085711A CN200710308571A CN101196869A CN 101196869 A CN101196869 A CN 101196869A CN A2007103085711 A CNA2007103085711 A CN A2007103085711A CN 200710308571 A CN200710308571 A CN 200710308571A CN 101196869 A CN101196869 A CN 101196869A
Authority
CN
China
Prior art keywords
register
phantom load
load register
risc processor
flag bit
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
CNA2007103085711A
Other languages
English (en)
Other versions
CN100530164C (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 CNB2007103085711A priority Critical patent/CN100530164C/zh
Publication of CN101196869A publication Critical patent/CN101196869A/zh
Priority to CA2709753A priority patent/CA2709753C/en
Priority to US12/747,018 priority patent/US9189232B2/en
Priority to JP2010539995A priority patent/JP5299979B2/ja
Priority to PCT/CN2008/001906 priority patent/WO2009086727A1/zh
Priority to KR1020107013400A priority patent/KR101139395B1/ko
Priority to EP08869582.0A priority patent/EP2226731B1/en
Application granted granted Critical
Publication of CN100530164C publication Critical patent/CN100530164C/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30138Extension of register space, e.g. register cache
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Abstract

本发明公开了RISC处理器及其寄存器标志位处理方法。该处理器包括物理寄存器堆、运算部件和译码器,所述物理寄存器堆包括模拟标志寄存器,用于模拟实现CISC处理器的标志寄存器标志位;所述运算部件包括标志读写模块,用于读写模拟标志寄存器标志位的值。所述运算部件还包括运算控制器,用于在运算过程中,当RISC处理器处于X86虚拟机工作模式时,根据模拟标志寄存器标志位的值,进行控制。

Description

一种RISC处理器及其寄存器标志位处理方法
技术领域
本发明涉及计算机处理器技术领域,特别是涉及一种精简指令集计算机(RISC)处理器及其寄存器标志位处理方法。
背景技术
虚拟机是20世纪60年代IBM公司提出的概念,并且付诸实现。当时主流计算机是大型机,通过把大型机分割成多个虚拟机,利用虚拟机监视器(Virtual Machine Monitor,VMM)的分隔,多种不同应用或者多个用户可以共享这一稀缺资源。
但是,随着硬件成本降低和计算能力的增强,以及多任务操作系统(OS)的出现,虚拟机监视器慢慢退出历史舞台,微型计算机和个人计算机(PC)大行其道。
然而,由于虚拟机的强大和成功在于用户可以访问和利用仅仅通过指令集的组合就可以形成的功能和设备,最近几年,虚拟机监视器重新成为学术界和工业界的焦点。虚拟机监视器为现代计算机系统体系结构的限制提供一种虚拟解决方案,使其变成一个强大的工具,这一工具会大大扩展现代计算机系统的能力。
当今复杂指令集计算机(Complex Instruction Set Computing,CISC)处理器架构,如X86指令集的CISC处理器架构在很多的应用中占据了主导的地位,很多大型的服务器类的应用都是X86指令集的CISC处理器架构。精简指令集计算机(Reduced Instruction Set Computing,RISC)架构的微处理器为了能够广泛地运行服务类的应用,实现与CISC处理器的兼容就成为了必要的任务。另外,现有CISC处理器的计算机中,应用程序更加多样化,很多商业软件都是基于CISC处理器,所以RISC微处理器要想更为广泛地运行多样化的应用,也非常需要实现对CISC处理器的兼容。
MIPS指令集的RISC处理器作为RISC处理器很大的一个分支,目前有很多开源的虚拟机平台,可以实现MIPS指令集的RISC处理器到X86指令集的CISC处理器的异构支持。
在MIPS指令集的RISC处理器上用虚拟机兼容X86指令集的CISC处理器需要考虑很多方面,其中一方面就是X86指令集的CISC处理器中对标志寄存器(EFLAGS)标志位的使用。
X86指令集中标志寄存器(EFLAGS)主要包括以下三部分内容:
一、状态标志(Status Flags),包括CF(进位标志)、PF(奇偶位)、AF(辅助进位)、ZF(零标志)、SF(非负标志)和OF(溢出)共六位;
二、DF(方向标志)标志,用来控制串操作指令的方向;
三、其他系统标志和I/O特权域(IOPL域),这些标志包括单步模式标志、中断使能、I/O优先级等,用户程序不能修改这些标志。
X86指令集的定点运算指令支持共6比特(Bit),包括CF、PF、AF、ZF、SF、OF共六位的标志寄存器(EFLAGS)标志位运算,即很多运算指令除了产生数据值以外,还要产生标志寄存器标志位,使某些转移指令能够把标志位作为转移条件,实现指令跳转。
但是,现有技术RISC处理器的X86虚拟机中,实现标志寄存器6比特的标志位运算时,是通过模拟而实现,其会产生很大的开销,对性能造成很大的影响。
发明内容
本发明所要解决的问题在于提供一种RISC处理器及其寄存器标志位处理方法。其在RISC处理器上实现标志寄存器6比特的标志位运算,实现与X86指令集的兼容,提高虚拟机性能。
为实现本发明而提供的一种RISC处理器,包括物理寄存器堆、运算部件和译码器;
所述物理寄存器堆包括模拟标志寄存器,用于模拟实现CISC处理器的标志寄存器标志位;
所述运算部件包括标志读写模块,用于读写模拟标志寄存器标志位的值。
所述译码器包括模式标识模块,用于识别出运算是处于模拟EFLAGS工作模式下,然后根据不同的指令,将模拟标志寄存器译码为源寄存器和/或目标寄存器。
所述运算部件还包括运算控制器,用于在运算过程中,当RISC处理器处于X86虚拟机工作模式时,根据模拟标志寄存器标志位的值,进行控制。
所述标志读写模块,包括标志提取模块和标志修改模块,其中:
所述标志提取模块,用于提取一位或者多位模拟标志寄存器标志位的值,根据指令中的8位掩码值来控制提取模拟标志寄存器中的一位或者几位,提取出来的模拟标志寄存器标志位的值存入目标寄存器中;
所述标志修改模块,用于修改一位或者多位模拟标志寄存器标志位的值,根据指令中的8位掩码值来控制修改模拟标志寄存器中的一位或者几位,使用源寄存器中的值对模拟标志寄存器进行修改。
所述控制包括根据运算结果得到新的模拟标志寄存器标志位;以及根据模拟标志寄存器标志位中的一位或者多位,执行分支跳转指令。
所述模拟标志寄存器的低六位由低到高分别表示CF位、PF位、AF位、ZF位、SF位和OF位。
为实现本发明目的还提供一种RISC处理器寄存器标志位处理方法,包括下列步骤:
步骤A,在RISC处理器中设置处于RISC处理器的X86虚拟机工作模式,即模拟标志寄存器可用;
步骤B,RISC处理器在运算过程中,当处于RISC处理器的X86虚拟机工作模式时,读写模拟标志寄存器标志位的值,和/或根据模拟标志寄存器标志位的值,进行控制。
所述步骤A和B之间还包括下列步骤:
译码器识别出运算是处于模拟EFLAGS工作模式下,然后根据不同的指令,将模拟标志寄存器译码为源寄存器和/或目标寄存器。
所述步骤B包括下列步骤:
步骤B1,当处于RISC处理器的X86虚拟机工作模式时,提取一位或者多位模拟标志寄存器标志位的值,根据其中的8位掩码值来控制提取模拟标志寄存器中的一位或者几位,提取出来的模拟标志寄存器标志位的值存入目标寄存器中;
步骤B2,当处于RISC处理器的X86虚拟机工作模式时,修改一位或者多位模拟标志寄存器标志位的值,根据其中的8位掩码值来控制修改模拟标志寄存器中的一位或者几位,使用源寄存器中的值对模拟标志寄存器进行修改。
所述步骤B中,所述控制过程包括下列步骤:
步骤B1’,根据运算结果得到模拟标志寄存器标志位;
步骤B2’,根据模拟标志寄存器标志位中的一位或者多位,执行分支跳转指令。
所述模拟标志寄存器的低六位由低到高分别表示CF位、PF位、AF位、ZF位、SF位和OF位。
本发明的有益效果是:本发明的RISC处理器及其寄存器标志位处理方法,在MIPS指令集的RISC处理器上对X86指令集的CISC处理器的标志寄存器(EFLAGS)的6比特(bit)标志位做必要的硬件支持,扩大虚拟机的优化空间,达到提高虚拟机性能的目的。
附图说明
图1是本发明RISC处理器结构示意图;
图2是本发明模拟标志位寄存器示意图;
图3是本发明RISC处理器寄存器标志位处理方法流程图;
图4是本发明实施例标识模拟标志寄存器的SETFLAG指令编码示意图;
图5是本发明实施例修改模拟标志寄存器标志位的指令MTFLAG指令编码示意图;
图6是本发明实施例读取模拟标志寄存器标志位的指令MFFLAG指令编码示意图;
图7是本发明实施例修改模拟标志寄存器的标志位的加指令X86ADD指令编码示意图;
图8是根据模拟标志寄存器标志位进行分支跳转的X86J M-EFLAGS指令编码示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种RISC处理器及其寄存器标志位处理方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例以MIPS64指令集的RISC处理器装置为例,对本发明进行说明,但应当说明的是,其并不是对本发明的限制,本发明同样可以适用于其他指令集的RISC处理器。
如图1所示,为实现本发明而提供一种RISC处理器,包括物理寄存器堆1、运算部件3和译码器2。
所述物理寄存器堆包括模拟标志寄存器4(M-EFLAGS),用于模拟实现X86指令集的CISC处理器的标志寄存器(EFLAGS)标志位,如图2所示,该寄存器的低六位由低到高分别表示CF位、PF位、AF位、ZF位、SF位和OF位。
其中:
OF,表示如果结果溢出,则置为1,否则清零;
SF,表示保存结果的最高位;
ZF,表示结果如果为0则置为1,否则清零;
AF,表示运算中如果第3位向第4位有进位或者借位,则置为1,否则清零;
PF,表示结果最低字节如果有偶数个1则置为1,否则清零;
CF,表示如果运算中最高位向更高位进位或者借位,则该位置为1,否则清零。
所述译码器2,包括模式标识模块21,用于识别出运算是处于RISC处理器的X86虚拟机工作模式,即模拟EFLAGS工作模式下,然后根据不同的指令,将模拟标志寄存器译码为源寄存器和/或目标寄存器。
所述运算部件3包括标志读写模块31,用于读写模拟标志寄存器4标志位的值。
所述标志读写模块31,包括标志提取模块311和标志修改模块312,其中:
所述标志提取模块311,用于提取一位或者多位模拟标志寄存器4标志位的值,根据其中的8位掩码(mask)值来控制提取模拟标志寄存器4中的一位或者几位,提取出来的模拟标志寄存器4标志位的值存入目标寄存器中。
所述标志修改模块312,用于修改一位或者多位模拟标志寄存器4标志位的值,根据其中的8位掩码(mask)值来控制修改模拟标志寄存器4中的一位或者几位,使用源寄存器中的值对模拟标志寄存器4进行修改。
所述运算部件3还包括运算控制器32,用于RISC处理器在运算过程中,当处于RISC处理器的X86虚拟机工作模式时,根据模拟标志寄存器4标志位的值,进行控制。
所述的控制包括根据运算结果得到新的模拟标志寄存器4(M-EFLAGS)标志位;以及根据模拟标志寄存器4(M-EFLAG)标志位中的一位或者多位,执行分支跳转指令。
下面详细说明本发明的RISC处理器寄存器标志位处理方法,如图3所示,其包括下列步骤:
步骤S100,在RISC处理器中设置处于RISC处理器的X86虚拟机工作模式,即模拟标志寄存器4可用,译码器识别出运算是处于RISC处理器的X86虚拟机工作模式,即模拟EFLAGS工作模式下,然后根据不同的指令,将模拟标志寄存器译码为源寄存器和/或目标寄存器;
模拟标志寄存器4(M-EFLAGS)模拟实现X86指令集的标志寄存器(EFLAGS)标志位,该寄存器的低六位由低到高分别表示CF位、PF位、AF位、ZF位、SF位和OF位。
其中:
OF,表示如果结果溢出,则置为1,否则清零;
SF,表示保存结果的最高位;
ZF,表示结果如果为0则置为1,否则清零;
AF,表示运算中如果第3位向第4位有进位或者借位,则置为1,否则清零;
PF,表示结果最低字节如果有偶数个1则置为1,否则清零;
CF,表示如果运算中最高位向更高位进位或者借位,则该位置为1,否则清零。
在模拟标志寄存器4可用时,识别出该运算是在RISC处理器的X86虚拟机工作模式,即模拟EFLAGS工作模式下,根据执行结果修改相应模拟标志寄存器4的值,然后根据不同的指令,将模拟标志寄存器译码为源寄存器和/或目标寄存器,而可以不在原有目标寄存器中保存结果。
作为一种可实施方式,与模拟标志寄存器4相关的指令在修改模拟标志寄存器4的标志位时,该指令之前有一条标明该指令是在RISC处理器的X86虚拟机工作模式下的前缀指令SETFLAG,表示如果其后指令处于X86虚拟机模式下。
指令格式为:SETFLAG/模拟EFLAGS工作模式前缀指令
表示紧跟在该指令后的一条指令处于模拟EFLAGS工作模式。
其编码如图4所示。
那么它在执行时,只根据执行结果修改相应的模拟标志寄存器4的标志位的值,而不在目标寄存器中保存结果,举例如下:
正常的MIPS指令:
ADD$5,$1,$2
表示将1号通用寄存器和2号通用寄存器中的值相加,结果存于5号通用寄存器中;
而修改模拟标志寄存器4的标志位的指令为:
SETFLAG
ADD$5,$1,$2
表示将1号通用寄存器和2号通用寄存器中的值相加,运算结果不保存,而根据结果修改模拟标志寄存器4中的标志位相应位。
译码器2的输入集是所有可能的32位编码,包括所有合法及非法指令。对于这种方式,译码器2新增了一种合法输入,SETFLAG,表示紧跟在该指令后的一条指令处于RISC处理器的X86虚拟机工作模式,即模拟EFLAGS工作模式。
译码器2根据前缀指令,在前缀指令后一条指令译码时,其输出根据模拟EFLAGS工作模式,调整内部操作码送到运算部件,此时这条指令的目的寄存器经过译码后变为模拟标志寄存器4(M-EFLAGS),其中一个源寄存器也为模拟标志寄存器4(M-EFLAGS)。因为有些运算只修改一部分模拟标志寄存器4(M-EFLAGS),所以需要把原有的模拟标志寄存器4(M-EFLAGS)送到运算部件3。
其中,所述调整内部操作码,包括经过重命名即逻辑寄存器到物理寄存器映射,以及读写寄存器端口等操作内容属于本领域技术人员熟知内容,因此在本发明中不再一一详细描述。
译码器2译码后,将指令输出到运算部件3,运算部件3判断内部操作码,如果是正常指令,按照正常步骤运算;如果是模拟EFLAGS工作模式下,则先计算结果,再按照计算结果和中间结果置模拟标志寄存器4(M-EFLAGS)标志位,计算结果可以不保存到目标寄存器中。
作为另一种可实施方式,对于本发明中使用频度很大的修改模拟标志寄存器4的标志位的指令,将对X86指令进行一对一的对应,这样一条指令等价于原来的两条指令(一条SETFLAG一条正常MIPS指令)。举例如下:
对于使用频度很大的修改模拟标志寄存器4的标志位的加指令(ADD),定义指令X86ADD,从而
X86ADD$5,$1,$2
等价于
SETFLAG
ADD$5,$1,$2
这些使用频度很大的指令,在译码时分配单独的指令槽,功能部件在识别出这些指令后,产生的结果不送入目标寄存器中,而是根据结果产生相应的模拟标志寄存器4(M-EFLAGS)标志位,把标志位送入模拟标志寄存器4(M-EFLAGS)。
步骤S200,RISC处理器在运算过程中,当处于RISC处理器的X86虚拟机工作模式时,读写模拟标志寄存器4标志位的值,和/或根据模拟标志寄存器4标志位的值,进行控制。
所述步骤S200中,读写模拟标志寄存器4标志位的值,包括下列步骤:
步骤S210,当处于RISC处理器的X86虚拟机工作模式时,提取一位或者多位模拟标志寄存器4标志位的值,根据其中的8位掩码(mask)值来控制提取模拟标志寄存器4中的一位或者几位,提取出来的模拟标志寄存器4标志位的值存入目标寄存器中;
步骤S220,当处于RISC处理器的X86虚拟机工作模式时,修改一位或者多位模拟标志寄存器4标志位的值,根据其中的8位掩码(mask)值来控制修改模拟标志寄存器4中的一位或者几位,使用源寄存器中的值对模拟标志寄存器4进行修改。
作为一种可实施方式,本发明实施例通过两条指令MTFLAG和MFFLAG修改或者读取模拟标志寄存器4标志位的值,这两条指令的指令编码如图5和图6所示,它们使用8位的掩码(mask)来修改或者读取模拟标志寄存器4的相应标志位,它们分别可以写模拟标志寄存器4标志位的值和将模拟标志寄存器4标志位的值读出来到一指定的通用寄存器中。
MTFLAG指令实现提取一位或者多位模拟标志寄存器4(M-EFLAGS)标志位的值,根据指令中的8位掩码(mask)值(由立即数来表示)来控制提取模拟标志寄存器4中的一位或者几位,提取出来的模拟标志寄存器4(M-EFLAGS)标志位的值存入目标寄存器GPR[rt]中。
由掩码(mask)提取模拟标志寄存器4中标志位的实现由以下关系式表示:
GPR[rt]←M-EFLAGS&mask
例如,掩码(mask)值为0x00000100,那么将提取模拟标志寄存器4(M-EFLAGS)第2位即为AF位的内容,放入目标寄存器GPR[rt]中。
MTFLAG指令直接修改一位或者多位模拟标志寄存器4(M-EFLAGS)标志位的值,根据指令中的8位掩码(mask)值(由立即数来表示)来控制修改模拟标志寄存器4(M-EFLAGS)中的一位或者几位,使用GPR[rs]源寄存器中的值对模拟标志寄存器4(M-EFLAGS)进行修改。
由掩码(mask)控制修改模拟标志寄存器4(M-EFLAGS)中标志位的实现由以下关系式表示:
M-EFLAGS&mask←GPR[rs]
比如,GPR[rs]低8位的内容为0x00010010,掩码(mask)字段的值为0x00110011,那么这条指令修该模拟标志寄存器4(M-EFLAGS)中的CF、PF、SF和OF位,将这四位的值分别置0、1、1和0。
所述步骤S200中,所述控制过程包括下列步骤:
步骤S210’,根据运算结果得到模拟标志寄存器4(M-EFLAG)标志位;
例如,根据模拟标志寄存器4(M-EFLAG)标志位,直接运算的指令如X86ADD指令。
x86ADD/只影响EFLAGS位的32位加法
指令格式:
X86ADD rs,rt
X86ADD指令实现GPR[rs]寄存器中32位的整数和GPR[rt]寄存器中32位整数相加,产生32位的结果,结果不保存,只根据结果修改模拟标志寄存器4(M-EFLAGS)的OF/SF/ZF/AF/PF位。
其编码如图7所示。
步骤S220’,根据模拟标志寄存器4(M-EFLAG)标志位中的一位或者多位,执行分支跳转指令。
如X86J M-EFLAGS条件转移
指令格式:
X86J.fmt offset
X86J指令实现比较EFLAGS的某几位,根据相应的条件进行处理器相关的跳转。
其编码如图8所示。
其中不同的指令后缀(fmt)代表着不同的条件,如X86J.a fmt=0,表示当CF=0并且ZF=0时跳转。
MIPS64指令集的32位指令码的高6位(31bit:26bit)为opcode域。其中SPECIAL2(opcode为011100)指令槽按MIPS的规定是可以由用户自主定义的。本发明实施例新增指令全部都是利用现有MIPS64指令集中保留的SPECIAL2空槽的值来实现的。
本发明的RISC处理器装置及其数据处理方法,在MIPS架构上对X86的EFLAGS标志位做必要的硬件支持,扩大虚拟机的优化空间,达到提高虚拟机性能的目的。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (11)

1.一种RISC处理器,包括物理寄存器堆、运算部件和译码器,其特征在于:
所述物理寄存器堆包括模拟标志寄存器,用于模拟实现CISC处理器的标志寄存器标志位;
所述运算部件包括标志读写模块,用于读写模拟标志寄存器标志位的值。
2.根据权利要求1所述的RISC处理器,其特征在于,所述译码器包括模式标识模块,用于识别出运算是处于模拟EFLAGS工作模式下,然后根据不同的指令,将模拟标志寄存器译码为源寄存器和/或目标寄存器。
3.根据权利要求1所述的RISC处理器,其特征在于,所述运算部件还包括运算控制器,用于在运算过程中,当RISC处理器处于X86虚拟机工作模式时,根据模拟标志寄存器标志位的值,进行控制。
4.根据权利要求1所述的RISC处理器,其特征在于,所述标志读写模块,包括标志提取模块和标志修改模块,其中:
所述标志提取模块,用于提取一位或者多位模拟标志寄存器标志位的值,根据指令中的8位掩码值来控制提取模拟标志寄存器中的一位或者几位,提取出来的模拟标志寄存器标志位的值存入目标寄存器中;
所述标志修改模块,用于修改一位或者多位模拟标志寄存器标志位的值,根据指令中的8位掩码值来控制修改模拟标志寄存器中的一位或者几位,使用源寄存器中的值对模拟标志寄存器进行修改。
5.根据权利要求2所述的RISC处理器,其特征在于,所述控制包括根据运算结果得到新的模拟标志寄存器标志位;以及根据模拟标志寄存器标志位中的一位或者多位,执行分支跳转指令。
6.根据权利要求1至5任一项所述的RISC处理器,其特征在于,所述模拟标志寄存器的低六位由低到高分别表示CF位、PF位、AF位、ZF位、SF位和OF位。
7.一种RISC处理器寄存器标志位处理方法,其特征在于,包括下列步骤:
步骤A,在RISC处理器中设置模拟标志寄存器可用;
步骤B,RISC处理器在运算过程中,当处于RISC处理器的X86虚拟机工作模式时,读写模拟标志寄存器标志位的值,和/或根据模拟标志寄存器标志位的值,进行控制。
8.根据权利要求7所述的RISC处理器寄存器标志位处理方法,其特征在于,所述步骤A还包括下列步骤:
译码器识别出运算是处于模拟EFLAGS工作模式下,然后根据不同的指令,将模拟标志寄存器译码为源寄存器和/或目标寄存器。
9.根据权利要求7或8所述的RISC处理器寄存器标志位处理方法,其特征在于,所述步骤B包括下列步骤:
步骤B1,当处于RISC处理器的X86虚拟机工作模式时,提取一位或者多位模拟标志寄存器标志位的值,根据其中的8位掩码值来控制提取模拟标志寄存器中的一位或者几位,提取出来的模拟标志寄存器标志位的值存入目标寄存器中;
步骤B2,当处于RISC处理器的X86虚拟机工作模式时,修改一位或者多位模拟标志寄存器标志位的值,根据其中的8位掩码值来控制修改模拟标志寄存器中的一位或者几位,使用源寄存器中的值对模拟标志寄存器进行修改。
10.根据权利要求7或8所述的RISC处理器寄存器标志位处理方法,其特征在于,所述步骤B中,所述控制过程包括下列步骤:
步骤B1’,根据运算结果得到模拟标志寄存器标志位;
步骤B2’,根据模拟标志寄存器标志位中的一位或者多位,执行分支跳转指令。
11.根据权利要求7或8所述的RISC处理器寄存器标志位处理方法,其特征在于,所述模拟标志寄存器的低六位由低到高分别表示CF位、PF位、AF位、ZF位、SF位和OF位。
CNB2007103085711A 2007-12-29 2007-12-29 一种risc处理器及其寄存器标志位处理方法 Active CN100530164C (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CNB2007103085711A CN100530164C (zh) 2007-12-29 2007-12-29 一种risc处理器及其寄存器标志位处理方法
CA2709753A CA2709753C (en) 2007-12-29 2008-11-24 Risc processor and its register flag bit processing method
US12/747,018 US9189232B2 (en) 2007-12-29 2008-11-24 RISC processor and its register flag bit processing method
JP2010539995A JP5299979B2 (ja) 2007-12-29 2008-11-24 Riscプロセッサ及びレジスタのフラグビットの処理方法
PCT/CN2008/001906 WO2009086727A1 (zh) 2007-12-29 2008-11-24 一种risc处理器及其寄存器标志位处理方法
KR1020107013400A KR101139395B1 (ko) 2007-12-29 2008-11-24 Risc 프로세서 및 그의 레지스터 플래그 비트 처리방법
EP08869582.0A EP2226731B1 (en) 2007-12-29 2008-11-24 Risc processor and its register flag bit processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007103085711A CN100530164C (zh) 2007-12-29 2007-12-29 一种risc处理器及其寄存器标志位处理方法

Publications (2)

Publication Number Publication Date
CN101196869A true CN101196869A (zh) 2008-06-11
CN100530164C CN100530164C (zh) 2009-08-19

Family

ID=39547296

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007103085711A Active CN100530164C (zh) 2007-12-29 2007-12-29 一种risc处理器及其寄存器标志位处理方法

Country Status (7)

Country Link
US (1) US9189232B2 (zh)
EP (1) EP2226731B1 (zh)
JP (1) JP5299979B2 (zh)
KR (1) KR101139395B1 (zh)
CN (1) CN100530164C (zh)
CA (1) CA2709753C (zh)
WO (1) WO2009086727A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009086727A1 (zh) * 2007-12-29 2009-07-16 Institute Of Computing Technology Of The Chinese Academy Of Sciences 一种risc处理器及其寄存器标志位处理方法
CN101876954B (zh) * 2009-12-23 2012-08-15 中国科学院计算技术研究所 一种虚拟机控制系统及其工作方法
CN103377031A (zh) * 2012-04-27 2013-10-30 腾讯科技(深圳)有限公司 一种多数据处理方法和装置
CN103930867A (zh) * 2011-11-14 2014-07-16 英特尔公司 使用前缀对isa指令的标志非修改扩展
CN104126167A (zh) * 2011-12-23 2014-10-29 英特尔公司 用于从通用寄存器向向量寄存器进行广播的装置和方法
CN105446791A (zh) * 2014-08-26 2016-03-30 龙芯中科技术有限公司 标志位模拟方法、装置和处理器
CN110825436A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 应用于人工智能芯片的计算方法和人工智能芯片

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5193624B2 (ja) * 2008-02-19 2013-05-08 ルネサスエレクトロニクス株式会社 データプロセッサ
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
JP5610551B2 (ja) * 2013-02-04 2014-10-22 ルネサスエレクトロニクス株式会社 データプロセッサ
JP5767374B2 (ja) * 2014-07-30 2015-08-19 ルネサスエレクトロニクス株式会社 データプロセッサ
US20230098724A1 (en) * 2021-09-25 2023-03-30 Intel Corporation Copy a subset of status flags from a control and status register to a flags register

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
JPH0668724B2 (ja) * 1988-02-01 1994-08-31 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン シミユレーシヨン方法
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
US5463778A (en) * 1989-11-16 1995-10-31 Texas Instruments Incorporated User controlled trap handler
JP2507638B2 (ja) * 1989-12-01 1996-06-12 三菱電機株式会社 デ―タ処理装置
JPH04199331A (ja) * 1990-11-29 1992-07-20 Hitachi Ltd マイクロコンピュータ
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices Inc Superskalarbefehlsdekoder
US5630082A (en) 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5884057A (en) * 1994-01-11 1999-03-16 Exponential Technology, Inc. Temporal re-alignment of a floating point pipeline to an integer pipeline for emulation of a load-operate architecture on a load/store processor
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5664159A (en) * 1994-03-08 1997-09-02 Exponential Technology, Inc. Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US6076155A (en) * 1995-10-24 2000-06-13 S3 Incorporated Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
JPH1153189A (ja) * 1997-07-31 1999-02-26 Toshiba Corp 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体
US6055624A (en) * 1998-04-07 2000-04-25 International Business Machines Corporation Millicode flags with specialized update and branch instructions
US6807625B1 (en) * 2000-02-18 2004-10-19 Hewlett-Packard Development Company, L.P. Method and apparatus for efficiently generating, storing, and consuming arithmetic flags between producing and consuming macroinstructions when emulating with microinstructions
US7076639B2 (en) * 2001-10-23 2006-07-11 Ip-First, Llc Apparatus and method for masked move to and from flags register in a processor
GB0202728D0 (en) * 2002-02-06 2002-03-27 Transitive Technologies Ltd Condition code flag emulation for program code conversion
GB0225649D0 (en) * 2002-11-04 2002-12-11 Transitive Technologies Ltd Incremental validation
CN1216327C (zh) * 2003-05-15 2005-08-24 复旦大学 采用双指令集的32位嵌入式微处理器
US8429356B2 (en) * 2005-11-02 2013-04-23 Ati Technologies Ulc Write data mask method and system
CN100530164C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种risc处理器及其寄存器标志位处理方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009086727A1 (zh) * 2007-12-29 2009-07-16 Institute Of Computing Technology Of The Chinese Academy Of Sciences 一种risc处理器及其寄存器标志位处理方法
CN101876954B (zh) * 2009-12-23 2012-08-15 中国科学院计算技术研究所 一种虚拟机控制系统及其工作方法
US9811338B2 (en) 2011-11-14 2017-11-07 Intel Corporation Flag non-modification extension for ISA instructions using prefixes
CN103930867A (zh) * 2011-11-14 2014-07-16 英特尔公司 使用前缀对isa指令的标志非修改扩展
CN108519921B (zh) * 2011-12-23 2022-07-12 英特尔公司 用于从通用寄存器向向量寄存器进行广播的装置和方法
CN104126167A (zh) * 2011-12-23 2014-10-29 英特尔公司 用于从通用寄存器向向量寄存器进行广播的装置和方法
CN108519921A (zh) * 2011-12-23 2018-09-11 英特尔公司 用于从通用寄存器向向量寄存器进行广播的装置和方法
CN103377031B (zh) * 2012-04-27 2017-09-26 腾讯科技(深圳)有限公司 一种多数据处理方法和装置
CN103377031A (zh) * 2012-04-27 2013-10-30 腾讯科技(深圳)有限公司 一种多数据处理方法和装置
CN105446791A (zh) * 2014-08-26 2016-03-30 龙芯中科技术有限公司 标志位模拟方法、装置和处理器
CN105446791B (zh) * 2014-08-26 2018-11-20 龙芯中科技术有限公司 标志位模拟方法、装置和处理器
CN110825436A (zh) * 2018-08-10 2020-02-21 北京百度网讯科技有限公司 应用于人工智能芯片的计算方法和人工智能芯片
CN110825436B (zh) * 2018-08-10 2022-04-29 昆仑芯(北京)科技有限公司 应用于人工智能芯片的计算方法和人工智能芯片

Also Published As

Publication number Publication date
EP2226731A1 (en) 2010-09-08
WO2009086727A1 (zh) 2009-07-16
US9189232B2 (en) 2015-11-17
KR20100095604A (ko) 2010-08-31
EP2226731A4 (en) 2010-12-29
CA2709753A1 (en) 2009-07-16
JP5299979B2 (ja) 2013-09-25
JP2011508921A (ja) 2011-03-17
CA2709753C (en) 2016-08-23
EP2226731B1 (en) 2018-04-18
CN100530164C (zh) 2009-08-19
US20100268916A1 (en) 2010-10-21
KR101139395B1 (ko) 2012-04-27

Similar Documents

Publication Publication Date Title
CN100530164C (zh) 一种risc处理器及其寄存器标志位处理方法
CN104169869B (zh) 比较具有终止字符的字符数据集
CN105786446B (zh) 支持带三个源操作数的加法指令的处理器及含该指令的介质
CN104185839B (zh) 将数据载入寄存器的方法和系统
US20110231633A1 (en) Operand size control
CN104205067A (zh) 将数据载入直到由指令所指示的指定存储器边界的指令
CN104185872A (zh) 用以计算与指定存储器的边界的距离的指令
CN105283858A (zh) 可执行近似计算指令的处理器
CN104169870A (zh) 将具有终止字符的字符数据从一个存储器位置复制到另一个存储器位置
CN104169877A (zh) 将不相邻指令区分符变换为相邻指令区分符
CN102906700A (zh) 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具
CN116339828A (zh) 存储器复制指令、处理器、方法和系统
CN115357332A (zh) 处理器间中断的虚拟化
El Kady et al. MIPS, ARM and SPARC-an architecture comparison
CN1318957C (zh) 在程序控制流中实现改变的装置和方法
CN101226468A (zh) 一种risc处理器装置及其有界访存方法
CN101221496B (zh) 精简指令集计算机处理器装置及其数据处理方法
US20240045691A1 (en) Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions
US20240045686A1 (en) Instructions to convert from fp8
CN117178256A (zh) 用于在虚拟化环境中管理不受支持的指令集体系结构(isa)特征的装置和方法
CN101876916B (zh) 一种汇编语言程序的开发方法和装置
EP4109247A1 (en) Apparatuses, methods, and systems for instructions for matrix multiplication instructions
US20240045685A1 (en) Apparatuses, methods, and systems for instructions for structured-sparse tile matrix fma
US20230205685A1 (en) Read all zeros or random data upon a first read from volatile memory
US20230102279A1 (en) Apparatuses, methods, and systems for instructions for structured-sparse tile matrix fma

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
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 and its register flag bit processing method

Granted publication date: 20090819

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

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

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: RISC processor and its register flag bit processing method

Granted publication date: 20090819

License type: Common License

Record date: 20150211

TR01 Transfer of patent right
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

EC01 Cancellation of recordation of patent licensing contract
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

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.