CN101533342B - 压缩指令格式 - Google Patents
压缩指令格式 Download PDFInfo
- Publication number
- CN101533342B CN101533342B CN200810189862.8A CN200810189862A CN101533342B CN 101533342 B CN101533342 B CN 101533342B CN 200810189862 A CN200810189862 A CN 200810189862A CN 101533342 B CN101533342 B CN 101533342B
- Authority
- CN
- China
- Prior art keywords
- instruction
- field
- code
- value
- decode logic
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
Abstract
本申请涉及“压缩指令格式”。一种用于对可变长度指令集中的指令进行解码的技术。在一个实施例中,描述了指令编码,其中支持传统、当前和将来的指令集扩展,并且提供了增加的功能性,而无需扩大代码大小,并且在一些情况下减小代码大小。
Description
技术领域
本发明的实施例涉及微处理器和微处理器系统。具体来说,本发明的至少一个实施例涉及产生压缩指令格式的指令编码技术。
背景技术
微处理器技术这些年来得到迅速发展。计算机架构和半导体技术的进步创造了设计新处理器的许多机会。通常存在设计新处理器的两种选项:(1)定义全新的架构,以及(2)扩展当前架构以容纳新特征。
新处理器包含硬件和软件两个方面的新特征。基于现有设计的新处理器通常具有能利用新硬件设计的附加的指令集。但是,由于指令的编码和存储指令操作码映射方面的限制,通过添加新的指令集来扩展指令集是一个难题。因此,本行业需要提供用于扩展指令集而无需增加硬件复杂度以及无需明显扩大操作码映射的数量和大小的有效方法。
发明内容
本发明提供一种装置,包括:第一指令解码逻辑,向第二指令解码逻辑指明指令中的多个字段的每个的功能,其中所述第二指令解码逻辑将使用由所述第一指令解码逻辑所指明的所述多个字段的每个的功能将所述指令从第一格式转换成第二格式,其中所述第二格式将采用比所述指令的所述第一格式更少的位来表示所述多个字段的至少一个。
本发明还提供一种已经在其上存储了指令的机器可读介质,所述指令在由机器解码时使所述机器生成结果,包括:具有与所述指令不同的格式的所述指令的表示,其中所述指令的表示包括具有操作码映射字段、REX字段、第三源寄存器字段、向量大小字段和前缀字段的属性字段。
本发明还提供一种系统,包括:存储器,存储具有第一指令格式的指令;处理器,包括向第二指令解码逻辑指明指令中的多个字段的每个的功能的第一指令解码器逻辑,其中所述第二指令解码逻辑将使用由所述第一指令解码逻辑所指明的所述多个字段的每个的功能将所述指令从第一格式转换成第二格式,其中所述第二格式将采用比所述指令的所述第一格式更少的位来表示所述多个字段的至少一个。
本发明还提供一种方法,包括:将具有第一多个字段的第一指令格式转换成具有第二多个字段的第二指令格式,其中所述第二指令格式使用更少位来保留所述第一指令格式中包含的所有信息,其中所述第一指令格式包括八位的前缀字段、八位的REX字段和八位的逃逸码字段。
附图说明
通过以下对本发明的详细描述,本发明的特征和优点将变得非常明显,其中:
图1是示出其中可使用至少一个实施例的处理系统的框图。
图2是示出可包括一个实施例所表示的字段的指令格式的框图。
图3是示出根据至少一个实施例、对指令进行解码的逻辑的框图。
图4是示出根据一个实施例的第一指令解码逻辑的简图。
图5是示出根据一个实施例的第二指令解码逻辑的简图。
图6是示出执行一个实施例的操作的流程图。
具体实施方式
关于使用唯一指令属性编码的实施例来扩展指令集的至少一种方法、装置和系统。所公开的实施例还使指令集架构能够扩大,同时保存用于存储与指令集架构关联的操作码映射的存储区。在至少一个实施例中,一组现有指令字段被映射、压缩或者由指令属性字段取代,所述指令属性字段可保持与现有技术指令字段关联的信息,但是可产生更紧凑的指令从而用于存储指令和指令操作码映射需要的存储区更少。在一个实施例中,指令属性编码可实现进一步的指令和微架构特征,包括将由一些指令使用的额外源操作数以及用于例如向量指令(例如单指令多数据(SIMD)指令)的指令的增加的数据大小。
为了便于说明,以下描述中提出例如处理器类型、指令格式、逻辑门类型和逃逸操作码值等的大量具体细节,以便透彻地了解本发明的实施例。但是,本领域的技术人员将清楚地知道,为了实施本发明,不一定需要这些具体细节。在其它情况下,众所周知的电气结构和电路以框图形式示出,以免影响使本发明不明确。在以下描述中,符号‘0x’表示其后的数值是十六进制格式。
参照图1,示出其中可使用本发明的至少一个实施例的处理系统100。例如,系统100可用于对指令集118中的新指令类型118b或者现有指令118a进行解码或运行。在一个实施例中,处理系统包括具有例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器的处理器110的任何系统。处理器110可具有任何类型的架构,例如复杂指令集计算机(CISC)、精简指令集计算机(RISC)、超长指令字(VLIW)、多线程或混合架构。处理系统可包括个人计算机(PC)、工程工作站、个人数字助理和其它手持设备、机顶盒等。
图1示出处理器110,它包括解码单元116、寄存器组114、至少一个执行单元112的至少一个内部总线111以用于运行指令。当然,处理器110包含其它电路,这些电路对于理解本发明并不是必要的。解码单元116、寄存器114和执行单元112通过一个或多个内部总线111耦合在一起。解码单元116用于将处理器110所接收的指令解码成控制信号和/或微码入口点。可通过指令缓冲器(例如图3中的310)向解码单元116发出指令。响应这些控制信号和/或微码入口点,执行单元112执行适当的操作。解码单元116可使用任何数量的不同机制(例如查询表、硬件实现、可编程逻辑阵列(“PLA”)等)来实现。
解码单元116示为能够对指令106进行解码,指令106遵循由扩展指令集118所定义的格式。指令集118包括现有指令集118a以及可表示可引入架构的任何新指令的新指令集118b。指令集118包括用于对标量和打包(packed)(或向量)数据执行操作的指令。这些操作的格式能够是任何便利的格式,包括单精度、双精度和扩展浮点数、有符号和无符号整数以及非数值数据。对于至少一个实施例,指令集118中定义的指令的长度彼此有所不同。
遵循由指令集118所提出的格式的指令106可存储在存储器系统102中。存储器系统102计划作为存储器或存储器分级结构的一般表示,并且可包括存储器的各种形式,例如硬盘驱动器、CD-ROM、随机访问存储器(RAM)、动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)、闪速存储器及相关电路。存储器系统102除了存储指令106之外还可存储可由处理器110运行的、数据信号所表示的数据104。
指令格式
图2是示出可包括本发明的一个实施例所表示的字段的指令200的格式的图。指令格式200包括前缀字段210、操作码字段220和操作数说明符字段(例如modR/M、比例-变址-基址、位移、立即数等)。操作数说明符字段可以是可选的,并且包括modR/M字段230、SIB字段240、位移字段250和立即数字段260。
在一个实施例中,术语“逃逸操作码”指的是二字节值,它向解码器逻辑指明指令所对应的操作码可具有各种属性,例如三字节操作码,其中两个字节对应于逃逸操作码,而第三字节对应于指明该指令的功能的操作码。例如,在一个实施例中,三字节逃逸字段中的二字节值可以是下列值之一:0x0F38、0x0F39、0x0F3A或0x0F3B。modR/M字段230的内容指明寻址形式。modR/M字段可指定寄存器和寻址模式。
modR/M字段230中的信息的某些编码可指明寻址信息的第二字节存在于SIB(比例/变址/基址)字段240中,以便全面指定指令码的寻址形式。例如,基址加变址寻址形式和比例加变址寻址形式均可将例如比例因子、变址的寄存器号和/或基址寄存器的寄存器号的信息包含在SIB字段240中。
本领域的技术人员会知道,图2阐明的格式200是说明性的,并且指令码中的其它的数据组织可与所公开实施例配合使用。例如,字段210、220、230、240、250、260无需以所示顺序来组织,而是可重新组织成相对彼此的其它位置并且无需是邻接的。同样,本文所述的字段长度不应当看作是限制。在备选实施例中,描述为字节的特定成员的字段可实现为更大或更小的字段。同样,术语“字节”在本文用于指八位分组,在其它实施例中可实现为包括4位、16位和32位的任何其它大小的分组。
当在本文使用时,“指令”(例如图1所示的指令106之一)在图2所示指令格式200的字段中包含特定的值。这种指令有时称作“实际指令”。实际指令的位值有时在本文统称为“指令码”。
在指令集118(图1)中指定用于实际指令的可接受字节值。指令格式200的每个字段的可接受字节值是例如指令长度解码器306(图3)和解码单元116(图1)的解码逻辑识别并对其进行操作以生成解码的指令码的那些值。对于各指令码,对应解码的指令码唯一地表示将由执行单元112(图1)响应指令码而执行的操作。解码的指令码可包括一个或多个微操作。
图2所示的前缀字段210可包括多个前缀。在一个实施例中,前缀字段210包括总共四个前缀,其中各前缀为一个字节。在例如关于扩展指令集的一些应用中,前缀字段可用于扩展操作码指令空间。此外,在至少一个实施例中,可对前缀进行编码以提供与现有技术中同样多或者更多的有关指令的信息,但是需要的存储区比使用一些现有技术前缀编码的指令少。
操作码字段220的内容指定将由运行该指令的处理器来执行的一个或多个操作。对于至少一个实施例,操作码字段可包括三个字节。在其它实施例中,操作码可包括一个、两个或三个以上字节。对于一些指令,操作码字段220的二字节字段118c中的三字节逃逸操作码值与操作码字段220的第三字节225的内容相结合,以指定操作。这个第三字节225在本文指的是指令特定操作码。对于一些指令,操作码字段220的二字节字段118c中的三字节逃逸操作码值与前缀字段210的内容以及操作码字段220的指令特定操作码字段225的内容相结合,以指定操作。
一般来说,前缀字段210和操作码字段220的组合创建多个不同类型的指令。为了便于说明,图2仅示出七种类型的指令:常规一字节指令212、带有作为限定符的前缀的常规指令214、常规逃逸指令216、第一扩展指令类型222、第二扩展指令类型224、第一新指令类型226和第二新指令类型228。如本领域的技术人员已知,能类似地定义其它类型的指令。在一种扩展指令类型226中,包含REX字段以指明将与指令配合使用的寄存器。例如,REX所指明的一种指令类型启用64位模式的附加寄存器。
常规一字节指令212包括在操作码字段220中带有一字节指令特定操作码的常规指令。带有作为限定符的前缀的常规指令214包括使用前缀作为操作码的限定符的常规指令。例如,字符串指令可使用REPEAT前缀值将该字符串指令重复计数寄存器中指定的次数或者直至满足某个条件为止。指令214中使用的前缀值没有向操作码字段220中跟随的操作码值增加全新的含义。相反,前缀值只是用作以附加条件来限定操作码的限定符。指令214中的前缀的使用对于不同指令类型可以是不同的。
在一个实施例中,常规逃逸指令216是常规指令,它利用操作码字段220的第一字段215中的逃逸操作码向解码器硬件指明,操作码字段220的第二字段217中的指令特定操作码用于定义该指令。例如,在一个实施例中,操作码字段220的第一字节215中的浮点协处理器逃逸操作码值0xD8至0xDF指明,操作码字段220的第二字节217中随后的操作码值应当解释为协处理器指令,并且应当送往协处理器硬件以便运行。
第一扩展指令类型222是特定类型的逃逸指令,它被定义成在操作码字段220的第一字段221中包含预定义逃逸操作码值0x0F。逃逸操作码0x0F向解码器硬件指明,操作码字段220的第二字段223中的指令特定操作码值用于定义指令。根据第二操作码字节的值(以及在一些情况下的modR/M字段230的三位的值),第一扩展指令类型222的指令可具有可变长度。例如,扩展指令类型222的两个指令(打包左移逻辑(PackedShiftLeftLogical))可分别包括下列指令字段值:
PSLLW(寄存器中的移位值):0F:F1:1b"11xxxyyy",其中xxx定义第一寄存器,而yyy定义第二寄存器
PSLLW(用立即数的值移位):0F:71:1b"11110xxx":立即数数据(8位),其中xxx定义寄存器
在所述PSSLW指令的每个中,操作码字段220的第一个字包括逃逸值0x0F。第一指令为三字节长,但第二指令为四字节,因为它包括一个字节的立即数数据。因此,对于扩展指令类型222,解码器硬件(例如图3的指令长度解码器306)利用操作码字段220的第一字段221中的逃逸操作码值0x0F以及二字节操作码字段220的第二字节223中的值和modR/M字段230的值,对指令的长度进行解码。
指令前缀和逃逸操作码的示例
最初开发指令前缀是用于增强指令集。例如,开发repeat前缀以重复字符串指令。repeat前缀码为0xF3(REP,REPE)和0xF2(REPNE)。这样使用的前缀没有定义随后的操作码的新含义。它只定义操作码的附加操作条件。
逃逸操作码提供指令集的扩展。例如,逃逸操作码0xD8至0xDF用于指明第二操作码字节217包含定义用于浮点单元的指令的值。解码器将操作码传递给浮点解码器。
对于至少一个指令集,3字节逃逸操作码是具有值0x0F3y的二字节实体,其中y为0x8、0x9、0xA或0xB。3字节逃逸码字段118c中的3字节逃逸操作码值向解码器指明,操作码字段200的第三字节225中的指令特定操作码值指明新指令集中的指令。新指令集可以是添加到架构中的任何新指令集。
与2字节逃逸操作码对比,3字节逃逸操作码字段118c中的值向解码器指明用于确定指令长度的方法。也就是说,3字节逃逸操作码的各值与用于确定与特定3字节逃逸码对应的映射中的每一个指令的指令长度的特定方法关联。例如,3字节逃逸操作码字段118c中的值0x0F38与相关操作码映射关联。可使用用于确定0x0F38操作码映射中的其它指令的长度的相同的长度确定方法来计算0x0F38操作码映射中的各指令的长度。
类似地,可采用用于确定与其余3字节逃逸操作码值(0x0F39、0x0F3A、0x0F3B)关联的相应操作码映射中的其它指令的长度的相同的长度确定逻辑来计算相应操作码映射的各指令的长度。
因为评估输入项的相同集合以确定操作码映射中的各指令的长度,用于确定新操作码映射之一中的各指令的指令长度的长度确定逻辑得以简化。这种长度确定逻辑在本文称作“固定输入”逻辑或方法。也就是说,经评估以确定映射中的一个指令的长度的各输入项也与映射中的每一个其它指令的长度的确定相关。待评估的项的固定集合可以逐个操作码映射有所不同。虽然待评估的输入集合可在操作码映射之间有所不同,但是,经评估以确定指令长度的输入对于给定3字节操作码映射中的所有指令都是相同的。
前缀和逃逸操作码的组合提供处理器的操作码表的显著扩大,从而允许附加的新指令集。除了逃逸操作码所创建的指令集之外,这种组合还使用现有前缀码来定义新的指令集。通过使用现有前缀码,现有指令集的解码电路可保持为相对不变以支持新指令118c(图1)的解码。
部分或全部新指令的指令特定操作码值(在操作码字段220的第三字节225中)可以与现有指令的操作码相同。通过使用具有前缀和逃逸操作码的相同操作码来定义新的指令集,解码电路可以比为新指令集使用全新的操作码集合具有更少的复杂性。
在一个实施例中,前缀值用于定义新指令。此外,前缀仍然能用于在某种操作条件下限定操作码或增强操作码的传统作用。
下表1说明使用前缀和三字节逃逸操作码的指令集的一些现有技术示例。
表1
表1
在上述示例中,带有前缀0x66的指令涉及利用一个或多个扩展大小寄存器(例如128位寄存器大小)的指令,而没有前缀0x66的指令涉及利用一个或多个较小大小寄存器(例如64位寄存器大小)的指令。较小大小寄存器在本文称作“常规长度”寄存器。如本领域的技术人员已知,前缀的准确代码是实现相关的,并且上述0x66前缀值只是为了便于说明。
原来的x86指令集提供1字节操作码以及包含在附加字节中的多种格式的地址字节和立即操作数,从第一“操作码”字节得知这些附加字节的存在。另外,存在保留作为对操作码的修改符的某些字节值(称作前缀,因为它们必须放在指令之前)。当原来的256个操作码字节(包括这些特殊前缀值)的调色板用完时,单个字节专用作到新的256个操作码的集合的逃逸。当添加向量指令(例如SIMD)时,产生对更多操作码的需求,并且即使通过使用前缀进行扩展时,“二字节”操作码映射也是不充分的。为此,将新指令加入另外的映射,该映射使用2个字节加上可选前缀作为标识符。
另外,为了帮助64位模式的附加寄存器,可在前缀与操作码(以及确定操作码所需的任何逃逸字节)之间使用附加前缀(称作“REX”)。在一个实施例中,REX可具有4个“有效载荷”位以指明使用64位模式的附加寄存器。在其它实施例中,它可具有少于或多于4位。至少一个指令集的一般格式一般表示如下:
[前缀][rex]逃逸[逃逸2]操作码(等)
在这个示例中,“等”表示地址字节(例如一至六个字节),并且也许表示指令的附加立即数信息。
当添加新指令集时,能看到,包括前缀、数据大小指示符、逃逸码、操作码和中间值(intermediate)、地址字段等的指令的大小使代码大小扩大,这由于许多原因将是不合需要的。
为了实现新指令集扩展,在保持与现有和传统指令集后向兼容的同时,新指令编码技术可以是合乎需要的。因此,本发明的至少一个实施例包括在减小代码大小的同时实现后向兼容性、增强功能性的指令编码。在一个实施例中,指令编码使用新字节来指明指令是否需要第二扩展字段。以下说明示出传统指令以及本发明的至少一个实施例即使没有改进也至少保持指令所造成的代码大小的方式。在以下所述示例中,传统逃逸字段由新的逃逸字段取代,传统前缀部分压缩为“有效载荷”字节的部分,传统前缀可再利用并使得可用于将来指令扩展,以及增加新的特征(例如增加的向量长度增加和附加的源寄存器说明符)。
“不包含“逃逸2”的操作码
正如上面能看到的,指令的非固定部分(前缀、REX、逃逸码)已经从1至3字节的范围变为2个字节。在最坏情况下,根据一个实施例,指令编码仅对传统编码增加一个字节,而在最好情况下,它比传统编码节省一个编码的字节。在上面的示例中,字节长前缀“[66,F2,F3]”由两位“pp”表示,REX字节的字段由一位“R”表示,以及逃逸字节从“0F”重新编码为“C5”(下面将进行论述)。此外,已经增加4位字段“VVVV”以指定额外源操作数,并且已经通过可表示128位或256位向量大小的向量大小位“L”提供增加的向量大小。
下面说明使用两个字节对指令集指令进行编码的一个实施例,它在原来的指令中存在第二逃逸码时或者需要使用REX字段中的额外位(例如XB和W字段)时可被使用。在以下所述实施例中,传统“逃逸”由新的逃逸值表示,传统前缀完全压缩为“有效载荷”字节的部分,传统前缀可再利用并且可用于将来扩展,在可用将来映射或特征空间的“映射”字段中压缩第二逃逸代码,以及增加新的特征(例如增加的向量长度和附加的源寄存器说明符)。
可选地包含“逃逸2”的操作码
在上面的图示中,假定原来的指令使用REX或者“逃逸2”字段(或者它们两者),因此指令的非固定部分的长度已经从2至4个字节的范围变为3字节。在最坏情况下,本发明的一个实施例使原来的指令编码增加1个字节,而在最好情况下,该实施例使原来的指令编码减少1个字节。与前面所述的单个逃逸码示例对比,REX字节由4位(RXB和W)表示,以及第二逃逸字段以5位(“mmmmm”)呈现并编码而不是如现有技术编码中那样使用分立字节。
虽然所公开实施例使用5位来压缩逃逸2代码字节的总共32个不同值,但在其它实施例中,来自逃逸2代码位的位可用于其它功能,例如将向量长度扩展到4个组合(如下所述,其中“mmmmm”位重命名为‘L’)并且保持对16个不同逃逸进行编码的能力。
C4RXB.mmmmmW.VVVV.Lpp
C4RXB.L′.mmmmW.VVVV.Lpp
类似地,如果仅需要逃逸2代码的4个值,则高“mmmmm”位能重命名以指明QRS特征,它可取不同于与原来的实现兼容的原来的“缺省行为”值的七个值。
C4RXB.QRS.mmW.VVVV.Lpp
在上述示例中,逃逸码为“C4”,指明指令由第二编码而不是前面所述的编码来表示(由“C5”所示)。应当注意,选定值“C5”和“C4”值的选择以及有效载荷的编码使得它将与至少一种架构(例如x86)的当前处理器上的未实现的操作码后向兼容。本领域的技术人员会知道,C5和C4分别对应于“LDS”和“LES”指令,它们在x86架构中的操作码之下是合法的。
在一些实施例中,采取格式“[前缀][REX][逃逸字节]操作码[指令结尾的附加字节]”的指令可转换成更紧凑且有效的格式“[属性][操作码][指令结尾的附加字节]”,其中“属性”字段可包括比从其中转换它的原来的指令更少的位。
除了本文所述的指令集之外,来自其它指令集的其它指令也可获益于本发明的实施例。
指令解码
图3是示出对可变长度指令进行解码的逻辑300的简图。逻辑300可包括指令长度解码器306、指令循环器(rotator)308、指令缓冲器310、第一指令解码逻辑320、第二指令解码逻辑330和操作码解码器340。第一指令解码逻辑320、第二指令解码逻辑330和操作码解码器340形成图1所示的解码单元116的全部或部分。虽然表示为单个实体,但是,第一指令解码逻辑320、第二指令解码逻辑330和操作码解码器340的任一个或每个可实现为独立逻辑块。
指令长度解码器306确定已经从外部存储器(例如图2的存储器102)取出的实际指令码的长度。为了便于说明,假定指令码包括总共五个字节:第一字节对应于IN至IN+7,第二字节对应于IK至IK+7,第三字节对应于IL至IL+7,第四字节对应于IM至IM+7,以及第五字节对应于IP至IP+7,其中IN至IN+7、IK至IK+7、IM至IM+7、IL至IL+7和IP至IP+7表示指令码的位位置。但是,实践中,实际指令在其指令码中可包含多于五个字节。类似地,实际指令在其指令码中可包含少于五个字节。
对于至少一个实施例,指令码的五个所示字节是邻接的,使得K=N+8、L=K+8以及L=N+16,以及M=L+8、M=K+16和M=K+24,依此类推。但是,如以上结合图2所述,图2所示的格式200的字段无需占据所示位置。因此,本文所述的指令码的说明性的五个字节可以采取任何顺序,并且无需是邻接的。
本领域的技术人员会知道,指令长度解码器306的逻辑可在支持可变长度指令的系统中实现相当复杂的长度解码方法。在需要评估不同输入的不同方法以确定相同操作码映射中的指令的指令长度的系统中,情况更是如此。在一些实施例中,操作码映射中的各指令的长度由单个固定输入长度确定逻辑来确定。
循环器308将原始指令字节循环,使得要解码的第一字节在起始位置。因此,循环器308标识要解码的指令字节的开始。应当注意,虽然循环器308可标识指令的第一字节、如前缀字节,但第一字节无需标识。
指令缓冲器310接收并存储已经从外部存储器取出的指令。对于至少一个实施例,指令在由指令缓冲器310接收之前经过长度解码和循环。对于至少一个实施例,指令缓冲器310实现为指令缓存。
第一指令解码逻辑320接收指令字节,并且检测用作指令集的组成部分的预定义前缀和/或逃逸码和/或操作码的集合中的一个或多个的存在。第二指令解码逻辑330利用第一指令解码逻辑320的结果将所接收的指令信息从现有技术指令格式转换成按照一个实施例的格式。然后将已转换指令发送给操作码解码器340,以便生成符合预期指令操作的指令信号(例如微操作)。
在一个实施例中,操作码解码器340将格式“[前缀][REX][逃逸字节]操作码[指令结尾的附加字节]”的指令转换成更紧凑且有效的格式“[属性][操作码][指令结尾的附加字节]”。在其它实施例中,将具有其它指令格式的其它指令转换成上述紧凑格式。
图4是示出第一指令解码逻辑420的至少一个实施例的框图。在一个实施例中,第一指令解码逻辑420接收取出的缓存行,并产生关于指令中的字节的信息。例如,如果所接收指令的字节包含0x66,则第一指令解码逻辑420可实现以下算法:如果0x66位于指令的前缀部分中,否则,如果0x66位于操作码字节中并且由0x0F前导,则0x0F是逃逸码,并且操作码对应于第一操作码映射入口,否则,如果0x66位于操作码字节中但没有由0x0F前导,则指令中没有逃逸码,并且操作码对应于第二操作码映射入口,如果0x66在32位模式的modr/m(地址说明符)字段中,则0x66具有四字节位移,等等。
如图4所示,第一指令解码逻辑420可包括在可编程逻辑阵列421、423、425等中所实现的并行逻辑,使其能够对指令的对应部分、例如前缀、逃逸码、操作码等进行解码。在一个实施例中,按照对应的指令部分中的值,各部分421-425可将其相应指令部分解释为表示不同的含义,如对于图4的逻辑阵列421所示。在指令的各部分已经由第一指令解码逻辑420预解码以确定各部分的含义之后,则可将该指令传递给第二指令解码逻辑(图3中表示为320),以便根据一个实施例将该指令转换成更有效且紧凑的编码方案。
图5示出将指令转换成符合本发明的至少一个实施例的格式的第二指令解码逻辑430。对于由图4所示的第一指令解码逻辑进行预解码的各操作码,属性字段531、操作码字段533和地址/数据/中间值/等字段被解码并发送给操作码解码器(图3中表示为340),以便将操作码解码成执行该操作码所规定的操作的信号。在一个实施例中,属性字段531可包括指明前面所述信息的位,其中包括现有技术操作码映射信息(例如逃逸码)、REX信息和前缀信息以及根据一个实施例的新信息,例如附加的源寄存器地址和扩展向量大小。
图6是示出执行根据至少一个实施例的指令解码和转换技术的操作的流程图。在操作601,将指令字节循环,使得要解码的第一字节在起始位置。在操作605,指令缓冲器接收并存储已经从外部存储器取出的指令。在操作610,在第一阶段对指令进行预解码,其中检测用作指令集的组成部分的预定义前缀和/或逃逸码和/或操作码的集合中的一个或多个的存在。在操作615,指令的第二阶段预解码将所接收的指令信息从现有技术指令格式转换成根据本发明的一个实施例的格式。在操作620,将已转换指令随后发送给操作码解码器,以便生成符合预期指令操作的指令信号。
虽然已经示出和描述了本发明的具体实施例,但是本领域的技术人员清楚地知道,在不背离本发明的情况下,能在其广义方面中进行变更和修改。所附权利要求将属于本发明的实质范围之内的所有这些变更和修改包含在其范围内。
Claims (23)
1.一种处理器,包括:
解码单元(116),能够解码现有第一指令集的指令以及新的第二指令集的指令,所述解码单元包括第一指令解码逻辑(320)、第二指令解码逻辑(330)和操作码解码器(340),第一指令解码逻辑用来接收指令并用来检测包括用作所述现有第一指令集的部分的一个或多个预定义前缀、逃逸码或操作码的多个字段的存在,并向操作上与第一指令解码逻辑耦合的第二指令解码逻辑指明所述指令中的所述多个字段的每个的功能,其中,所述第二指令解码逻辑将使用由所述第一指令解码逻辑所指明的所述多个字段的每个的功能将所接收的指令从第一格式转换成所述新的第二指令集的第二格式,并将经转换的指令发送到操作码解码器以便产生与所接收的指令的所需操作相一致的一个或多个指令信号,以及其中所述第二格式与所述现有第一指令集中未实现的指令后向兼容,但将采用比所述指令的所述第一格式更少的位来表示所述多个字段的至少一个。
2.如权利要求1所述的处理器,其中,所述操作码解码器将所述经转换的指令中的操作码解码成指明将通过运行所述经转换的指令来执行的与所接收的指令的所需操作相一致的一个或多个操作的所述一个或多个指令信号。
3.如权利要求1所述的处理器,其中,所述指令的所述第二格式包括属性字段和操作码字段。
4.如权利要求3所述的处理器,其中,所述属性字段将指明操作码映射、REX值和前缀值。
5.如权利要求4所述的处理器,其中,所述指令的所述第二格式的所述属性字段将包括比所述第一格式的对应字段的位之和更少的位。
6.如权利要求4所述的处理器,其中,在所述属性字段中,所述操作码映射由第一或者第二值表示,所述REX值根据所述操作码映射的值由一位或四位表示,以及所述前缀值将由两位表示。
7.如权利要求6所述的处理器,其中,所述指令的所述第二格式包括源字段,所述源字段指明与由所述指令所指明的两个其它源寄存器不同的第三源寄存器。
8.如权利要求7所述的处理器,其中,所述指令的所述第二格式包括指明第一和第二向量大小的字段。
9.一种处理系统,包括:
存储器,存储具有第一指令格式的指令;
包括解码单元的处理器,所述解码单元能够解码现有第一指令集的指令以及新的第二指令集的指令,所述解码单元包括第一指令解码逻辑、第二指令解码逻辑和操作码解码器,第一指令解码逻辑用来接收指令并用来检测包括用作所述现有第一指令集的部分的一个或多个预定义前缀、逃逸码或操作码的多个字段的存在,并向第二指令解码逻辑指明所述指令中的所述多个字段的每个的功能,其中所述第二指令解码逻辑将使用由所述第一指令解码逻辑所指明的所述多个字段的每个的功能将所接收的指令从第一格式转换成所述新的第二指令集的第二格式,并将经转换的指令发送到操作码解码器以便产生与所接收的指令的所需操作相一致的一个或多个指令信号,以及其中所述第二格式与所述现有第一指令集中未实现的指令后向兼容,但将采用比所述指令的所述第一格式更少的位来表示所述多个字段的至少一个。
10.如权利要求9所述的处理系统,其中,所述操作码解码器将所述经转换的指令中的操作码解码成指明将通过运行所述经转换的指令来执行的与所接收的指令的所需操作相一致的一个或多个操作的所述一个或多个指令信号。
11.如权利要求9所述的处理系统,其中,所述指令的所述第二格式包括属性字段和操作码字段。
12.如权利要求11所述的处理系统,其中,所述属性字段将指明操作码映射、REX值和前缀值。
13.如权利要求12所述的处理系统,其中,所述指令的所述第二格式的所述属性字段将包括比所述第一格式的对应字段的位之和更少的位。
14.如权利要求12所述的处理系统,其中,在所述属性字段中,所述操作码映射由第一或者第二值表示,所述REX值根据所述操作码映射的值由一位或四位表示,以及所述前缀值将由两位表示。
15.如权利要求14所述的处理系统,其中,所述指令的所述第二格式包括源字段,所述源字段指明与所述指令所指明的两个其它源寄存器不同的第三源寄存器。
16.如权利要求15所述的处理系统,其中,所述指令的所述第二格式包括指明第一和第二向量大小的字段。
17.一种方法,包括:
在第一指令解码逻辑中接收具有现有指令集的第一指令格式的指令;
在所述指令中检测包括用作所述现有指令集的部分的一个或多个预定义前缀、逃逸码或操作码的第一多个字段的存在;
向第二指令解码逻辑指明所述指令中的所述第一多个字段的每个的功能;
将所接收的指令从第一指令格式转换成扩展指令集的第二指令格式,所述第二指令格式具有第二多个字段;以及
在操作码解码器中产生与所接收的指令的所需操作相一致的一个或多个指令信号,其中所述第二指令格式与所述现有指令集中未实现的指令后向兼容,但使用更少位来保留所述第一指令格式中包含的所有信息,并且其中所述第一指令格式包括八位的前缀字段、八位的REX字段和八位的逃逸码字段。
18.如权利要求17所述的方法,其中,所述第二指令格式包括八位的逃逸码、一位的rex字段和二位的前缀字段。
19.如权利要求17所述的方法,其中,所述第二指令格式包括八位的逃逸码、四位的rex字段、五位的前缀字段和二位的前缀字段。
20.如权利要求17所述的方法,其中,所述第二指令格式包括四位的第三源寄存器字段和向量大小位。
21.如权利要求18所述的方法,其中,如果所述指令属于第一类型,则所述第二指令格式的所述逃逸字段包括值0xC5。
22.如权利要求19所述的方法,其中,如果所述指令属于第二类型,则所述第二指令格式的所述逃逸字段包括值0xC4。
23.如权利要求17所述的方法,其中,所述第二指令格式包括表示所述第一指令格式的所述前缀字段、所述REX字段和所述逃逸码字段的属性字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210328169.0A CN103150140B (zh) | 2007-12-27 | 2008-12-26 | 压缩指令格式 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/965,669 US8281109B2 (en) | 2007-12-27 | 2007-12-27 | Compressed instruction format |
US11/965669 | 2007-12-27 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210328169.0A Division CN103150140B (zh) | 2007-12-27 | 2008-12-26 | 压缩指令格式 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101533342A CN101533342A (zh) | 2009-09-16 |
CN101533342B true CN101533342B (zh) | 2016-04-27 |
Family
ID=40800062
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810189862.8A Expired - Fee Related CN101533342B (zh) | 2007-12-27 | 2008-12-26 | 压缩指令格式 |
CN201210328169.0A Expired - Fee Related CN103150140B (zh) | 2007-12-27 | 2008-12-26 | 压缩指令格式 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210328169.0A Expired - Fee Related CN103150140B (zh) | 2007-12-27 | 2008-12-26 | 压缩指令格式 |
Country Status (2)
Country | Link |
---|---|
US (6) | US8281109B2 (zh) |
CN (2) | CN101533342B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8281109B2 (en) * | 2007-12-27 | 2012-10-02 | Intel Corporation | Compressed instruction format |
US9201801B2 (en) * | 2010-09-15 | 2015-12-01 | International Business Machines Corporation | Computing device with asynchronous auxiliary execution unit |
GB2484489A (en) | 2010-10-12 | 2012-04-18 | Advanced Risc Mach Ltd | Instruction decoder using an instruction set identifier to determine the decode rules to use. |
US8793469B2 (en) * | 2010-12-17 | 2014-07-29 | Intel Corporation | Programmable logic array and read-only memory area reduction using context-sensitive logic for data space manipulation |
US8516225B2 (en) * | 2011-03-25 | 2013-08-20 | Koichi Kitagishi | Central processing unit and microcontroller |
WO2012134532A1 (en) * | 2011-04-01 | 2012-10-04 | Intel Corporation | Vector friendly instruction format and execution thereof |
US9811338B2 (en) * | 2011-11-14 | 2017-11-07 | Intel Corporation | Flag non-modification extension for ISA instructions using prefixes |
US9804852B2 (en) * | 2011-11-30 | 2017-10-31 | Intel Corporation | Conditional execution support for ISA instructions using prefixes |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
CN104025020B (zh) * | 2011-12-23 | 2017-06-13 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
US9588764B2 (en) * | 2011-12-23 | 2017-03-07 | Intel Corporation | Apparatus and method of improved extract instructions |
TW201419140A (zh) * | 2012-11-06 | 2014-05-16 | Ind Tech Res Inst | 可重新配置的指令編碼方法、執行方法及電子裝置 |
KR101993562B1 (ko) * | 2012-06-15 | 2019-09-30 | 인텔 코포레이션 | Load store 재정렬 및 최적화를 구현하는 명령어 정의 |
US9251377B2 (en) | 2012-12-28 | 2016-02-02 | Intel Corporation | Instructions processors, methods, and systems to process secure hash algorithms |
US8924741B2 (en) * | 2012-12-29 | 2014-12-30 | Intel Corporation | Instruction and logic to provide SIMD secure hashing round slice functionality |
US9110657B2 (en) | 2013-01-21 | 2015-08-18 | Tom Yap | Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture |
US9405534B2 (en) | 2013-01-21 | 2016-08-02 | Tom Yap | Compound complex instruction set computer (CCISC) processor architecture |
US20140289502A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced vector true/false predicate-generating instructions |
US10038550B2 (en) | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
US10503510B2 (en) | 2013-12-27 | 2019-12-10 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US9912481B2 (en) | 2014-03-27 | 2018-03-06 | Intel Corporation | Method and apparatus for efficiently executing hash operations |
US9317719B2 (en) | 2014-09-04 | 2016-04-19 | Intel Corporation | SM3 hash algorithm acceleration processors, methods, systems, and instructions |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
US10860322B2 (en) * | 2015-10-30 | 2020-12-08 | Arm Limited | Modifying behavior of a data processing unit using rewritable behavior mappings of instructions |
US10761849B2 (en) | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
CN111124495B (zh) * | 2019-12-16 | 2021-02-12 | 海光信息技术股份有限公司 | 一种数据处理方法、解码电路及处理器 |
CN111355777A (zh) * | 2020-02-14 | 2020-06-30 | 西安奥卡云数据科技有限公司 | 一种分布式文件系统的管理方法装置及服务器 |
US11119777B1 (en) * | 2020-04-22 | 2021-09-14 | International Business Machines Corporation | Extended prefix including routing bit for extended instruction format |
TWI760880B (zh) * | 2020-10-07 | 2022-04-11 | 瑞昱半導體股份有限公司 | 與儲存裝置相關的傳輸控制電路、資料傳輸系統及操作資料傳輸系統的方法 |
CN112346780B (zh) * | 2020-11-05 | 2022-11-15 | 海光信息技术股份有限公司 | 一种信息处理方法、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014735A (en) * | 1998-03-31 | 2000-01-11 | Intel Corporation | Instruction set extension using prefixes |
US6240506B1 (en) * | 1998-10-02 | 2001-05-29 | Advanced Micro Devices, Inc. | Expanding instructions with variable-length operands to a fixed length |
CN1846193A (zh) * | 2003-09-08 | 2006-10-11 | 英特尔公司 | 用于并行数据转换的方法、设备及指令 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2902402B2 (ja) * | 1987-09-30 | 1999-06-07 | 三菱電機株式会社 | データ処理装置 |
JPH03271829A (ja) * | 1990-03-20 | 1991-12-03 | Fujitsu Ltd | 情報処理装置 |
EP0650612B1 (en) * | 1992-03-25 | 1999-08-18 | Zilog Incorporated | Fast instruction decoding in a pipeline processor |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US5809273A (en) * | 1996-01-26 | 1998-09-15 | Advanced Micro Devices, Inc. | Instruction predecode and multiple instruction decode |
US5740392A (en) * | 1995-12-27 | 1998-04-14 | Intel Corporation | Method and apparatus for fast decoding of 00H and OFH mapped instructions |
DE19629130A1 (de) * | 1996-07-19 | 1998-05-14 | Philips Patentverwaltung | Signalprozessor |
US6041403A (en) * | 1996-09-27 | 2000-03-21 | Intel Corporation | Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction |
US5884071A (en) * | 1997-03-31 | 1999-03-16 | Intel Corporation | Method and apparatus for decoding enhancement instructions using alias encodings |
US6157996A (en) * | 1997-11-13 | 2000-12-05 | Advanced Micro Devices, Inc. | Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space |
US6101592A (en) * | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
US5881260A (en) * | 1998-02-09 | 1999-03-09 | Hewlett-Packard Company | Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction |
JPH11259293A (ja) * | 1998-03-12 | 1999-09-24 | Matsushita Electric Ind Co Ltd | データ処理装置 |
KR100308211B1 (ko) * | 1999-03-27 | 2001-10-29 | 윤종용 | 압축 명령을 갖는 마이크로 컴퓨터 시스템 |
US6691305B1 (en) * | 1999-11-10 | 2004-02-10 | Nec Corporation | Object code compression using different schemes for different instruction types |
US6539470B1 (en) * | 1999-11-16 | 2003-03-25 | Advanced Micro Devices, Inc. | Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same |
US6496923B1 (en) * | 1999-12-17 | 2002-12-17 | Intel Corporation | Length decode to detect one-byte prefixes and branch |
US7124286B2 (en) * | 2000-01-14 | 2006-10-17 | Advanced Micro Devices, Inc. | Establishing an operating mode in a processor |
US7353368B2 (en) * | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
US6625724B1 (en) * | 2000-03-28 | 2003-09-23 | Intel Corporation | Method and apparatus to support an expanded register set |
JP3957948B2 (ja) * | 2000-04-12 | 2007-08-15 | 富士通株式会社 | 演算処理装置 |
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US6807622B1 (en) * | 2000-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Processor which overrides default operand size for implicit stack pointer references and near branches |
US7058791B1 (en) * | 2000-08-09 | 2006-06-06 | Advanced Micro Devices, Inc. | Establishing a mode indication responsive to two or more indications |
US7100028B2 (en) * | 2000-08-09 | 2006-08-29 | Advanced Micro Devices, Inc. | Multiple entry points for system call instructions |
US6581131B2 (en) * | 2001-01-09 | 2003-06-17 | Hewlett-Packard Development Company, L.P. | Method and apparatus for efficient cache mapping of compressed VLIW instructions |
US7624138B2 (en) * | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US7328328B2 (en) * | 2002-02-19 | 2008-02-05 | Ip-First, Llc | Non-temporal memory reference control mechanism |
US7395412B2 (en) * | 2002-03-08 | 2008-07-01 | Ip-First, Llc | Apparatus and method for extending data modes in a microprocessor |
US7447886B2 (en) * | 2002-04-22 | 2008-11-04 | Freescale Semiconductor, Inc. | System for expanded instruction encoding and method thereof |
US6957321B2 (en) * | 2002-06-19 | 2005-10-18 | Intel Corporation | Instruction set extension using operand bearing NOP instructions |
US7305542B2 (en) * | 2002-06-25 | 2007-12-04 | Intel Corporation | Instruction length decoder |
EP1530755B1 (en) * | 2002-08-16 | 2019-11-06 | Intel Corporation | Apparatus, method, and compiler enabling processing of variable length isntructions in a very long instruction word processor |
US7917734B2 (en) * | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US7421566B2 (en) * | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US20070038984A1 (en) * | 2005-08-12 | 2007-02-15 | Gschwind Michael K | Methods for generating code for an architecture encoding an extended register specification |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
JP2007226615A (ja) * | 2006-02-24 | 2007-09-06 | Matsushita Electric Ind Co Ltd | 情報処理装置、圧縮プログラム生成方法及び情報処理システム |
US7836278B2 (en) * | 2007-07-25 | 2010-11-16 | Advanced Micro Devices, Inc. | Three operand instruction extension for X86 architecture |
US8281109B2 (en) * | 2007-12-27 | 2012-10-02 | Intel Corporation | Compressed instruction format |
US7849294B2 (en) * | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Sharing data in internal and memory representations with dynamic data-driven conversion |
US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
WO2010084379A1 (en) * | 2009-01-21 | 2010-07-29 | Freescale Semiconductor, Inc. | Microprocessor architecture and method of instruction decoding |
US8918623B2 (en) * | 2009-08-04 | 2014-12-23 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US9411585B2 (en) * | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US9727336B2 (en) * | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
US20140281398A1 (en) * | 2013-03-16 | 2014-09-18 | William C. Rash | Instruction emulation processors, methods, and systems |
US9703562B2 (en) * | 2013-03-16 | 2017-07-11 | Intel Corporation | Instruction emulation processors, methods, and systems |
WO2019066798A1 (en) * | 2017-09-27 | 2019-04-04 | Intel Corporation | INSTRUCTIONS FOR NON-SIGNED MULTIPLICATION AND ACCUMULATION OF VECTORS OF NON-SIGNED DOUBLE WORDS |
US10635823B2 (en) * | 2018-01-12 | 2020-04-28 | Intel Corporation | Compiling techniques for hardening software programs against branching programming exploits |
-
2007
- 2007-12-27 US US11/965,669 patent/US8281109B2/en active Active
-
2008
- 2008-12-26 CN CN200810189862.8A patent/CN101533342B/zh not_active Expired - Fee Related
- 2008-12-26 CN CN201210328169.0A patent/CN103150140B/zh not_active Expired - Fee Related
-
2012
- 2012-09-07 US US13/607,594 patent/US8504802B2/en active Active
-
2013
- 2013-03-15 US US13/843,993 patent/US8756403B2/en active Active
-
2014
- 2014-06-17 US US14/307,468 patent/US9569208B2/en active Active
-
2017
- 2017-02-13 US US15/431,652 patent/US10095515B2/en active Active
-
2018
- 2018-10-09 US US16/155,028 patent/US11048507B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014735A (en) * | 1998-03-31 | 2000-01-11 | Intel Corporation | Instruction set extension using prefixes |
US6240506B1 (en) * | 1998-10-02 | 2001-05-29 | Advanced Micro Devices, Inc. | Expanding instructions with variable-length operands to a fixed length |
CN1846193A (zh) * | 2003-09-08 | 2006-10-11 | 英特尔公司 | 用于并行数据转换的方法、设备及指令 |
Also Published As
Publication number | Publication date |
---|---|
US20140310505A1 (en) | 2014-10-16 |
US8281109B2 (en) | 2012-10-02 |
US11048507B2 (en) | 2021-06-29 |
US10095515B2 (en) | 2018-10-09 |
US8504802B2 (en) | 2013-08-06 |
CN103150140A (zh) | 2013-06-12 |
CN101533342A (zh) | 2009-09-16 |
CN103150140B (zh) | 2016-08-31 |
US20130290682A1 (en) | 2013-10-31 |
US20120331271A1 (en) | 2012-12-27 |
US20090172356A1 (en) | 2009-07-02 |
US9569208B2 (en) | 2017-02-14 |
US8756403B2 (en) | 2014-06-17 |
US20190310846A1 (en) | 2019-10-10 |
US20180018170A1 (en) | 2018-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101533342B (zh) | 压缩指令格式 | |
US7966476B2 (en) | Determining length of instruction with escape and addressing form bytes without evaluating opcode | |
JP6058732B2 (ja) | ベクトルフレンドリ命令フォーマット及びその実行 | |
US5905893A (en) | Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set | |
TWI743058B (zh) | 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 | |
KR101559450B1 (ko) | 메모리 계층 내에 임베딩된 엔트로피 인코딩된 소프트웨어의 저장 및 전환을 위한 방법들 및 장치들 | |
US5896519A (en) | Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions | |
US7953955B2 (en) | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture | |
TWI514268B (zh) | 合併遮罩圖案之指令 | |
US6412066B2 (en) | Microprocessor employing branch instruction to set compression mode | |
CN103748550B (zh) | 用于存储熵编码指令序列及将其翻译成可执行形式的方法和设备 | |
KR20160001701A (ko) | 주파수 압축과 텍스처 파이프라인 | |
US5794010A (en) | Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor | |
JP2002533815A (ja) | 動的コンパクト命令を有するスケーラブル命令セットアーキテクチャのための方法及び装置 | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
WO2013166101A1 (en) | Managing buffer memory | |
JP2007226583A (ja) | ポインタの圧縮・伸張方法、これを実行するプログラム、及び、これを用いた計算機システム | |
CN109643235B (zh) | 用于多源混合操作的装置、方法和系统 | |
JP2006079451A (ja) | 情報処理装置及び情報処理方法 | |
Damme et al. | Lightweight techniques for compression and transformation | |
TW201017527A (en) | Instruction encoding method, instruction encoding system, and digital signal processor |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160427 Termination date: 20191226 |
|
CF01 | Termination of patent right due to non-payment of annual fee |