CN101887357B - 指令集架构中的变量寄存器和立即数字段编码 - Google Patents

指令集架构中的变量寄存器和立即数字段编码 Download PDF

Info

Publication number
CN101887357B
CN101887357B CN201010178234.7A CN201010178234A CN101887357B CN 101887357 B CN101887357 B CN 101887357B CN 201010178234 A CN201010178234 A CN 201010178234A CN 101887357 B CN101887357 B CN 101887357B
Authority
CN
China
Prior art keywords
instruction
register
value
length
instruction set
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.)
Active
Application number
CN201010178234.7A
Other languages
English (en)
Other versions
CN101887357A (zh
Inventor
埃里克·K·诺登
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.)
Arm Overseas Finance Co ltd
Overpass Bridge Co ltd
Original Assignee
MIPS Tech LLC
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 MIPS Tech LLC filed Critical MIPS Tech LLC
Publication of CN101887357A publication Critical patent/CN101887357A/zh
Application granted granted Critical
Publication of CN101887357B publication Critical patent/CN101887357B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Abstract

方法和装置提供了压缩指令代码尺寸的手段。指令集架构编码紧凑位长度、常规位长度或扩展位长度的指令。通常使用的指令被编码为具有紧凑位长度和常规位长度,基于功率、性能或代码尺寸要求选择紧凑位长度或常规位长度的指令。ISA的指令可用于微处理器的特许和非特许两种操作模式中。在软件应用中可交换地使用指令编码。来自ISA的指令可在包括单一指令集架构处理器或多指令集架构处理器且能够用于ISA的任何可编程装置上执行。

Description

指令集架构中的变量寄存器和立即数字段编码
相关申请的交叉引用
本申请涉及于2008年5月8日提交的题为“紧凑的指令集架构”的第61/051,642号申请,该申请的全部内容通过引用并入本文。
背景技术
本发明通常涉及微处理器的指令集架构(ISA)。更具体地,本发明公开用于减少存储可执行代码所需的存储器数量并且保持与未压缩遗留汇编码(legacy assembly code)兼容的方法和装置。
由于RISC微处理器的尺寸以及存储可执行代码所需的存储器增加,因此制造成本也增加。尤其对于嵌入式应用,需要降低装置的硅面积。降低面积的一种方法是减少存储包括典型应用代码的微处理器指令所需的存储器。
需要在不牺牲功能或不影响性能或设计复杂度的情况下,减少指令代码尺寸。
发明内容
本发明提供方法和装置,用于减少被编译以在RISC架构的微处理器中执行的应用的代码尺寸。在一个实施方式中,以16、32或48位对指令进行编码,第一指令子集具有16位紧凑编码长度和32位常规编码长度,第二指令子集具有32位常规编码长度和48位扩展编码长度。对于尺寸受到可用存储器数量限制的应用,可使用紧凑和常规形式的指令。对于要求高性能的应用,可使用常规和扩展形式的指令。通过对应用的不同部分实现编码长度的明智选择,应用可被调谐用于特定成本、代码尺寸和性能特征。例如,具有从昂贵的闪存操作的启动代码和从便宜的RAM执行的应用代码的装置可为其启动代码使用紧凑形式编码长度指令,而通过为应用代码指令使用常规或扩展形式 使应用性能最大。另外,提供编译器、汇编器和连接器以通过16、32和48位形式的RISC架构指令生成可执行形式的软件应用。
在另一个实施方式中,RISC架构的指令以单独的遗留编码进行编码,遗留编码包括仅以32位长度进行编码的指令。提供编译器、汇编器和连接器以通过遗留形式的指令编译软件对象,并将遗留编码的软件对象与通过16、32和48位编码长度编译的软件对象结合。进一步,提供装置和方法以确定微处理器能够解码和执行的编码。还提供装置和方法以当微处理器能够执行一个以上的编码时,选择性地控制由执行软件的微处理器使用的编码。
下面参照附图详细描述本发明的进一步的特点和优点、以及本发明不同实施方式的结构和操作。
附图说明
结合附图根据以下详细描述,本发明的特征和优点将变得更加显而易见,其中相同标号表示相同或功能相似的元件。
图1为利用本发明的单指令集架构(ISA)微处理器系统的框图;
图2更详细地示出了图1的系统存储器的一部分;
图3列出了来自本发明ISA的具有16位和32位长度编码的指令子集;
图4是使本发明的6位主操作码(major opcode)的二进制位编码与其相关联的助记符(mnemonics)相关的表格;
图5A至图5D是使编码的寄存器字段值与其相关联的解码值相关的表格;
图6A至图6G是使编码的立即数字段值与其相关联的解码值相关的表格;
图7A至图7C示出了本发明的ISA中指令的示例性序列的存储器中的大端(big-endian)和小端(little-endian)布局;
图8A示出了来自本发明ISA的具有16位和32位两种编码长度的指令子集的16位编码;
图8B示出来自本发明ISA的具有16位和32位两种编码长度的 指令子集的32位编码。
具体实施方式
本发明提供用于减少在RISC架构的微处理器中执行的软件的指令代码尺寸的方法和装置。本发明的方法实施方式被编码到指令中,该指令可作为计算机程序的一部分而被有效地存储。本发明的装置实施方式执行根据本发明的指令。如在此所描述的,根据本发明的指令可由能够对RISC架构指令的一个编码进行解码的微处理器执行,或者可由能够对RISC架构指令的一个以上编码进行解码的微处理器执行。
实现本发明的RISC架构的微处理器被设计为以几种不同的安全模式操作。每种安全模式均定义和控制在该安全模式中执行的软件应用可访问的微处理器资源和特征。在一个实施方式中,微处理器具有至少两种操作模式,称为“特许(privileged)”或“核心(kernel)”模式、以及“用户”模式。当微处理器上电或重启时,微处理器开始操作在特许模式中。这意味着执行的初始指令集可以访问微处理器的所有资源,并且可定义微处理器如何操作、如何为当前环境配置微处理器等。在微处理器配置完成之后,操作模式可切换至用户模式。在用户模式中,允许软件访问通用寄存器,但是不允许其访问对微处理器操作或配置进行控制的特许架构寄存器。这种双模式架构为计算机系统提供了安全性,确保操作环境的可靠性,并且防止用户模式指令访问或修改特许资源。
在一个实施方式中,本发明的RISC架构具有三个元素:(1)指令集架构(ISA),(2)特许资源架构,以及(3)特定架构延伸(Architecture Specific Extensions,ASE)。ISA定义了包括编码的指令,指令将在该架构的微处理器实施方式上执行。特许资源架构定义了ISA操作的环境和能力集,提供必要的机制来管理RISC架构的微处理器实施的资源,例如安全模式、虚拟存储器、高速缓冲存储器、异常、用户上下文等。ASE为可选的特定应用扩展(application specificextension)提供指令和架构支持。
在一个实施方式中,ISA提供四个协处理器,命名为CP0、CP1、CP2和CP3。CP1、CP2和CP3是可选的。CP0是必需的。CP0、即系统协处理器将软件接口提供给特许资源架构。特定的特许模式指令用于访问和修改协处理器。
在一个实施方式中,包含在CP0中的寄存器提供对配置信息和配置管理的访问,并且提供必要的控制功能以使得微处理器可通过基于软件的应用来操作。例如,特定寄存器用于配置高速缓冲存储器,定义如何处理异常,以及配置存储器管理。在一个实施方式中,CP0包含多达256个寄存器,256个寄存器分为32组,每组8个寄存器。32组寄存器标记为协处理器0、寄存器n,其中n从0至31,而每组中的寄存器标记为选择寄存器m,其中m从0至7。例如,CP0寄存器0、选择3指位于CP0中的第3个寄存器(0×8+3),而CP0寄存器16、选择3指位于CP0中的第131个寄存器(16×8+3)。
在一个实施方式中,架构包括下述的CPU寄存器:
32个通用寄存器(GPR),其中的3个通用寄存器中具有分配的功能并且用于执行特定的软件操作:
寄存器R0也标记为0。寄存器R0硬连线(hardwired)至0值,并且可用作结果将被舍弃的任何指令的目标寄存器。当需要0值时,R0还可用作源。
寄存器29(R29)也标记为堆栈指针寄存器SP。SP的功能稍后介绍。
寄存器31(R31)也标记为返回寄存器RA。RA的功能稍后介绍。
一对专用寄存器(HI和LO),保存整数乘法、除法以及累积乘法(multiply-accumulate)运算的结果。
专用程序计数器(PC),保存当前正在执行的指令的地址。通过在当前指令执行期间为PC分配一个值来确定接下来将要执行的指令的地址。如果在当前指令执行期间没有给PC分配值,则PC自动增至下一顺序指令的地址。在跳转/转移(jump/branch)指令的特殊情况下,需要额外时间来计算跳转或获取转移目标地址。在执行该“延迟槽 (delay slot)”指令期间执行存储器中的下一顺序指令并其将所获取的跳转/转移目标地址分配给PC,而不是让微处理器暂停(stall)以等待计算完成。
ISA模式寄存器是1位寄存器,ISA模式寄存器对微处理器解码的指令编码进行控制。稍后介绍ISA模式寄存器的操作,下文称为ISA模式位(Mode bit)。
图1示出了本发明实施的示例性环境。特别地,图1示出了实施本发明的微处理器系统100。系统100包括执行单元110、系统协处理器115、乘/除单元120、存储器管理单元130、高速缓冲存储器控制器140、高速缓冲存储器142、总线接口单元150、微处理器存储器总线155以及存储器160。总线接口单元150将高速缓冲存储器控制器140连接至总线接口单元150。系统存储器总线155执行单元将总线接口单元150连接至系统存储器160。执行单元110具有算术逻辑单元112和寄存器文件116。微处理器系统100是示例性的,不限制本发明。例如,在其他的实施方式中,微处理器100可省略高速缓冲存储器142和高速缓冲存储器控制器140。
在一个实施方式中,寄存器文件116具有32个通用寄存器(GPR),标记为R0-R31。在其他实施方式中,寄存器文件116可具有多于或少于32个GPR。寄存器29和31具有除了它们常规的GPR功能之外的功能。因此,GPR 29也标记为堆栈指针寄存器SP,GPR 31也标记为返回地址寄存器RA。这些标记将在下文中用到以进一步描述本发明,本领域技术人员将理解这些标记只作为示例并且不限制本发明。
图2更详细地示出了系统存储器160的一部分。系统存储器160包括用户存储器202和操作系统存储器(未示出)。用户存储器202包括5个感兴趣的区域。这些区域是程序代码区域204、数据区域206A、堆区域206B、堆栈区域208、以及未使用或可用的空间区域(space region)210。从图2中可以看出,堆栈区域208通常包括用于经由存储器104将值传给子程序的区域212和用于将传给子程序的值存储在寄存器中的保留空间。堆栈指针(SP)216表示存储器104的寄存器210中下一个可用存储器位置的地址。
程序代码区域204用于存储正由系统100执行的程序的指令。将由微处理器执行的程序指令必须从主存储器104中的程序代码区域204中读入微处理器系统100中。
堆206B用于全局意义或长期(long-lived)的动态数据,而堆栈208用于局部重要(locally significant)和短期(short-lived)的动态数据。堆存储器206B的分配包括存储器中数据结构的软件操作,该软件操作控制堆存储器的显式分配。通过更新堆栈指针216、以及通过记住每次分配的数据项的堆栈指针偏移,简单地进行堆栈208上的动态数据的分配。如图2所示,堆栈208从较高的存储器地址向较低的存储器地址增加。在本发明的其他实施方式中,堆栈208可从较低的存储器地址向较高的存储器地址增加。数据区域206A用于存储静态数据。
现在参照系统100的特征描述本发明,系统100提供本发明实施的示例性环境。然而,本领域技术人员可以理解,本发明可在其他微处理器环境中实施。
在一个实施方式中,RISC架构是MIPS架构。上面所列已经通过引用并入本文的文档详细描述了MIPS32和MIPS64架构。在一个实施方式中,在MIPS32架构手册的卷III中描述了特许资源架构。在另一个实施方式中,在MIPS64架构手册的卷III中描述了特许资源架构。在MIPS架构文档的对应卷III中描述了用于每个实施方式的CP0寄存器。现在参照MIPS32架构进一步描述本发明,MIPS32架构提供了本发明实施的示例性环境。然而,本领域技术人员应理解,本发明可在其他微处理器环境中实施。
在一个实施方式中,本发明具有MIPS32架构的特许资源架构、和指令集,该指令集包含在之前通过引用并入本文的MIPS架构手册卷II-b中所列的指令。一些指令具有16位和32位两种编码长度。图3,表300列出了具有双重编码(dual encoding)的指令。表300中的列310列出16位指令的助记符。列320列出了具有32位编码长度的指令的助记符。列330提供了指令操作的概要,这些指令的助记符与包含指令概要的行相关联。其中适当地,表示指令中的数位的数字16 附于助记符的后面,以对具有与两种不同编码长度相关联的相同助记符的指令进行区分。
指令编码(instruction encodings)由多个字段构成。每个指令编码具有在指令编码中左对齐的6位主操作码字段。主操作码字段二进制值表示指令宽度,从而便于通过实施本发明实施方式的微处理器获取和执行指令。指令编码中例如寄存器字段、立即数字段和副操作码(minor opcode)字段的其他字段的数量、构成、长度以及对齐取决于指令。
图4中的表400示出了将本发明主操作码助记符映射到它们相关联的6位二进制编码。方框410包含主操作码助记符。与每个助记符相关联的指令的长度由位于助记符结尾的数字16、32、48表示。例如,主操作码POOL16A涉及16位指令,主操作码POOL48A涉及48位指令。包含星号的方框410保留用于指令集的将来扩展。当执行具有与包含星号的方框相对应的主操作码的指令时,能够执行根据本发明指令的微处理器必然导致保留指令异常。方框415的行包含助记符的3个最高有效位(Most Significant Bits,MSB)的二进制位值。方框420的行包含助记符的其余3位的二进制位值。通过在表格400中定位操作码、以及通过将与包含操作码的列相关联的方框415的内容与包含操作码的行相关联的方框420的内容连在一起,获得具体操作码的编码。作为确定具体操作码的二进制值的方法的示例,考虑主操作码BEQ32。相关联的方框415包含二进制值100;相关联的方框420包含二进制值101。将两个二进制值连在一起产生与BEQ32相关联的6位操作码100101。
注意,图4的表格400示出了将用于16位指令的全部主操作码分到3个相邻的行中。主操作码的最低有效位(Least Significant Bit)分组允许将指令容易地分为具有16位长度的指令和不具有16位长度的指令。例如,如果A表示LSB位2的二进制值,B为LSB位1的值且C为LSB位0的值,那么布尔表达式(NOT A)AND(B OR C)为16位操作码产生‘1’,为所有其他操作码产生‘0’。通过操作码对指令长度的容易分离便于实施本发明一个实施方式的微处理器获取和 执行指令。
每个指令编码可具有0至4个寄存器字段。将指令寄存器字段命名为rs1、rs2、rs3、以及rd。3个rs字段是对保存将在指令执行中使用的信息的微处理器寄存器进行指定的操作数字段(operand field),rd是对接收指令执行结果的微处理器寄存器进行指定的操作数字段。用于32位和48位指令的寄存器字段长度是5位。由于长度取决于主操作码,因此用于16位指令的寄存器字段长度是5位或3位。多数5位字段是线性编码,即寄存器字段中包含的值是在指令执行中使用的GPR的数量。3位寄存器字段和一些5位寄存器字段具有特定指令寄存器编码(instruction specific register encoding),即寄存器字段中的值用作返回将在指令执行中使用的实际GPR或GPR列表的表中的偏移。通过解码寄存器字段选择的GPR对应于在O32MIPS应用二进制接口(Application Binary Interface,ABI)中定义的寄存器约定。在之前列出的看MIPS运行Linux(See MIPS Run Linux)手册的第十一章描述了O32 MIPS ABI。根据图5A、5B或5D中所示的表格对3位寄存器字段中的内容进行解码。根据图5C中所示的表格对编码的5位寄存器字段中的内容进行解码。图5A中的表格500和图5B中的表格520将行505中包含的线性编码寄存器字段十六进制值映射到行510中包含的十进制GPR值。行510的表格条目中所列举的GPR是由在子程序调用中使用的ABI定义的GPR。图5C中的表格540和图5D中的表格560连接包含在寄存器列表(reglist)寄存器字段中的十六位进制值和GPR列表。列550的表格条目中的十六位进制值作为行545所示的GPR的可变长度列表的指针。在列表中列出的GPR由ABI定义,该ABI用于保存必须跨子程序调用保留的变量。考虑利用图5C中表格540的映射的示例:如果LWM指令(稍后介绍)的5位寄存器字段保存值4,那么GPR 16、17、18和19将用于LWM指令的执行。因此,对寄存器字段值的内容进行解码,以表示通过表格5A、5B、5C或5D中的一个进行的解码。
并不是所有指令都具有立即数字段或副操作码字段。指令编码中的副操作码字段长度和位置取决于指令。这里使用的术语“立即数字 段”包括用于转移和加载/存储指令的地址偏移字段以及跳转目标字段。指令编码中的立即数字段长度和位置取决于指令。一些指令具有被分为几个区域的立即数字段。一些16位指令具有立即数字段,其内容必须以非线性模式解码以产生在指令执行中使用的立即数。图6A、6B、6C、6D、6E、6F和6G示出了表示由不同指令使用的非线性解码的表格。图6A中的表格600示出了应用于4位立即数字段的非线性解码,图6B中的表格620示出了用于7位立即数字段的解码,以及图6C中的表格640示出了用于9位立即数字段的解码。表格6A、6B和6C的行610中的表格条目包含位于立即数字段中的编码的十六进制值;表格6A、6B和6C的行615中的表格条目包含与行610中相应表格条目相关联的解码的十进制值。图6D、6E、6F和6G示出了表示由指令使用的非线性解码的表格,该指令的助记符包含在表格650、660、670和680的行652中。这四个表格的行655中的十六进制条目是在这四个表格的行652中命名的指令的立即数字段中的十六进制值。这四个表格的行657中的内容是在这四个表格的行652中命名的指令的立即数字段的解码值。图6F中的表格660的行657中的解码值以十六进制格式表示;其余三个表格中的行657中的解码值以十进制格式表示。
根据系统字节顺序(endianess)将指令置于微处理器存储器中。以16位为一组的形式获取或存储指令。在大端模式的具有32位存储器的32位微处理器上,16位指令首先以位31-16(字节0和1,半字1)、然后以位15-0(字节2和3,半字0)的半字顺序存储。在小端模式的32位微处理器上,16位指令首先以位15-0(字节1和0)、然后以位31-16(字节3和2)的半字顺序存储。将32位指令存储为2个16位半字;将48位指令存储为3个16位半字。将指令置于存储器中使得指令关于地址顺序排列。考虑下面在图7A、7B和7C中示出的实施方式。图7A示出了具有5个指令的假设序列700:一个16位指令,接下来是一个32位指令,然后是3个16位指令。单元710包含16位指令,单元715包含32位指令。单元705的内容表示32位存储器的半字0的存储器中的位顺序(bit order);单元706的内容表示32位 存储器的半字1的存储器中的位顺序。存储器中的位顺序独立于字节顺序(endian order)。图7B中的存储布局(memory layout)720示出了包括根据本发明的指令的半字710按照大端顺序置于存储器中的顺序。图7B的存储布局720的行725中的单元表示存储器中字节的寻址顺序。注意,32位AND(与)指令包括分配在两个32位存储器位置上的两个最高有效半字(msh)和最低有效半字(lsh)。图7C中的存储布局730示出了根据本发明指令的32位存储器中的小端布置。
在一个实施方式中,微处理器能够执行来自本发明ISA和第二ISA的指令。第二ISA例如可以是包括遗留指令的ISA。第二ISA可用于开发由第二ISA的指令构成的程序。在下文中,第二ISA称为遗留ISA。在一个实施方式中,遗留ISA可以是MIPS32ISA。例如,这两个ISA微处理器可提供一种将软件应用成本有效地从遗留ISA迁移至本发明更有效的ISA的方式。也就是,可逐渐地迁移程序,该程序的一部分执行遗留指令而其他部分执行来自本发明ISA的指令。在这种状态下,当应用可包含来自两个不同ISA的指令时,微处理器能够对其指令在应用的不同部分中使用的ISA进行检测和控制。
在一个实施方式中,CP0包含用于ISA检测和控制的寄存器。在微处理器上激活的(enabled)ISA的数量由CP0寄存器16、选择3的位15(下面表示为config3[15])表示。在一个实施方式中,可执行来自两个ISA的指令的微处理器具有永久设置为值‘1’的config3[15],而仅能执行来自单个ISA的指令的微处理器具有永久设置为值‘0’的config3[15]。在一个实施方式中,能够使用两个ISA的微处理器可选择ISA用于操作的特许模式和用户模式两种模式中的指令执行。随后参照JALX指令描述对其指令在用户模式指令执行期间执行的ISA进行选择的方法。按如下方式对其指令当微处理器在特许模式中操作时执行的ISA进行选择。有四个事件引起微处理器操作在特许模式中:(1)微处理器重启/上电或接收到不可屏蔽中断(NMI),(2)微处理器外部的一些事件发出中断信号,(3)生成作为指令执行的副产品的异常,例如运算溢出,(4)执行系统调用或陷阱指令。事件(2)、(3)和(4)是软件执行过程中可能发生的所有异常。异常必须在特许模式 中处理,但是当异常处理完成时,软件执行和当异常发生时其指令正在执行的ISA可在该模式下继续正常工作,即微处理器不需要初始化或重新初始化。在一个实施方式中,设置为值‘1’的config3[16]选择本发明的ISA作为处理异常时其指令被执行的ISA,而设置为值‘0’的config3[16]选择遗留ISA作为处理异常时其指令被执行的ISA。在一个实施方式中,config3[16]可设置恒定值。在其他实施方式中,config3[16]可由在微处理器上执行的软件的控制下设置和清零,或由微处理器外部的信号控制,该信号例如为通过改变安装在主板上的硬件开关的位置而生成的信号。事件(1)的发生不同于事件(2)、(3)或(4),因为事件(1)需要微处理器被初始化(“启动(boot)”)或者被重新初始化(“重新启动”),即进行例如高速缓冲存储器设置、内存管理单元配置、以及禁止或启用中断的操作。在一个实施方式中,下文表示为config3[14]且设为值‘1’的CP0寄存器16、选择3的位14选择本发明的ISA作为其指令被执行以进行初始化的ISA,而设置为值‘0’的config3[14]选择遗留ISA作为其指令必须被执行以进行初始化的ISA。在一个实施方式中,config3[14]可设置为恒定值。在其他实施方式中,config3[14]可由在微处理器上执行的软件的控制下设置和清零,或者可由微处理器外部的信号控制,该信号例如为通过改变安装在主板上的硬件开关的位置而生成的信号。
在一个实施方式中,能够执行来自两个ISA的指令的微处理器利用ISA模式位的值来确定其指令被执行的ISA。特定指令的执行使ISA模式位的值改变。特别地,JALX指令的执行,总是改变ISA模式位的值,JRADDIUSP、JRC、JALR或JR指令的执行可能改变ISA模式位的值。下面将结合关于JALX和JRADDIUSP指令操作的描述,给出导致ISA模式位改变的步骤的顺序。如果在指令执行期间发生异常,那么微处理器将ISA模式位和表示最后成功执行的指令的位置的地址保存到由异常类型确定的CP0寄存器中。在异常处理结束时,微处理器可恢复所保存的值,并在该地址处和通过异常发生时操作的ISA继续执行。可选地,可通过异常处理软件修改保存的值,以在不同的地址处和通过其他ISA的指令继续执行。
在另一个实施方式中,微处理器能够仅执行本发明ISA的指令。在这种情况下,下文称为config3[15]的CP0寄存器16、选择3的位15固定为‘0’,config3[14]固定为‘1’,config3[16]固定为‘1’,以及ISA模式位固定为‘1’。
在又一个实施方式中,微处理器能够仅执行遗留ISA的指令。在这种情况下,config3[15]固定为‘0’,config3[14]固定为‘0’,config3[16]固定为‘0’,以及ISA模式位固定为0。
在一个实施方式中,本发明的ISA的指令以16、32或48位编码,第一指令子集具有16位紧凑编码长度和32位常规(normal)编码长度,第二指令子集按照32位常规编码长度和48位扩展编码长度进行编码。选择具有扩展编码长度的指令,以通过合并比具有常规编码长度的可能指令更大的立即数字段来提供高性能。基于三种标准选择具有紧凑编码长度的指令:(1)成本,(2)发生的统计频率,以及(3)必要性或便利性。
通过计算对MIPS32ISA中单独指令的所有操作数和参数进行编码所需的位的数量,以及通过基于所计算的位的数量分配编码成本值,确定编码成本。例如,给从Hi移出(Move From Hi,MFHI)和从Lo移出(MFLO)指令分配低编码成本,因为这两个指令可最低限度地以12或13位编码,即该指令仅需要6位主操作码、少量的副操作码(minor opcode)位、和一个5位寄存器字段。另一方面,给小于无符号立即数(Less Than Immediate Unsigned,SLTIU)指令的集分配高编码成本,因为其需要6位主操作码字段、16位立即数字段和两个5位寄存器字段。一旦完成成本分配,则执行统计分析以确定用于16位编码的最可能的候选者,以及基于逐个指令确定用于减小操作数字段尺寸的可能策略。
通过分析利用多种优化选择的MIPS编译器对多种应用的源代码进行编译产生的MIPS32和MIPS64的目标文件和二进制的现存遗留编码,生成统计分析的统计信息。该分析包括确定指令的发生频率以及与指令相关联的操作数字段值(例如,寄存器字段和立即数字段值)。分析结果用于通过指令的发生频率对指令评级(rank)以及选择最常 用的操作数字段值。最频繁使用的指令通过其成本评级,成本最低、发生频率最高的指令以16位长度重新编码。在某些情况中,通过用于选择字段值的统计分析,减少寄存器字段和/或立即数字段的功能以适合16位编码。例如,通过参照最通常使用的寄存器或寄存器组合选择特定转换表的字段值,将寄存器字段减少至3位,而通过选择包含具有统计高发生率的偏移值的特定转换表的字段值,减少立即数字段长度。应该注意到,编译器设计导致最常用的寄存器成为MIPS软件应用二进制接口(MIPS ABI)中的规定的寄存器。最后,在一些情况下,因为指令具有被认为重要或便利的特定功能,例如,设置调试断点(SDBBP16)和BREAK16的调试指令,因此这些指令仅以16位进行编码。
通过用相应的16位紧凑编码长度指令替换第一子集的32位常规编码长度指令来实现代码尺寸的减少。对于具有代码尺寸限制的应用软件,使用紧凑和常规形式的指令编码。对于具有性能要求的应用软件,使用常规和扩展形式的指令编码。特别地,增强和调谐的编译器和汇编器用于自动实现替换。可为编译器和汇编器提供预选择的代码尺寸和性能要求,以控制编译和/或汇编过程中执行的调谐。例如,表示代码尺寸或性能优化的不同等级的标记(flag)可附于命令行信息的后面,命令行信息通常提供给编译器/汇编器作为常规编译/汇编过程的一部分。而且,增强的汇编器和连接器具有生成软件对象并将该对象组合到模块中的装置,其中软件对象包括来自本发明ISA和遗留ISA两者的指令,模块可在能够执行来自两个ISA的指令的微处理器上执行。
图8A和图8B示出了具有16位和32位编码的、本发明ISA的指令编码。图8A的表格800列出了16位指令及其编码。图8b的表格850列出了32位指令及其编码。表格800和表格850的行根据指令格式进行分组。每组的首行示出了用于该组的指令格式和该格式组的名字。通常,格式组名字描述了该组中寄存器的数量和该组中立即数字段的长度。另外,16位组名以字母“S”开头,其后为表示指令中寄存器字段的宽度的数字。作为示例,考虑表格800中的组名S3R2I0 和S5R1I5。组名S3R2I0表示该组中的指令具有2个3位寄存器字段而没有立即数字段,而S5R1I5表示该组中的指令具有1个5位寄存器字段和5位立即数字段。指令包括可具有多种定义的字段,其包括被定义为没有立即数字段的立即数字段定义。标有‘X’的位字段通常保留且未定义。一些缩写用于适应位字段,例如图800中的1位(singlebit)副操作码字段缩写为字母‘M’。
说明本发明持征的代表性指令
JALX-跳转和连接交换
图8B中示出了32位JALX指令的格式。在一个实施方式中,当能够执行来自本发明ISA和来自遗留ISA的两种指令的微处理器执行JALX指令时,JALX指令将返回地址连接(return address link)置于RA中,在转移延迟槽(branch delay slot)中执行该指令,将ISA模式位改变为其相反值(即从1变为0,或从0变为1),并跳转至有效目标地址。返回地址连接是延迟槽指令之后的指令的地址,在形成返回地址时将地址的位0设置为ISA模式位的值。通过为PC加上一个数字来形成延迟槽指令后面的指令的地址,该数字等于4加上转移延迟槽指令中字节的数量。通过将返回地址连接的位31-28中的内容与目标字段左移两位后的内容连在一起,来形成有效目标地址。该转移是具有由返回地址位31-28限定的256M对齐区域中的有效目标地址的PC区域转移(不是相对PC)。注意,这种有效地址的定义产生边界条件,其中当JALX指令是其256M区域的最后一个字时,转移是JALX指令之后的256M区域。如果由能够仅执行来自单个ISA的指令的微处理器执行JALX,则生成保留指令异常。
JRADDIUSP-跳转寄存器,跳转堆栈指针
在图8A中示出了JRADDIUSP指令的格式。在一个实施方式中,当由能够执行来自本发明ISA和来自遗留ISA的两种指令的微处理器执行JRADDIUSP指令时,JRADDIUSP将ISA模式位设置为包含在RA的位0中的值,对RA位0清零,跳转至包含在RA中的16位对齐地址,并且利用立即数字段的内容调节SP的值。通过将立即数字段左移两位、零扩展(zero extending)所移的值、将扩展后的所移值 加至SP的值并且将结果置于SP中,从而获得调节的SP的值。当由能够仅执行来自本发明ISA的指令的微处理器执行JRADDIUSP时,省去将ISA模式位设置为包含在RA的位0中的值以及对RA位0清零的动作。在这种情况下,如果RA的位0与ISA模式位不同,则在目标指令获取时生成地址异常。在一个实施方式中,该指令不具有转移延迟槽并且在多个CPU周期中执行。当从执行期间发生的任何异常返回时,该指令全面重启。
LWM-装载多字
图8B中示出了32位LWM指令的格式。在一个实施方式中,当由能够执行来自本发明ISA指令的微处理器执行LWM时,LWM从在微处理器存储器中的有效地址开始装载一序列的字,并将其存储在选择的GPR中。通过将立即数字段的内容左移两位、零扩展GPR长度的结果、将零扩展结果加至GPR基址(base),以及执行任何需要的虚拟地址向物理地址的转换,从而形成有效的地址。如果有效地址不是32位对齐的,即如果有效地址的两个最低有效位为非零,则出现地址错误异常。通过对根据图5C中表格540的寄存器字段寄存器列表的内容进行解码,确定所选择的微处理器目标寄存器。保留未列在该表中的编码。表格540中所列的GPR 16-23在O32 ABI中被称为子程序寄存器变量;GPR 30被称为第八个子程序寄存器和帧指针;GPR 31是RA。通过表中所列的、从列表上最左侧的寄存器开始到列表上最右侧的寄存器结束的顺序,使寄存器的数量与有效地址相关联。对于列表上的每下一个寄存器,有效地址增加。该指令可执行可变数量的周期,并且可执行来自存储器的可变数量的装载。当从该指令执行期间发生的任何异常返回时,执行操作序列的完全重启。如果GPR基址是目标寄存器中的一个,则该指令的行为是未定义的,因为这可防止如果发生异常时操作的完全重启。
LWM16-装载多字
在图8A中示出了LWM16指令的格式。在一个实施方式中,当由能够执行来自本发明ISA指令的微处理器执行LWM16时,LWM16从在微处理器存储器中的有效地址开始装载一序列的字,并且将其存 储在选择的GPR中。通过将4位偏移字段的内容左移两位、零扩展GPR长度的结果、将零扩展结果加至SP的内容,以及执行任何需要的虚拟地址向物理地址的转换,从而形成有效的地址。如果有效地址不是32位对齐的,则出现地址错误异常。通过对根据图5D中表格560的两位列表字段的内容进行解码,确定所选择的微处理器目标寄存器。表格560中列出的GPR 16-19在O32 ABI中被称为子程序寄存器变量;GPR 31是RA。通过表中所列的、从列表上最左侧的寄存器开始到列表上最右侧的寄存器结束的顺序,使寄存器的数量与有效地址相关联。对于列表上的每下一个寄存器,有效地址增加。该指令可执行可变数量的周期,并且可执行来自存储器的可变数量的装载。当从该指令执行期间发生的任何异常返回时,将执行操作顺序的完全重启。
SWM-存储多字
图8B中示出了SWM指令的格式。在一个实施方式中,当由能够执行来自本发明ISA指令的微处理器执行SWM时,SWM将一列GPR的内容置于从有效地址开始的连续顺序存储器位置中。通过对根据图5C中表格540的字段寄存器列表进行解码,找到这列GPR。保留未列在该表中的编码。表格540中列出的GPR 16-23在O32 ABI中被称为子程序寄存器变量;GPR 30被称为第八个子程序寄存器和帧指针;GPR 31是RA。通过将无符号12位立即数字段的内容左移、零扩展GPR长度的结果、将零扩展结果加至GPR基址,以及执行任何需要的虚拟地址向物理地址的转换,从而形成有效的地址。如果有效地址不是32位对齐的,即如果有效地址的两个最低有效位为非零,则发生地址错误异常。通过表中所列的、从列表上最左侧的寄存器开始到列表上最右侧的寄存器结束的顺序,使寄存器的数量与有效地址相关联。将列表中的第一寄存器置于有效地址中。对于列表上的每下一个寄存器,有效地址增加。该指令可执行可变数量的周期,并且可执行存到存储器的可变数量的存储。当从该指令执行期间发生的任何异常返回时,执行操作顺序的完全重启。
SWM16-存储多字
图8A中示出了SWM16指令的格式。在一个实施方式中,当由能 够执行来自本发明ISA指令的微处理器执行SWM16时,SWM16将一列GPR的内容置于从有效地址开始的连续顺序存储器位置。通过对根据图5D中表格560的两位列表字段的内容进行解码,找到这列GPR。表格560中列出的GPR 16-19在O32 ABI中被称为子程序寄存器变量;GPR 31是RA。通过将无符号4位立即数字段的内容左移两位、零扩展GPR长度的结果、将零扩展值加至SP内容,以及执行任何需要的虚拟向物理地址的转换,从而形成有效的地址。如果有效地址不是32位对齐的,则发生地址错误异常。通过表中所列的、从列表上最左侧的寄存器开始到列表上最右侧的寄存器结束的顺序,使寄存器的数量与有效地址相关联。将列表中的第一寄存器存储在有效地址中。对于列表上的每下一个寄存器,有效地址增加。该指令可执行可变数量的周期,并且可执行存到存储器的可变数量的存储。当从该指令执行期间发生的任何异常返回时,将执行操作顺序的完全重启。
ANDI16-与立即数
图8A中示出了ANDI16指令的格式。在一个实施方式中,当由能够执行来自本发明ISA指令的微处理器执行ANDI16时,ANDI16执行常量与置于通过图5A中表格500对3位寄存器字段rs1的内容进行解码而确定的GPR中的值的按位逻辑与(AND),并且将结果存储在通过图5A中表格500对3位指令字段rd的内容进行解码而确定的GPR中。通过根据图6E中表格600解码立即数值,以及通过将结果零扩展至微处理器寄存器长度,确定用于逻辑与运算的常量。
虽然以上描述了本发明的不同实施方式,但是应该理解这仅是通过示例性而非限制性的方式给出的。对于相关计算机领域的技术人员而言显而易见的是,在不偏离本发明精神和范围的前提下可进行形式和细节的各种改变。例如,除通过硬件(例如,位于中央处理单元(“CPU”)内或连接至CPU、微处理器、微控制器、数字信号处理器、处理器核、片上系统(SOC)或任何其他可编程或电子装置)实施之外,还可在置于被配置为存储软件的计算机可用(例如,可读)介质中的软件(例如,计算机可读代码、程序代码,和/或以例如源语言、目标语言、机器语言的任何形式的指令)中实施。这样的软件可启动 例如在此描述的方法和装置的功能、制造、建模、仿真、描述、和/或测试。例如,这可通过使用通用编程语言(例如C、C++)、包括VerilogHDL、VHDL等的硬件描述语言(HDL)来完成。软件还可置于计算机可用(例如,可读)介质内,计算机可用介质包括半导体、磁盘或光盘(例如,CD-ROM、DVD-ROM等)。软件还可作为在计算机可用(例如,可读)传输介质(例如,载波、或包括数字、光或基于模拟的介质的任何其他介质)内实施的计算机数据信号。本发明的实施方式可包括方法,该方法通过提供描述装置的软件并且将软件作为计算机数据信号在包括因特网和内部网的通信网络上传输,提供在此描述的装置。
应该理解在此描述的装置和方法的实施方式包括在半导体知识产权核心中,例如微处理器核心(例如,在HDL中实现),并且转换为生成集成电路的硬件。另外,在此描述的装置和方法可实现为硬件和软件的结合。因此,本发明不应受到任何上述示例性实施方式的限制,而是仅由下述权利要求及其等同限定。

Claims (37)

1.一种操作处理器的方法:
如果将由所述处理器执行的代码与由第一指令集定义的第一编码兼容,则将第一位设置为第一值;
如果将由所述处理器执行的所述代码与由第二指令集定义的第二编码兼容,则将所述第一位设置为第二值;
根据所述第一位执行所述代码;
将第二位设置为第一值,以使所述处理器根据所述第一指令集处理异常/中断请求,所述第二位不同于所述第一位;
将所述第二位设置为第二值,以使所述处理器根据所述第二指令集处理异常/中断请求;以及
根据所述第二位执行所述代码,
其中,所述第一指令集包括具有第一长度的第一指令子集和具有第二长度的第二指令子集,以及所述第二指令集包括具有第三长度的第一指令子集和具有第四长度的第二指令子集。
2.如权利要求1所述的方法,其中,所述第一位的设置在所述处理器上电之前执行。
3.如权利要求2所述的方法,其中,所述第一位是通过改变硬件开关的位置而设置的。
4.如权利要求1所述的方法,其中,所述第一位是通过改变寄存器的值而设置的。
5.如权利要求1所述的方法,其中,所述第一位存储在与所述处理器协同操作的协处理器中。
6.如权利要求1所述的方法,其中,所述第二位是通过改变硬件开关的位置而设置的。
7.如权利要求1所述的方法,其中,所述第二位是通过改变寄存器的值而设置的。
8.如权利要求1所述的方法,其中,所述第二位存储在与所述处理器协同操作的协处理器中。
9.如权利要求1所述的方法,其中,所述第一指令集包括使所述处理器将执行从所述第一编码切换至所述第二编码的至少一个指令,所述第二指令集包括使所述处理器将执行从所述第二编码切换至所述第一编码的至少一个指令。
10.如权利要求1所述的方法,其中,所述第一指令集包括遗留指令,所述第二指令集包括可变长度的指令。
11.如权利要求1所述的方法,其中,所述第一指令集的第一指令子集由紧凑编码长度限定,所述第一指令集的第二指令子集由比紧凑编码长度大的常规编码长度限定。
12.如权利要求1所述的方法,其中,所述第二指令集的第一指令子集由常规编码长度限定,所述第二指令集的第二指令子集由比常规编码长度大的扩展编码长度限定。
13.如权利要求1所述的方法,其中,紧凑编码长度为16,常规编码长度为32,扩展编码长度为48。
14.一种适于执行代码的计算机系统,所述计算机系统包括:
存储单元;
处理器:
如果第一值存储在所述存储单元中,则所述处理器适于根据第一指令集的编码执行所述代码;
如果第二值存储在所述存储单元中,则所述处理器适于根据第二指令集的编码执行所述代码;
如果第三值存储在所述存储单元中,则所述处理器适于根据第一指令集的编码执行所述代码;以及
如果第四值存储在所述存储单元中,则所述处理器适于根据第二指令集的编码执行所述代码,
其中,所述第一指令集包括具有第一长度的第一指令子集和具有第二长度的第二指令子集,以及所述第二指令集包括具有第三长度的第一指令子集和具有第四长度的第二指令子集。
15.如权利要求14所述的计算机系统,其中,在所述处理器上电之前,所述第一值或所述第二值存储在所述存储单元中。
16.如权利要求15所述的计算机系统,其中,所述第一值和所述第二值是通过改变硬件开关的位置确定的。
17.如权利要求14所述的计算机系统,其中,所述第三值和所述第四值是通过改变硬件开关的位置确定的。
18.如权利要求14所述的计算机系统,其中,所述存储单元是置于与所述处理器协同操作的协处理器中的寄存器。
19.如权利要求17上所述的计算机系统,其中,所述第一值、所述第二值、所述第三值和所述第四值是通过改变寄存器的值确定。
20.如权利要求14所述的计算机系统,其中,所述第一指令集包括使所述处理器将执行从所述第一指令集的编码切换至所述第二指令集的编码的至少一个指令,所述第二指令集包括使所述处理器将执行从所述第二指令集的编码切换至所述第一指令集的编码的至少一个指令。
21.如权利要求14所述的计算机系统,其中,所述第一指令集包括遗留指令,所述第二指令集包括可变长度的指令。
22.一种适于执行代码的计算机系统,所述计算机系统包括:
存储器,适于存储指令集,所述指令集的指令中的至少一部分适于利用不同的指令长度编码,所述指令集包括多个第一指令、多个第二指令和多个第三指令,所述多个第一指令包括通过第一指令长度编码的并在特许资源上操作的指令,所述多个第二指令通过第二指令长度编码,所述多个第三指令通过第三指令长度编码,并且所述多个第三指令是所述多个第一指令的子集;
处理器,适于通过所述多个第一指令执行计算机程序的第一组代码,通过所述多个第二指令执行所述计算机程序的第二组代码,以及通过所述多个第三指令执行所述计算机程序的第三组代码;
具有第一逻辑状态和第二逻辑状态的第一寄存器位,所述第一寄存器位的第一逻辑状态适于选择所述多个第一指令,所述第一寄存器位的第二逻辑状态适于选择所述多个第二指令;以及
具有第一逻辑状态和第二逻辑状态的第二寄存器位,所述第二寄存器位的第一逻辑状态适于选择所述多个第一指令,所述第二寄存器位的第二逻辑状态适于选择所述多个第二指令,
其中,所述指令集的指令具有6位主操作码字段和至少一个其它字段,
其中,所述主操作码字段的3个相邻位的逻辑组合确定所述指令集中的哪些指令是所述多个第二指令的成员,
其中,所述多个第二指令是所述多个第一指令的子集,并且
其中,所述多个第一指令的指令长度和所述多个第二指令的指令长度分别是32位和16位。
23.如权利要求22所述的计算机系统,其中,所述3个相邻位是所述主操作码字段的3个最低有效位(LSB)。
24.如权利要求23所述的计算机系统,其中,所述逻辑组合是(NOT LSB2)AND(LSB1 OR LSB0)。
25.如权利要求22所述的计算机系统,其中,所述多个第三指令的指令长度是48位。
26.如权利要求25所述的计算机系统,其中,所述多个第二指令包括具有5位寄存器字段的指令,所述5位寄存器字段被解码以选择在所述具有5位寄存器字段的指令执行中操作的GPR。
27.如权利要求25所述的计算机系统,其中,所述多个第二指令包括具有3位寄存器字段的指令,所述3位寄存器字段被解码以选择在所述具有3位寄存器字段的指令执行中操作的GPR。
28.如权利要求26所述的计算机系统,包括具有寄存器列表字段的指令,所述寄存器列表字段被解码以从列举有多组GPR的一组列表中选择在所述具有寄存器列表字段的指令执行中操作的一组GPR。
29.如权利要求28所述的计算机系统,包括具有立即数字段的指令,所述立即数字段被解码以确定在所述具有立即数字段的指令执行中使用的偏移。
30.如权利要求29所述的计算机系统,其中,所述立即数字段是4位。
31.如权利要求29所述的计算机系统,其中,所述立即数字段是7位。
32.如权利要求29所述的计算机系统,其中,所述立即数字是9位。
33.如权利要求28所述的计算机系统,其中,所述多个第一指令和所述多个第二指令包括具有寄存器字段和立即数字段的装载多字指令,所述寄存器字段和所述立即数字段能够结合以确定处理器存储器的地址,能够从所述处理器存储器的所述地址将字装载到所述一组GPR中。
34.如权利要求33所述的计算机系统,其中,所述多个第一指令和所述多个第二指令包括具有寄存器字段和立即数字段的存储多字指令,所述寄存器字段和所述立即数字段能够结合以确定处理器存储器的地址,能够将所述一组GPR的内容置于所述处理器存储器的所述地址中。
35.如权利要求34所述的计算机系统,其中,所述多个第二指令包括具有立即数字段的ANDI16指令,所述立即数字段保存数字,所述数字能够被解码以从一列立即数值中选择立即数值。
36.如权利要求35所述的计算机系统,其中,所述多个第二指令包括具有立即数字段的JRADDIUSP指令,所述立即数字段可确定立即数值并且隐式地使用SP和RA。
37.如权利要求36所述的计算机系统,所述计算机系统的执行能够引起无条件跳转至保存在RA中的地址,还将所述立即数与SP的内容算法地结合以产生用于SP内容的新值。
CN201010178234.7A 2009-05-11 2010-05-11 指令集架构中的变量寄存器和立即数字段编码 Active CN101887357B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/464,027 2009-05-11
US12/464,027 US9274796B2 (en) 2009-05-11 2009-05-11 Variable register and immediate field encoding in an instruction set architecture

Publications (2)

Publication Number Publication Date
CN101887357A CN101887357A (zh) 2010-11-17
CN101887357B true CN101887357B (zh) 2015-09-09

Family

ID=43063057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010178234.7A Active CN101887357B (zh) 2009-05-11 2010-05-11 指令集架构中的变量寄存器和立即数字段编码

Country Status (2)

Country Link
US (3) US9274796B2 (zh)
CN (1) CN101887357B (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274796B2 (en) 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US8966253B1 (en) 2010-06-01 2015-02-24 Xilinx, Inc. Method and apparatus for authenticating a programmable device bitstream
US8799453B2 (en) 2010-10-20 2014-08-05 Microsoft Corporation Managing networks and machines for an online service
US8751656B2 (en) 2010-10-20 2014-06-10 Microsoft Corporation Machine manager for deploying and managing machines
US8296267B2 (en) 2010-10-20 2012-10-23 Microsoft Corporation Upgrade of highly available farm server groups
US8386501B2 (en) * 2010-10-20 2013-02-26 Microsoft Corporation Dynamically splitting multi-tenant databases
US9075661B2 (en) 2010-10-20 2015-07-07 Microsoft Technology Licensing, Llc Placing objects on hosts using hard and soft constraints
US8417737B2 (en) 2010-10-20 2013-04-09 Microsoft Corporation Online database availability during upgrade
US8850550B2 (en) 2010-11-23 2014-09-30 Microsoft Corporation Using cached security tokens in an online service
US9721030B2 (en) 2010-12-09 2017-08-01 Microsoft Technology Licensing, Llc Codeless sharing of spreadsheet objects
US8909941B1 (en) * 2011-03-31 2014-12-09 Xilinx, Inc. Programmable integrated circuit and a method of enabling the detection of tampering with data provided to a programmable integrated circuit
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
CN102231180B (zh) * 2011-07-30 2014-05-28 张鹏 处理器指令编码可重定义的方法
US9436474B2 (en) * 2012-07-27 2016-09-06 Microsoft Technology Licensing, Llc Lock free streaming of executable code data
US9811335B1 (en) * 2013-10-14 2017-11-07 Quicklogic Corporation Assigning operational codes to lists of values of control signals selected from a processor design based on end-user software
US10620957B2 (en) * 2015-10-22 2020-04-14 Texas Instruments Incorporated Method for forming constant extensions in the same execute packet in a VLIW processor
US10346162B2 (en) 2015-11-17 2019-07-09 International Business Machines Corporation Selective instruction replacement for assembly language programs
US10437883B2 (en) * 2015-11-24 2019-10-08 Cisco Technology, Inc. Efficient graph database traversal
CN107463355B (zh) * 2017-07-28 2020-03-31 珠海市杰理科技股份有限公司 立即数压缩编码方法和系统
US10846089B2 (en) * 2017-08-31 2020-11-24 MIPS Tech, LLC Unified logic for aliased processor instructions
CN110045960B (zh) * 2018-01-16 2022-02-18 腾讯科技(深圳)有限公司 基于芯片的指令集处理方法、装置及存储介质
US10970228B2 (en) * 2018-12-14 2021-04-06 Micron Technology, Inc. Mapping table compression using a run length encoding algorithm

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740461A (en) * 1994-05-03 1998-04-14 Advanced Risc Machines Limited Data processing with multiple instruction sets

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5636352A (en) 1994-12-16 1997-06-03 International Business Machines Corporation Method and apparatus for utilizing condensed instructions
US6496920B1 (en) * 1998-03-18 2002-12-17 Qiuzhen Zou Digital signal processor having multiple access registers
US7051189B2 (en) 2000-03-15 2006-05-23 Arc International Method and apparatus for processor code optimization using code compression
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
WO2003065165A2 (en) * 2002-01-31 2003-08-07 Arc International Configurable data processor with multi-length instruction set architecture
US20050091474A1 (en) * 2003-10-24 2005-04-28 Microchip Technology Incorporated Fuse configurable alternate behavior of a central processing unit
JP2008083873A (ja) * 2006-09-26 2008-04-10 Yamaha Corp デジタル信号処理装置
US7836285B2 (en) 2007-08-08 2010-11-16 Analog Devices, Inc. Implementation of variable length instruction encoding using alias addressing
US9274796B2 (en) 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740461A (en) * 1994-05-03 1998-04-14 Advanced Risc Machines Limited Data processing with multiple instruction sets

Also Published As

Publication number Publication date
US20100287359A1 (en) 2010-11-11
US20180173531A1 (en) 2018-06-21
CN101887357A (zh) 2010-11-17
US20160147535A1 (en) 2016-05-26
US9928065B2 (en) 2018-03-27
US9274796B2 (en) 2016-03-01
US10776114B2 (en) 2020-09-15

Similar Documents

Publication Publication Date Title
CN101887357B (zh) 指令集架构中的变量寄存器和立即数字段编码
US5077657A (en) Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
US5781758A (en) Software emulation system with reduced memory requirements
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
US5598546A (en) Dual-architecture super-scalar pipeline
US6408382B1 (en) Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
US20060212863A1 (en) Method and apparatus for processor code optimization using code compression
RU2562430C2 (ru) Увеличение числа доступных для команд регистров общего назначения
US5794010A (en) Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
KR19990064091A (ko) Risc형 명령 세트 및 슈퍼스칼라 마이크로프로세서
US20100011191A1 (en) Data processing device with instruction translator and memory interface device to translate non-native instructions into native instructions for processor
JPH1097421A (ja) 圧縮命令を実行するように構成されたマイクロプロセッサにおけるメモリをアドレスする方法および装置
CN114691211A (zh) 从fp16转换到bf8的指令
CN116860334A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
KR100867564B1 (ko) 프로그램 제어 흐름에서 변경들을 이루기 위한 장치 및 방법
US11080063B2 (en) Processing device and method of controlling processing device
US5761469A (en) Method and apparatus for optimizing signed and unsigned load processing in a pipelined processor
US20030212914A1 (en) Power efficiency in microprocessor systems
US6606703B2 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
CN116917859A (zh) 带有可变长度指令的并行解码指令集合计算机架构
CN114661348A (zh) 用于复数矩阵共轭转置的装置和方法
US20240004659A1 (en) Reducing instrumentation code bloat and performance overheads using a runtime call instruction
US20240095063A1 (en) User-level exception-based invocation of software instrumentation handlers
Garner SPARC: scalable processor architecture
Cooper Porting the Vector Pascal compiler to the Playstation 2

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1150891

Country of ref document: HK

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: BRIDGE DECK LLC

Free format text: FORMER OWNER: MIPS TECHNOLOGIES, INC.

Effective date: 20141211

Owner name: ARM FINANCE OVERSEAS LTD.

Free format text: FORMER OWNER: BRIDGE DECK LLC

Effective date: 20141211

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20141211

Address after: cambridge

Applicant after: ARM Overseas Finance Co.,Ltd.

Address before: American New Jersey

Applicant before: Overpass Bridge Co.,Ltd.

Effective date of registration: 20141211

Address after: American New Jersey

Applicant after: Overpass Bridge Co.,Ltd.

Address before: California, USA

Applicant before: Mips Technologies, Inc.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1150891

Country of ref document: HK