CN104778030A - 具有虚拟化指令集架构的处理器和方法 - Google Patents

具有虚拟化指令集架构的处理器和方法 Download PDF

Info

Publication number
CN104778030A
CN104778030A CN201410805562.3A CN201410805562A CN104778030A CN 104778030 A CN104778030 A CN 104778030A CN 201410805562 A CN201410805562 A CN 201410805562A CN 104778030 A CN104778030 A CN 104778030A
Authority
CN
China
Prior art keywords
instruction
code element
machine code
register
processor
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
CN201410805562.3A
Other languages
English (en)
Other versions
CN104778030B (zh
Inventor
R·萨达卡
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.)
Hai Luo Software Co ltd
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN104778030A publication Critical patent/CN104778030A/zh
Application granted granted Critical
Publication of CN104778030B publication Critical patent/CN104778030B/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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
    • 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/30181Instruction operation extension or modification
    • 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/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing

Abstract

本发明的各实施方式总体上涉及具有虚拟化指令集架构的处理器和方法。具体地,涉及一种处理器包括用于基于外显操作码标识符和指令中编码的元数据两者来解码该指令的解码器。作为一个示例,指令集可以具有指定两个寄存器(r1和r2)的若等于则转移(BEQ),这些寄存器存储进行相等比较的值。指令集可以提供BEQ的单个操作码标识符,并且取决于源寄存器在那个操作码标识符的具体实例中出现的顺序,处理器可以确定是否将那个实例解码成为BEQ或另一指令。除了其他形式的元数据以外,附加形式的元数据可以包括解释指令中所包括的常数、以及确定源寄存器的相等性。

Description

具有虚拟化指令集架构的处理器和方法
技术领域
在一个方面,以下内容涉及微处理器架构,并且在一个更具体方面,涉及对微处理器内有待解码的机器代码中的指令进行编码的方法。
背景技术
微处理器的架构与微处理器可以处理的指令集、和这些指令致使该微处理器做的事情有关。可以根据多种特性对微处理器的架构进行分类。一个主要特性是是否认为指令集是“复杂的”或具有“降低的复杂性”。传统上,术语“复杂指令集计算机(CISC)”和“精简指令集计算机(RISC)”分别用于指这种架构。现在,某些现代处理器架构具有传统上与仅CISC或RISC架构相关联的特性。在实践中,RISC和CISC架构之间的含义的主要区别是算术指令是否执行存储器操作。
RISC指令集可以要求所有指令的位数完全相同(例如,32位)。并且,可以要求这些位相应地被分配到有限的格式集。例如,可以要求每个指令的所有操作码的位数相同(例如,6)。这暗示可以在这种架构中提供多达2^6(64)个唯一指令。在某些情况下,主操作码可以指定一种指令类型,并且某个数量的位可以用作功能标识符,该标识符在这种指令的不同变体之间进行区分(例如,所有加法指令可以具有相同的6位主操作码标识符,但每种不同类型的加法指令,如忽略溢出的加法和俘获溢出的加法)。
可以根据标识源操作数、结果的目的地、或在“操作码”位所标识的操作的执行过程中有待使用的常数来分配剩余的位(除了“操作码”位以外)。例如,算术操作可以将6个位用于操作码,另外6个位用于功能码(单独或当通过上下文相关时共同地,“操作码”位)。即使RISC架构可以要求所有指令长度相同并且使用相同的存储(例如,32位),但不是每个指令都可以要求填充所有位。
发明内容
为了解决上述问题,在本上下文中,本发明的各示例性实施方式的目的之一在于提供一种具有虚拟化指令集架构的处理器和方法。
根据本发明一个方面的某些实施方式,提供了一种用于处理器的解码单元,例如可以包括:针对表示指令的机器代码元素的输入;以及电路,被配置成用于确定所述机器代码元素的操作码标识符部分是否标识虚拟编码指令,响应于所述操作码标识符部分标识虚拟编码指令,使用所述操作码标识符部分和所述机器代码元素的剩余部分中的至少一部分来将所述机器代码解码成对用于在与所述解码单元耦合的执行单元上执行的可执行的操作进行定义的数据,以及否则使用所述机器代码元素的所述操作码标识符部分将所述机器代码元素解码成对可执行的操作进行定义的数据。
根据本发明另一方面的某些实施方式,提供了一种处理器,例如可以包括:执行单元;与所述执行单元耦合的寄存器组,所述执行单元被配置成用于从所述寄存器组内的寄存器接收操作数;以及上文所述的解码单元。
根据本发明另一方面的某些实施方式,提供了一种在处理器中解码机器代码的方法,例如可以包括:在所述处理器的解码单元中接收单个机器代码元素,以及产生指示所述处理器有待执行的操作的数据,其中,所述操作来自虚拟编码操作集合,其中,所产生的数据指示哪项操作取决于所述单个机器代码元素中的操作码标识符部分和关于所述单个机器代码元素的元数据两者。
根据本发明另一方面的某些实施方式,提供了一种从源代码集合产生机器可执行的代码的方法,例如可以包括:响应于指令,标识可以由目标处理器架构执行的操作;以及使用字面操作码标识符对所述指令进行编码以及将元数据编码成所述指令的一个或多个其他部分,根据所述目标处理器架构的实现方式中的指令解码器可解码的预先安排的惯例编码所述元数据。
附图说明
图1A和图1B描绘了与可以实现本公开的各方面的示例处理器有关的框图;
图2描绘了示例指令编码;
图3描绘了可以实现本公开的各方面的指令解码器的示例框图;
图4描绘了可以实现本公开的各方面的指令解码器的示例;
图5描绘了确定要根据字面还是根据虚拟解码过程来解码给定指令的过程;
图6描绘了对示例虚拟编码指令进行解码的过程;
图7描绘了示例指令流;
图8描绘了若等于则转移(BEQ)指令的解释;
图9描绘了指令的字面和虚拟解码所产生的示例指令流;
图10描绘了为了解码和处理虚拟编码BEQ指令而采取的行动;
图11描绘了解码和处理虚拟编码BEQ指令的替代性示例实现方式;
图12和图13描绘了使用虚拟编码指令所包括的常数的虚拟指令解码的各方面;
图14和图15描绘了如何使用虚拟编码指令可以增加指令集架构中的可用操作码标识符空间的图解;
图16描绘了编译实现虚拟化指令解码的处理器架构的源代码的过程;
图17描绘了可以产生汇编代码、目标代码和代码(如可以在VM中解释或编译的字节码)的编译器的框图;
图18描绘了实现虚拟机的机器的面向软件的框图,该虚拟机可以在执行单元上执行字节码、在本地代码中的执行应用、和其他代码;以及
图19描绘了可以实现本公开的各方面的机器的示例面向硬件的框图。
具体实施方式
以下公开使用主要与RISC指令集、并且更具体地与MIPS处理器架构有关的示例。使用这种示例没有将本公开的适用性局限于其他处理器架构及其实现方式。
如以上介绍的,处理器架构所支持的每个指令具有可供用于标识有待针对给定指令而执行的准确操作的一部分位。此位数受到多种实际考虑的限制。一种考虑是指令长度;32位指令需要比64位指令更小的存储。标识源和目的寄存器所需的位数取决于有待支持的架构寄存器的数量,这会影响为其他目的而留下的位的数量。对指令进行解码所需的逻辑的复杂性也可能是一个因素;例如,对哪些操作码的选择标识哪些可以影响解码逻辑的复杂性和总体效率的指令。
除了技术问题以外,处理器架构设计也受其他考虑的影响。一种主要考虑是对给定处理器架构的前几代的支持。针对现有处理器架构的新一代需要重新编译代码会阻碍顾客采用并且比保持后向兼容性的处理器架构需要更有支持性的基础设施。为了保持后向兼容性,新的处理器架构应执行给定目标代码的与上一代相同的操作。这暗示现有操作码(即,操作码和其他功能开关或修饰符)不应在新的处理器架构中改变。本公开没有解决模仿某些指令的可能,因为同时模仿是可能的,其没能提供与本地执行相媲美的执行速度。由于计算需要随时间变化,可能令人希望的是添加指令来支持某些能力;例如,整数和浮点单指令多数据(SIMD)指令。一种可以允许在现有指令集架构内表达更多指令同时保持后向兼容性的技术是有用的。新的处理器架构还可以实现本公开的各方面。
申请人已经认识到,某些指令定义了可以用于创建元数据的操作,处理器中的解码器单元可以使用这些元数据将单个操作码解码成多项不同操作。某些操作的一个特性在于源操作数是交换性的,意味着无论以哪种顺序呈现两个或更多个源操作数,操作的结果都是相同的。例如,若等于则转移(BEQ)指令可以阅读第一源寄存器和第二源寄存器,并且如果这些寄存器中的值相等,则采取转移;否则,不采取转移。典型的汇编器或编译器可以基于多种考虑选择两个寄存器来存储有待比较的值。本公开介绍了被用作源操作数的寄存器的相对排序受到限制以便用同一操作码标识符展现多个不同指令、和某些可能的限制的示例。例如,为了展现一个指令,可以要求第一出现的源寄存器是比第二出现的源寄存器更高的编号;例如,第一源寄存器可以是寄存器3,并且第二源寄存器可以是寄存器5(即,这些是这些寄存器的编号或参考,而不是这些寄存器中的值)。为了用同一操作码标识符展现另一指令,可以要求使该第一出现的寄存器为更高的寄存器(以上示例中的寄存器5)。以这种方式,可以在已经能够仅展现单个指令的操作码空间内展现第二指令。因此,在一个示例中,将用与该第二指令的二进制数据相同的二进制数据表达该第一指令,除了该第一指令和第二指令之间这些二进制数据中的某些数据在不同的相对顺序或位置以外。在本示例中,将从以与操作数或用于对它们进行定义的其他数据的出现顺序不变的方式执行的指令之间选择该第一指令和该第二指令两者。某些实现方式还可以能够解决编译器的操作数顺序的这种问题,该编译器处理基于不同的相对操作数顺序而将发生的结果变化。
图1A描绘了可以实现本公开的各方面的处理器50的功能元件的示例图。将根据情况首先介绍处理器50的示例元件,并且然后更详细地解决。本示例具有能够无序执行的处理器;然而,所公开的方面可以用于按顺序的处理器实现方式。如此,图1A描绘了本公开的微架构实现方式的功能元件,但其他实现方式是可能的。并且,不同处理器架构可以实现本公开的各方面。给予图1A中所描绘的功能元件中的某些元件的名称可以在现有处理器架构之间不同,但普通技术人员将从本公开中理解到如何在不同处理器架构(包括基于预先存在的架构的那些架构)上和甚至在完全新的架构上实现本公开。
处理器50包括与指令高速缓存54耦合的提取单元52。指令高速缓存54与解码和重命名单元56耦合。解码和重命名单元56与指令队列58耦合并且还与包括指令转换后备缓冲器(iTLB)60的转移预测器耦合。指令队列58与和提交单元64耦合的重排序缓冲器(ROB)62耦合。ROB 62与保留站68和加载/存储缓冲器(LSB)66耦合。保留站68与无序(OO)执行管线70耦合。执行管线70和LSB 66各自与寄存器组72耦合。寄存器组72与L1数据高速缓存74耦合。L1高速缓存74与L2高速缓存76耦合。处理器50还可以访问进一步的存储器层次元件78。提取单元52从存储器获得指令(例如,可以是数据和指令的统一高速缓存的L2高速缓存76)。提取单元52可以从转移预测器60接收关于应提取哪些指令的指示。
可以在不同实现方式中有区别地确定图1A中所描绘的处理器50的功能元件的大小和对其进行安排。例如,指令提取52可以一次提取1个、2个、4个、8个或更多个指令。解码和重命名56可以支持不同数量的重命名寄存器,并且队列58在实现方式之间可以支持不同的最大条目数量。ROB 62可以支持不同大小的指令窗口,同时保留站68可以能够保持等待操作数的不同数量的指令,并且类似地,LSB 66可以能够支持不同数量的未完成的读和写。指令高速缓存54可以使用不同的高速缓存替换算法并且可以针对高速缓存54的不同部分同时使用多个算法。定义不同微架构元件的能力涉及到本公开的范围以外的多种权衡。
处理器50的实现方式可以是单线程的或支持多个线程。实现方式还可以具有单指令多数据(SIMD)执行单元。执行单元可以支持整数操作、浮点操作或两者。出于不同目的,可以提供附加功能单元。例如,可以提供加密卸载引擎。提供图1A用于为本公开的以下方面给予上下文并且没有排除任何这种附加功能元件。
处理器50的某一部分或全部元件可以位于单个半导体裸片上。在某些情况下,存储器层次元件78可以位于另一裸片上,使用为正在使用的存储器技术(例如,DRAM)更特定设计的半导体工艺制造该裸片。在某些情况下,DRAM的某一部分可以位于和另一裸片上的其他元件和其他部分相同的裸片上。这是可以为处理器50的具体实现方式进行的设计选择的示例的非详尽枚举。
图1B描绘了可以包括32个寄存器的处理器50的寄存器组72。每个寄存器可以通过与那个寄存器相关联的二进制代码来标识。在一个简单示例中,00000b标识寄存器0,11111b标识寄存器31,并且相应地对在中间的寄存器进行编号。处理器50根据指令流所提供的特定配置信息执行计算。这些指令的格式由处理器的架构指定。指令可以指定一个或多个源寄存器、以及一个或多个用于给定操作的目的寄存器。寄存器的二进制代码在指令内用于标识不同的寄存器。可以由指令标识的寄存器可以被称为“架构寄存器”,架构寄存器呈现可供用于执行代码的机器的状态的一大部分但不一定全部。具体处理器架构的实现方式可以支持更大量物理寄存器。具有更大量物理寄存器允许预测执行指代相同架构寄存器的指令。使用指令中的元数据(如源寄存器的相对顺序)来编码指令提出另一标准:编译器将需要在有待执行的代码的生成过程中进行观察(即,这种指令编码方法是对给定指令中可能命名什么架构寄存器进行限制)。这种限制可能产生更多对给定代码部分内的相同架构寄存器进行标识的指令。然而,此标准不是特别麻烦,因为在执行过程中寄存器重命名可以处理错误依赖。
图2描绘了可以用于对处理器50进行配置的指令的示例。该指令是若等于则转移(BEQ)。该示例使用总计32位来定义指令。6位标识符部分指示主操作码。BEQ指令需要两个源寄存器(Ra和Rb)。5位代码标识Ra和Rb中的每一个。32位中的剩余16位被分配给常数(C),该常数用于产生转移目标,如果Ra和Rb中的值相等,则处理器50应从该转移目标开始执行。为了方便,用在前的$表示具体寄存器(例如,Ra)中的值(例如,$Ra标识寄存器Ra中的值,并且这具体地将寄存器Ra中的值与寄存器Ra的编号或标识符区分开)。例如,寄存器5可以包含值100。寄存器5可以被标识为指令中的操作数源(例如,Ra=5),并且如果那样,则$Ra=100)。其他指令可以具有不同的格式。在某些情况下,指令可以使用6位主操作码标识符指定一类操作,并且然后包括指定有待执行的特定操作的功能码字段。例如,同一6位主操作码标识符可以标识所有加法操作,但功能码将变化。例如,一项加法操作可以俘获溢出,而另一项加法不可以。可以使用不同的功能码标识这些。在本公开中,这些不同字段单独并且集体地被称为“操作码标识符”(操作码标识符),并且因此,此术语仅指主操作码标识符,或当将在具体上下文中合适时,具有相应的功能码。
图8描绘了处理器50执行BEQ时的规范行为。在240,如果Ra($Ra)中所存储的值不等于Rb($Rb)中所存储的值,则不采取转移,并且程序计数器(PC)增量到下一个指令(例如,通过使PC增量4)。以其他方式,基于常数C设置PC,如设置成PC+(4*(C+1))。普通技术人员将认识到,特定处理器可以有区别地设置PC,但重点是采取或不采取转移仅取决于是否$Ra=$Rb。如此,BEQ指令是与在指令中呈现操作数的顺序无关的指令。例如,如果寄存器5保持一个源操作数的值并且寄存器10保持另一源操作数的值,则BEQ指令的行为将相同,而不管Ra被设置成5还是10,并且关于Rb,反之亦然。BEQ指令的示例是具有交换性源操作数的指令的示例。其他示例是加法和乘法指令(例如,A+B=B+A)。两个或更多个指令的通过操作数交换性的特性的逻辑等效的示例被用作本公开中的激励示例。然而,其他特性允许得出两个或更多个指令在逻辑上等效的结论。或者在一般意义上或者在指定条件下,以下公开可以应用于两个或更多个已经被确定逻辑上等效的指令。
申请人已经认识到,存在处理器所执行的、逻辑等效的操作子集,但用不同的指令编码这些操作。因此,申请人已经认识到,存在完全展现具体指令集所支持的全范围的操作所需的信息冗余度。为了在典型的处理器ISA中指令可相互区分,需要可以分配给该或这些指令的操作码标识符(或更普遍地,操作码空间的某一部分)。如果处理器ISA是新的,则希望支持的所有指令可以简单地是所分配的操作码标识符。然而,某些处理器架构族已经存在比较长的时间。例如,1981年引进处理器指令集架构(ISA),并且在接下来几年中MIPS ISA发生多种变化和添加。一种将指令添加到现有处理器ISA的方式将是将现有指令的操作码标识符重新分配给新的指令。然而,这种方法将引起为之前的ISA版本编译的二进位与新版本不兼容,因为处理器将试图执行与二进位预期的指令不相同的指令。申请人希望减少或避免这些类型的不兼容性,而还希望能够将新的指令添加至现有ISA。申请人还希望能够具有相同数量的位所表示的更大的总操作码空间,并且能够减少分配给操作码标识的位数,以便唯一地标识给定数量的操作。以下公开的实现方式可以实现这些能力中的一项或多项;然而,没有本公开的实现方式实现这些目标、或这种目标激励其创建的特定要求。这些能力是示例性的,但没有排除通过实现本公开而可以实现的优势,并且没有暗示要求任何权利要求的范围内的主题具有这些优势中的任何一项或多项优势的要求。
图3描绘了解码和重命名单元56的示例实现方式的功能元件。指令源103的向操作码标识符107呈现一系列指令(具体地标识了指令105)。操作码标识符107与操作码范围映射器111并且与虚拟指令解码逻辑109耦合。操作码标识符107使用来自操作码范围映射器111来执行指令105的初始解码。在一个实现方式中,操作码范围映射器111包含映射数据,这些映射数据对有待向虚拟指令解码逻辑109提供的指令子集和不需要由虚拟指令解码逻辑109处理的其他指令子集进行标识以便用于处理器50。操作码标识符107和操作码范围映射器111可以被实现为例如内容相联存储器(CAM)查找。操作码标识符107的另一实现方式可以是实现解码指令集的操作码标识符所需的或在虚拟编码指令和字面指令之间进行区分(如果这些有待由单独的电路进行解码)所需的逻辑的组合电路。
复用器113可以由操作码标识符107的输出控制,以便从虚拟指令解码逻辑109或指令105所产生的输出中进行选择。指令队列58的输入耦合成用于接收复用器113的输出。指令队列58还从寄存器重命名器115接收输入。寄存器重命名器115产生架构寄存器和物理寄存器之间的映射。将用于具体指令的物理寄存器与那个指令中所标识的架构寄存器相关;保持这种相关性的准确方法是实现方式特定的。因此,指令队列58的输出可以被视为包含将用于对处理器50的执行元件进行配置的信息以便执行指令(例如,指令105)。在图1A的示例中,指令队列58与ROB 62耦合。使用ROB 62监控无序执行管线70的预测执行结果。即使可以在ROB 62所支持的预测窗口内预测地执行指令,但ROB 62可以执行结果的按顺序引退或提交。
图4描绘了虚拟指令解码逻辑109的示例。在图4的示例中,解码逻辑109包括比较器119,该比较器输入源操作数Ra 121和源操作数Rb 123。图4的示例特定于图2介绍的BEQ指令,并且到比较器119的特定输入可以取决于正在被解码的具体指令而不同。向操作码标识符电路129提供比较器119的输出。操作码标识符电路129还具有针对来自正在被解码的指令(例如,指令105)的操作码的输入125。在图4中,输入125可以被实现为包括来自正被解码的指令的足够的位,从而唯一地将该指令映射到将由处理器执行的操作。具体地,某些虚拟编码指令可以具有功能码。此功能码可以是针对操作码标识符电路的“随意(don’t care)”,并且这种功能码可以或可以不被输入到该操作码标识符电路。取决于是否要求常数C完全确定有待针对给定指令执行的操作(当然,即使常数C是“随意”输入,仍然会提供常数C,但这将是实现方式选择),操作码标识符电路129还可以具有常数C的输入127(见图2)。操作码标识符电路129输出然后可以用于对逻辑的一部分进行配置来执行操作的操作码数据131。该逻辑部分可以是例如功能单元。虽然可能的是操作码数据131可以用于微码查找或某项其他更复杂的操作,这种微码查找会增加执行时间或指令所需要的管线阶段的数量,或引起执行不同指令所需的管线阶段的数量变化。
以下提供了用于解码虚拟编码指令而执行的示例过程。图5描绘了操作码标识符107实现的示例过程。在152,接收有待解码的指令。在154,决定该指令是否能够进行虚拟指令编码。如果该指令能够进行虚拟指令编码,则调用虚拟指令解码过程156,并且否则的话调用正常指令解码158。正常指令解码158可以引起仅使用指令中所供应的二进制元素而不使用关于那些元素的元数据。如此处所使用的,元数据指关于指令的元素的数据,如标识什么寄存器、以什么相对顺序呈现寄存器编号,或指令中的符合预先确定的解释惯例的元素之间的某种其他组合或相互关系。在某些实现方式中,处理器可以被视为对机器代码元素进行解码,该元素可以是例如从与32位边界对齐的存储器地址提取的并且将根据预定义规范被编码以呈现处理器有待执行的指令元素的32位数据。
在此考虑了实现方式可以仅具有将被虚拟编码的指令子集。可以提供虚拟解码逻辑,该虚拟解码逻辑接收所有指令数据并且被配置成用于通过字面编码指令。因此,154处的决定没有暗示解码器56需要具有用于字面和虚拟编码指令的单独解码逻辑。例如,虚拟解码逻辑和用于解码常规指令的逻辑可以一起实现,并且可以进而用用于其他功能的逻辑实现这种逻辑。
图6中呈现了虚拟指令解码过程的示例;本示例特定于使用两个源寄存器的指令,如图2中所描绘的BEQ指令。然而,这些公开可以被适配或延伸用于其他指令。在174,解码逻辑接收用于有待虚拟解码的指令的数据。在178,关于Rb是否大于Ra进行确定;此确定不是涉及到这些寄存器中的值而是寄存器本身的编号的确定。如果Rb大于Ra,则在184,指令被解码成第一虚拟操作码。如果Rb不大于Ra,则180,可以做出Rb是否小于Ra的决定。如果是这样,则可以将指令解码成第二虚拟操作码。如果此条件失败,则在182,如以下进一步解释的,可以使用常数C解码该指令。在任何情况下,这些条件其中之一将是真的,并且指令的结果解码将在188应用于输出。将认识到,可以重构图6的示例过程,同时保持逻辑等效,并且所有这些重构项在本公开的范围内。举例来讲,可以颠倒决定178和180,可以确定源寄存器之间相等,针对所有可能性,指令的解码可以并行进行,并且确定178和180可以用于选择结果解码。某些实现方式可以不使用常数C来解码,并且在这种实现方式中,或者决定178或者180是没有必要的,并且可以基于源Ra是大于还是小于源Rb的比较来进行解码成或者该第一虚拟操作码或该第二虚拟操作码。实现方式可以选择惯例来使用(例如,Ra是否大于Rb或者Ra是否小于Rb;这些与Rb是否小于Ra或者Rb是否大于Ra等效)。
这些特定示例可以被理解成公开了标识两个源寄存器的给定单个指令可以基于源寄存器的相对值被解码成两个不同的指令,并且可选地如果这些寄存器相等,则可以使用常数C执行解码。图7和图9至图12呈现了本公开的范围内的虚拟指令解码的更特定的示例。在解码逻辑的这些各个示例中,将理解到,这些示例被呈现成容易被人理解,但表示或包含根据本公开的解码过程的实际机器结构(例如,所实现的合成逻辑)与文本解释显著不同。本公开呈现了将源寄存器的标识符用作供在指令解码中使用的元数据的示例。某些实现方式中的标识符可以是长度适合将寄存器相互区分开的二进制数字序列。在一个实现方式中,指令标识架构寄存器,架构寄存器可以在数量上比物理寄存器的数量更少。实现方式可以提供解码时所使用的可以是架构寄存器标识符、或可以是物理寄存器标识符(架构到物理寄存器的映射之后)的元数据。这些示例可以被推广到其他类型的元数据,如标识有序集合中的元素的元数据。当标识3个或更多个寄存器时,进一步的指令编码是可能的,如通过使用例如这三个或更多个标识符的预定义排序序列。
图7描绘了指令流,其中PC 225标引BEQ指令233,该指令标识寄存器5和寄存器8作为源操作数(按那个顺序)、和常数A。该指令流还包括第二BEQ指令235,该指令标识寄存器8和寄存器5作为源操作数、和常数B。指令233和235的常规解码将会将这两个指令解码成同一个指令(将保存常数值的可能差,这控制着转移目标)。换言之,针对常规解码,相同源操作数的呈现顺序不相关。图8中示出了上述这种行为的示例。
图9描绘了由指令233和指令235的虚拟化解码所产生的指令流255。指令流255示出了该第二指令已经被解释为不等于则转移(BNE)指令260,即使指令的数据“以字面方式”调用BEQ。以上解释了以下向处理器50提供的指令与具体ISA一致。然而,处理器将实际执行的操作的内部表示不必符合该ISA所指定的按位格式。例如,不一定要求指令的内部表示位数与外部表示相同。
此处,当给定“字面”指令可以虚拟地编码多个不同指令时,虚拟编码指令的内部表示可以具有多个附加位。允许BEQ编码BEQ和BNE指令的示例是为了解释简单的目的。这种编码可以主要用于没有按照字面编码指令提供BNE的ISA。然而,根据允许字面编码的遗留代码和所生成的包括虚拟编码的新代码的迁移策略,某些实现方式可以支持同一指令,两者作为字面编码和作为虚拟编码。随着时间推移,新的代码将变成遗留代码并且会弃用带有字面编码指令的旧ISA。在其他实现方式中,可以用多个格式选项支持同一主指令。例如,字面编码BNE可以关于基于关于正在被执行的代码段的基地址的指定常数确定的位置引起采取转移,并且虚拟编码指令可以引起转移到关于当前程序计数器的常数所指定的位置。这些示例的变化是可能的(例如,在计算目标地址前,某一位数使程序计数器移位)。可以提供的另一示例指令类别是紧凑型转移指令。紧凑型转移指令没有延迟槽。另一类别包括可以具有关于某些条件的检测的不同行为,如溢出、下溢或异常情况。以下描述了其他可能指令编码。例如,功能码可以指定不同的选项,如关于程序计数器或关于偏移的转移、关于溢出时转移、异常情况时转移等。
图10和图11描绘了可以如何处理同一字面编码指令来编码两个不同执行选项;这些示例示出了处理器作为整体将如何处理向其提供的字面编码指令。图10描绘了Rb大于Ra的确定304引起在306相互比较Rb和Ra中的值。如果这些值不相等,则不采取转移,并且在308,仅使PC增量。如果这些值相等,则在312,基于指定常数设置PC(正常BEQ行为)。图10还描绘了可选地在320可以确定Rb是否小于Ra,并且如果小于,则在322确定Rb和Ra中的每一个中的值是否不相等(或确定304可以直接进行到确定322而不是320)。确定322的结果控制是否采取转移。如果Rb和Ra中的值不相等则采取转移(进行到行动328),并且否则不采取转移(行动325)。
等效实现方式将是执行行动304,并且将此行动的结果编码作为遵循指令的额外状态位。然后,鉴于在304的编码确定结果解释行动306的结果(源寄存器中的值的比较)。在这种方法中,确定322是没有必要的,因为其是行动306的反演。
图11描绘了根据这种方法实现以上虚拟编码BEQ/BNE示例的方法的实现方式。在图11中,在330,比较Ra和Rb。可以在指令解码过程中进行这种比较。在331,位根据Ra和Rb的比较结果(基于Ra是否等于Rb将位设置成某个值)。在332,如果Ra和Rb的架构可见值不可用,则可以保留指令不执行(在本示例中)。在333,如果Ra和Rb的值变得可用,则在334比较那些值;否则在332继续保留该指令。在335,如果将位设置成可以被解释为指示BNE的值(这可以是惯例的问题)并且如果Ra和Rb的值不相等,则在337,转移根据BNE指令定义。在336,如果将位设置成可以被解释为指示BEQ的值并且如果Ra和Rb的值相等,则在338,转移根据BEQ指令定义。否则,在339,使PC增量。
图11的示例示出了解码单元可使用用于完全解码指令的信息,即使可能还没有提交Ra和Rb的最终值,并且可以创建对有待在处理器的管线中的稍后点有待采取什么行动进行定义的数据。可以重构335和336中描绘的决定。例如,可以比较寄存器的内容,并且然后可以做出是否指示BNE或BEQ行为的确定,并且相应地设置程序计数器。这些是普通技术人员可以在具体设计情况下进行的示例微架构实现方式选择。
图12和图13描绘了虚拟指令集架构的示例,这些指令集架构再次使用一种适用于BNE或BEQ指令的方法还编码给定指令的字面数据的常数值内的指令集信息。在图12中,在347,决定两个源寄存器是否相同。针对普通BNE或BEQ指令,如果两个源寄存器相同,则将从不采取或始终采取转移。因此,在合适的情况下,可以生成包括两个源操作数中的同一源寄存器的BNE或BEQ指令。指令解码可以将这种情况解释成指示常数在349用于确定有待执行什么操作。在本示例中,常数为16位,并且因此可以编码大量信息。图13示出了使用源寄存器的内容计算转移目标和使用常数计算下一个PC的另一示例,其中,这种确定340指示始终采取转移。具有额外32位(在32位寄存器的示例中)允许进行比如果仅可以使用16位偏移更宽范围的跳转。
图14描绘了虚拟操作数可以如何定位在字面操作码标识符空间350内的概念图。根据图14,110011和110001二进位之间存在未用过的操作码空间(因为本示例假设本空间中没有主操作码,不需要考虑功能码)。在本空间内,可以提供虚拟操作码352集合。图14的示例示出了一对355虚拟操作码可供用于每个唯一操作码标识符。在考虑两个源寄存器编号的相对顺序而不考虑例如常数的值的示例中,是这种情况。图15描绘了当还使用如图12中用指令供应的常数值时,更大数量的虚拟操作码360可供用于单个字面操作码标识符内。更确切地,可以考虑到,指令可以从具有固有排序的预先确定的元素集合中引用元素。通过应用限制一般情况的惯例,实现附加操作码标识符空间。
处理器可以设计有实现这些公开的解码单元。然而,处理器仍将在从外部源(例如,编译器、汇编器、或解释器)生成的代码的配置下操作。这种代码生成可以包括将高级编程语言的源代码转换成目标代码(例如,可执行的二进位或可动态链接的库),或产生可以编辑并且最终转换成目标代码的汇编语言输出。其他情况可能涉及到将源代码转换成可以被如准时制(JIT)过程(如在虚拟机的环境下)翻译或解释的中间代码格式(例如,“字节码”格式。任何这种示例代码生成方面可以用于本公开的实现方式。此外,本领域的普通技术人员可以使用这些示例来理解如何将这些示例应用于不同情况。
图16描绘了一个过程的示例,通过该过程,编译器可以产生具有根据本公开的特性的机器可执行的代码。在402,确定当前代码生成模式是否要产生虚拟化指令。如果不,则在418,可以针对给定输入产生典型的非虚拟化机器代码(例如,高级源代码模块或汇编语言代码的一部分)。如果要产生虚拟化指令,则在406,将来自输入的源代码元素标识为用于虚拟编码的候选项。在408,选择指示具体虚拟化操作码集合的操作码。这种选择可以基于源代码元素正在执行什么操作。如果源代码元素是高级语言,则可以将那个元素分解成若干机器语言元素,其中每个机器语言元素可以是用于虚拟化指令编码的候选项。编译器具有多种关于如何从源代码输入产生目标代码的选项,并且通过使用虚拟化操作码的可能性提供更可靠的指令将增加这些选项。编译器可以依赖于多种确定代码序列的启发法和其他分析方法。编译器必须观察架构所强加的限制,针对这些限制,编译器正生成输出。
在410,为了完全指定给定的虚拟化操作码,需要合适的源寄存器相对排序(在一个示例中)。因此,在410,确定这些源寄存器值。在执行过程中,可以将这些源寄存器重命名成合适的物理寄存器,但编译器仍然应试图避免错误依赖性。在412,如果常数还正在用于编码虚拟化操作码,则确定那个常数。以其他方式,可以基于其他考虑确定该常数,如转移目标相对于例如或者基地址或者相对于PC的位置。在414,可以输出最终的汇编语言指令;在其他示例中,可以输出字节码或二进制代码。
图17描绘了其中编译器430包括汇编器434的图解。作为一个选项,编译器430可以根据本公开生成汇编码432。可以输出此汇编码。这种汇编码可以用文本表示,该文本表示包括用于各指令以及用于操作数的气动项(pneumonics)和用于指令的其他信息。可以选择这些气动项,从而使得将针对气动项所表示的每个汇编代码元素执行实际操作。换言之,即使二进制代码内的基础二进制操作码标识符可以相同,当用文本汇编语言表示那个二进制代码时,还将基于每个汇编语言元素的影响处理器将执行什么操作而不单影响二进制操作码标识符的直译的其他元素(如相对寄存器排序)选择所选择的气动项。图17还描绘了编译器可以输出目标代码、和字节码,这些代码在具体架构上可以是可解释的、可编译的或可执行的。此处“字节码”用于标识任何形式的中间机器可读格式,在许多情况下,该格式没有直接将目标对准物理处理器架构,而是目标对准最终执行这种执行的虚拟机架构。物理处理器架构可以被设计成用于执行任何这种中间机器可读格式,并且为了其简明性而不是以限制方式使用术语“字节码”。
图18描绘了示例机器439的框图,其中,可以使用本公开的各方面。一组应用可以可供用于在机器439上执行。用字节码440编码这些应用。还可以用本地机器代码表示应用;用应用441表示这些应用。在虚拟机450内执行用字节码编码的应用。虚拟机450可以包括解释器和/或准时制(JIT)编译器452。虚拟机450可以保持所编译的字节码的存储454,该存储可以重复用于应用执行。虚拟机450可以使用来自本地代码库442的库。这些库是针对物理执行单元462编译的目标代码库。硬件抽像层455向集体被标识为装置464的各不同硬件元件提供抽象接口。可以在用户模式下执行HAL 455。机器439还执行操作系统内核455。
装置464可以包括有待使得可供用于由应用使用的IO装置和传感器。例如,HAL 455可以为全球定位系统提供接口、罗盘、陀螺仪、加速计、温度传感器、网络、短途通信资源(如蓝牙或近场通信)、RFID子系统、照相机等。
机器439具有一组消耗机器代码的执行单元462,该机器代码将执行单元462配置成用于执行计算。因此,为了执行起源于字节码、本地代码库、来自用户的目标代码和用于内核455的代码的应用,执行这种机器代码。可以使用在此公开的虚拟化编码实现机器439的这些不同组件中的任何组件。
图19描绘了实现在此公开的执行元件和其他方面的机器505的示例。图19描绘了机器505的不同实现方式可以具有不同的集成水平。在一个示例中,单个半导体元件可以实现包括核心515-517的处理器模块558、将核心515-517与L2高速缓存525接口连接的一致性管理器520、I/O控制单元530和中断控制器510。系统存储器564与L2高速缓存525接口连接。一致性管理器520可以包括存储器管理单元并操作用于管理核心515-517正在操作的数据之间的数据一致性。核心还可以访问没有单独描绘的L1高速缓存。在另一实现方式中,提供了IO存储器管理单元(IOMMU)532。IOMMU 532可以设置在与模块559所表示的处理器模块558相同的半导体元件上。模块559也可以通过互连580与IO装置575-577接口连接。处理器模块558(其包括在模块559内)、互连580、和IO装置575-577的集合可以形成在一个或多个半导体元件上。在图19的示例机器505中,核心515-517各自可以支持一个或多个计算线程,并且可以根据此处的公开来组织架构。
尽管可能已经用结构特征和/或方法步骤的示例专用的语言描述了某一主题,但应理解到,所附权利要求书中限定的主题不一定局限于这些描述的特征或动作。例如,可以将给定结构特征归入另一结构元素内,或这种特征可以分开在不同组件之间或被分配给不同组件。类似地,过程的示例部分可以被实现为副的产品或与另一动作或过程的执行并发实现,在某些实现方式中或者可以按照多个单独动作来执行。假设观察到合适的依赖性,按一个顺序呈现的动作可以被重新安排成一个不同顺序。实现方式可以相对于其他动作来延迟某些动作。实现方式可以并行化同一硬件上的同一动作的不同实例。如此,根据本公开的实现方式不局限于那些与所描绘和/或描述的示例具有1:1对应关系的实现方式。
可以在专用或通用计算机中实现功能的各方面、和所描述和/或要求的方法,包括如以下更详细讨论的计算机硬件。此类硬件、固件或软件还可以体现在显卡或其他外部或内部计算机系统外围设备上。可以在定制的FPGA或ASIC或其他可配置处理器中提供各功能性,通过可以在管理或主处理器中提供某种功能性。此类处理功能性可以用于个人计算机、台式计算机、膝上型计算机、消息处理器、手持式装置、多处理器系统、基于微处理器的或可编程消费电子产品、游戏控制台、网络PC、微型计算机、大型计算机、移动电话、PDA、平板计算机等。
除了硬件实施例(例如,在中央处理单元(“CPU”)内或耦合到其上的微处理器、微控制器、数字信号处理器、处理器核心、片上系统(“SOC”),或任何其他可编程或电子器件),实现方式还可以体现在例如被配置用于存储软件的计算机可用(例如,可读)介质内所存放的软件(例如,计算机可读代码、程序代码、以任何形式存放的指令和/或数据,如源、对象或机器语言)内。这种软件可以例如能够实现在此描述的装置和方法的功能、制造、建模、模拟、描述和/或测试。例如,可以通过使用通用编程语言(例如,C语言、C++语言)、GDSII数据库、包括Verilog HDL、VHDL、系统C寄存器传输级(RTL)等的硬件描述语言(HDL)、或其他可用程序、数据库、和/或电路(即,示意图)捕捉工具来完成以上内容。实施例可以布置在计算机可用介质内,包括非瞬态存储器,如使用半导体的存储器、磁盘、光盘、二价铁、电阻存储器等。
以特定示例来讲,应理解到,可以在硬件描述语言(HDL)中所体现的、可以用来产生特定集成电路实现方式的半导体知识产权核心或其中一部分(如微处理器核心)内实现所公开的装置和方法的实现方式。计算机可读介质可以体现或存储这种描述语言数据,并因此组成制造品。非瞬态机器可读介质是计算机可读介质的一个示例。其他实施例的示例包括存储可以被适配成用于在特定架构或微架构实现方式中使用的寄存器传输语言(RTL)描述的计算机可读介质。此外,在此公开的装置和方法可以体现为硬件与对硬件进行配置或编程的软件的组合。
并且,在某些情况下,已经在此使用了术语,因为认为其更合理地向普通技术人员传达了突出点,但不应认为此类术语隐含地限制所公开的示例和其他方面所包括的实现方式的范围。
并且,前述公开中已经展示了描述了多个示例。必然地,不是每个示例可以展示每个方面,并且这些示例没有展示此类方面的排他组成部分。反而,关于一个图或示例展示和描述的方面可以与关于其他图所展示和描述的方面一起使用或与其组合。如此,普通技术人员将从这些公开中理解到,关于根据权利要求书的实施例的组成,以上公开不是限制性的,并且而是权利要求书的范围限定此处发明实施例的宽度和范围。概述和摘要章节可以阐述权利要求书的范围内的本发明的一个或多个但不是所有示例性实施例和方面。

Claims (21)

1.一种用于处理器的解码单元,包括:
针对表示指令的机器代码元素的输入;以及
电路,被配置成用于
确定所述机器代码元素的操作码标识符部分是否标识虚拟编码指令,
响应于所述操作码标识符部分标识虚拟编码指令,使用所述操作码标识符部分和所述机器代码元素的剩余部分中的至少一部分来将所述机器代码解码成对用于在与所述解码单元耦合的执行单元上执行的可执行的操作进行定义的数据,以及
否则使用所述机器代码元素的所述操作码标识符部分将所述机器代码元素解码成对可执行的操作进行定义的数据。
2.如权利要求1所述的用于处理器的解码单元,其中,所述机器代码元素的所述操作码标识符部分包括对操作类型进行标识的部分和对针对所述操作类型相关的功能参数进行定义的部分。
3.如权利要求1所述的用于处理器的解码单元,其中,通过对表示所述机器代码元素的所述操作码标识符部分数据进行解码来执行确定所述操作码标识符是否标识虚拟编码指令。
4.如权利要求1所述的用于处理器的解码单元,其中,所述机器代码元素包括两个或更多个元素的从有序集合选择的标识数据,并且所述电路被进一步配置成用于使用所述两个或更多个元素的所述标识数据在所述机器代码元素中出现的相对顺序来确定响应于所述机器代码元素而有待执行的操作。
5.如权利要求1所述的用于处理器的解码单元,其中,所述机器代码元素包括专用于所述操作码标识符部分中的至少一部分、两个或更多个寄存器以及常数的预定义相对顺序的字段,并且所述电路被配置成用于取决于和第一出现的寄存器相关联的编号比和第二出现的寄存器相关联的编号更大还是更小来将所述机器代码元素解码成两项不同可执行的操作。
6.如权利要求1所述的用于处理器的解码单元,其中,所述机器代码元素包括专用于所述操作码标识符部分中的至少一部分、两个或更多个寄存器以及常数的预定义相对顺序的字段,并且所述电路被配置成用于取决于所述两个或更多个寄存器之一的标识符的相对位置在所述两个或更多个寄存器中的另一寄存器的标识符的相对位置之前还是之后来将所述机器代码元素解码成两项不同可执行的操作。
7.如权利要求1所述的用于处理器的解码单元,其中,所述机器代码元素包括专用于所述操作码标识符部分、两个寄存器以及常数的字段,并且所述电路被配置成用于响应于与所述两个寄存器之一相关联的标识符与所述两个寄存器中的另一寄存器相关联的标识符编号相同而使用所述常数的值对所述机器代码元素进行解码。
8.一种处理器,包括:
执行单元;
与所述执行单元耦合的寄存器组,所述执行单元被配置成用于从所述寄存器组内的寄存器接收操作数;以及
根据权利要求1至7中任一项所述的解码单元。
9.如权利要求8所述的处理器,其中,所述表示指令的机器代码元素从一组架构寄存器中指定第一寄存器和第二寄存器两者。
10.如权利要求8至9中任一项所述的处理器,其中,所述解码单元被配置成用于取决于所述机器代码元素的指定第一寄存器和第二寄存器中的每个寄存器的各部分,将所述机器代码元素解码成有条件或者无条件的转移指令。
11.如权利要求8所述的处理器,其中,所述解码单元被配置成用于将所述机器代码元素解码成转移指令,并且用于取决于所述机器代码元素的指定存储有待相互比较的值的第一寄存器和第二寄存器中的每个寄存器的各部分,进一步将所述转移指令解码成若等于则转移或若不等于则转移。
12.如权利要求8所述的处理器,其中,所述解码单元被配置成用于进一步将所述机器代码元素解码成算术指令,所述算术指令执行所述算术指令和由执行所述算术指令引起的指定条件下的进一步的行动或者执行所述算术指令并且忽略所述指定条件的指令。
13.一种在处理器中解码机器代码的方法,包括:
在所述处理器的解码单元中接收单个机器代码元素,以及
产生指示所述处理器有待执行的操作的数据,其中,所述操作来自虚拟编码操作集合,其中,所产生的数据指示哪项操作取决于所述单个机器代码元素中的操作码标识符部分和关于所述单个机器代码元素的元数据两者。
14.如权利要求13所述的在处理器中解码机器代码的方法,其中,所述单个机器代码元素中的所述操作码标识符部分包括对操作类型进行标识的部分和对针对所述操作类型相关的功能参数进行定义的部分。
15.如权利要求13所述的在处理器中解码机器代码的方法,其中,所述机器代码元素包括两个或更多个元素的从有序集合选择的标识数据,并且进一步包括使用所述两个或更多个元素的所述标识数据在所述机器代码元素中出现的相对顺序来确定响应于所述机器代码元素而有待执行的操作。
16.如权利要求13所述的在处理器中解码机器代码的方法,其中,所述机器代码元素包括专用于所述操作码标识符部分中的至少一部分、两个或更多个寄存器以及常数的预定义相对顺序的字段,并且进一步包括取决于和第一出现的寄存器相关联的编号比和第二出现的寄存器相关联的编号更大还是更小来将所述机器代码元素解码成两项不同可执行的操作。
17.如权利要求13所述的在处理器中解码机器代码的方法,其中,所述机器代码元素包括专用于所述操作码标识符部分中的至少一部分、两个或更多个寄存器以及常数的预定义相对顺序的字段,并且进一步包括取决于所述两个或更多个寄存器之一的标识符的相对位置在所述两个或更多个寄存器中的另一寄存器的标识符的相对位置之前还是之后来将所述机器代码元素解码成两项不同可执行的操作。
18.如权利要求13所述的在处理器中解码机器代码的方法,其中,所述机器代码元素包括专用于所述操作码标识符部分、两个寄存器以及常数的字段,并且进一步包括响应于与所述两个寄存器之一相关联的标识符与所述两个寄存器中的另一寄存器相关联的标识符编号相同而使用所述常数的值对所述机器代码元素进行解码。
19.一种从源代码集合产生机器可执行的代码的方法,包括:
响应于指令,标识可以由目标处理器架构执行的操作;以及
使用字面操作码标识符对所述指令进行编码以及将元数据编码成所述指令的一个或多个其他部分,根据所述目标处理器架构的实现方式中的指令解码器可解码的预先安排的惯例编码所述元数据。
20.如权利要求19所述的从源代码集合产生机器可执行的代码的方法,其中,所述编码包括标识使用若不等于则转移(BNE)和若等于则转移(BQE)中的一项或多项的机会以及产生多个机器代码元素,所述机器代码元素使用单个操作码标识符标识BNE和BQE指令,并按照所述指令中标识的两个或更多个寄存器的相对顺序在其之间进行区分。
21.如权利要求19所述的从源代码集合产生机器可执行的代码的方法,其中,所述产生包括对BNE和BQE指令之间的用于操作数的源和目的寄存器在每个机器代码元素中呈现的相对顺序的差异进行编码。
CN201410805562.3A 2013-12-20 2014-12-19 具有虚拟化指令集架构的处理器和方法 Active CN104778030B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361919698P 2013-12-20 2013-12-20
US61/919,698 2013-12-20

Publications (2)

Publication Number Publication Date
CN104778030A true CN104778030A (zh) 2015-07-15
CN104778030B CN104778030B (zh) 2018-11-30

Family

ID=53275538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410805562.3A Active CN104778030B (zh) 2013-12-20 2014-12-19 具有虚拟化指令集架构的处理器和方法

Country Status (4)

Country Link
US (1) US9870225B2 (zh)
CN (1) CN104778030B (zh)
DE (1) DE102014119281A1 (zh)
GB (1) GB2522990B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108089882A (zh) * 2016-11-23 2018-05-29 想象技术有限公司 编码和解码可变长度指令
CN108140011A (zh) * 2015-10-14 2018-06-08 Arm有限公司 向量加载指令
CN108475198A (zh) * 2016-02-24 2018-08-31 英特尔公司 用于在运行时的指令的上下文向量化的系统和方法
CN109074260A (zh) * 2016-04-28 2018-12-21 微软技术许可有限责任公司 乱序的基于块的处理器和指令调度器
CN109416635A (zh) * 2016-07-01 2019-03-01 英特尔公司 针对使用多个架构寄存器的指令的架构寄存器替换
CN111026504A (zh) * 2019-12-06 2020-04-17 海光信息技术有限公司 配置虚拟机中获取处理器信息的指令的处理方法、装置、cpu芯片、片上系统和计算机
CN112567340A (zh) * 2018-08-16 2021-03-26 Arm有限公司 用于执行指令的系统、方法和装置

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150227366A1 (en) * 2014-02-12 2015-08-13 Imagination Technologies Limited Processor with granular add immediates capability & methods
US10331449B2 (en) * 2016-01-22 2019-06-25 Arm Limited Encoding instructions identifying first and second architectural register numbers
US20190065201A1 (en) 2017-08-31 2019-02-28 MIPS Tech, LLC Implicit global pointer relative addressing for global memory access
CN109116863B (zh) * 2018-08-24 2021-12-03 北京京东乾石科技有限公司 无人机调度方法、装置、系统、电子设备及可读介质
US11080062B2 (en) 2019-01-12 2021-08-03 MIPS Tech, LLC Address manipulation using indices and tags
US11334358B2 (en) * 2019-12-09 2022-05-17 Amazon Technologies, Inc. Hardware accelerator having reconfigurable instruction set and reconfigurable decoder
US11841792B1 (en) 2019-12-09 2023-12-12 Amazon Technologies, Inc. Instructions with multiple memory access modes
CN114691202A (zh) * 2020-12-29 2022-07-01 上海兆芯集成电路有限公司 转换指令的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440701A (en) * 1991-08-21 1995-08-08 Matsushita Electric Industrial Co., Ltd. For shortening an instruction code length
US6351806B1 (en) * 1999-10-06 2002-02-26 Cradle Technologies Risc processor using register codes for expanded instruction set
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
CN103365630A (zh) * 2012-03-30 2013-10-23 瑞萨电子株式会社 半导体设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5167026A (en) * 1989-02-03 1992-11-24 Digital Equipment Corporation Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440701A (en) * 1991-08-21 1995-08-08 Matsushita Electric Industrial Co., Ltd. For shortening an instruction code length
US6351806B1 (en) * 1999-10-06 2002-02-26 Cradle Technologies Risc processor using register codes for expanded instruction set
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法
CN103365630A (zh) * 2012-03-30 2013-10-23 瑞萨电子株式会社 半导体设备

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108140011B (zh) * 2015-10-14 2022-04-22 Arm有限公司 向量加载指令
CN108140011A (zh) * 2015-10-14 2018-06-08 Arm有限公司 向量加载指令
CN108475198A (zh) * 2016-02-24 2018-08-31 英特尔公司 用于在运行时的指令的上下文向量化的系统和方法
US11687345B2 (en) 2016-04-28 2023-06-27 Microsoft Technology Licensing, Llc Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers
CN109074260A (zh) * 2016-04-28 2018-12-21 微软技术许可有限责任公司 乱序的基于块的处理器和指令调度器
CN109416635A (zh) * 2016-07-01 2019-03-01 英特尔公司 针对使用多个架构寄存器的指令的架构寄存器替换
CN109416635B (zh) * 2016-07-01 2023-12-26 英特尔公司 针对使用多个架构寄存器的指令的架构寄存器替换
CN108089882A (zh) * 2016-11-23 2018-05-29 想象技术有限公司 编码和解码可变长度指令
CN108089882B (zh) * 2016-11-23 2023-09-12 想象技术有限公司 编码和解码可变长度指令
US11868775B2 (en) 2016-11-23 2024-01-09 Imagination Technologies Limited Encoding and decoding variable length instructions
CN112567340A (zh) * 2018-08-16 2021-03-26 Arm有限公司 用于执行指令的系统、方法和装置
CN111026504A (zh) * 2019-12-06 2020-04-17 海光信息技术有限公司 配置虚拟机中获取处理器信息的指令的处理方法、装置、cpu芯片、片上系统和计算机
CN111026504B (zh) * 2019-12-06 2023-04-07 海光信息技术股份有限公司 配置虚拟机中获取处理器信息的指令的处理方法、装置、cpu芯片、片上系统和计算机

Also Published As

Publication number Publication date
DE102014119281A1 (de) 2015-06-25
US20150178076A1 (en) 2015-06-25
GB2522990A (en) 2015-08-12
US9870225B2 (en) 2018-01-16
GB2522990B (en) 2016-08-03
CN104778030B (zh) 2018-11-30

Similar Documents

Publication Publication Date Title
CN104778030A (zh) 具有虚拟化指令集架构的处理器和方法
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
CN104834503A (zh) 具有粒度的增加立即数能力的处理器和方法
CN104040491A (zh) 微处理器加速的代码优化器
CN102236699B (zh) 为快速超标量处理对数据规格化
CN104040492A (zh) 微处理器加速的代码优化器和依赖性重排序方法
CN104040490A (zh) 用于多引擎微处理器的加速的代码优化器
CN102754069B (zh) 用于处理加载/存储分离指令的方法和系统
CN100555225C (zh) 一种支持x86虚拟机的risc处理器装置及方法
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
CN100478871C (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
TWI507980B (zh) 最佳化暫存器初始化操作
KR102575940B1 (ko) 프로세서 명령어 창에 대한 명령어 블록의 대량 할당
US20190065201A1 (en) Implicit global pointer relative addressing for global memory access
CN101627365A (zh) 用于处理使用上下文切换的多线程架构中的指令的装置和方法
CN104461463A (zh) 用于微处理器的动态重设方法
CN102193823A (zh) 允许元编程的最优增量工作流执行
WO2005093562A1 (ja) データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体
WO2014090085A1 (en) Branch-free condition evaluation
WO2014090091A1 (en) Tracking multiple conditions in a general purpose register and instruction therefor
CN105593807A (zh) 跨群组界限的指令群组最佳化
CN109643237A (zh) 分支目标缓冲器压缩
RU2431887C2 (ru) Использование системы переименования регистра для передачи промежуточных результатов между составными командами и расширенной командой
CN101379467A (zh) 对动态可扩展处理器的软件支持
CN103365628A (zh) 用于执行预解码时优化的指令的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Hertfordshire

Applicant after: Mex Technology Co.,Ltd.

Address before: Hertfordshire

Applicant before: Hai Luo Software Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180719

Address after: California, USA

Applicant after: Imagination Technologies Ltd.

Address before: Hertfordshire

Applicant before: Mex Technology Co.,Ltd.

Effective date of registration: 20180719

Address after: Hertfordshire

Applicant after: Hai Luo Software Co.,Ltd.

Address before: Hertfordshire

Applicant before: Imagination Technologies Ltd.

GR01 Patent grant
GR01 Patent grant