CN109416635A - 针对使用多个架构寄存器的指令的架构寄存器替换 - Google Patents

针对使用多个架构寄存器的指令的架构寄存器替换 Download PDF

Info

Publication number
CN109416635A
CN109416635A CN201780041397.0A CN201780041397A CN109416635A CN 109416635 A CN109416635 A CN 109416635A CN 201780041397 A CN201780041397 A CN 201780041397A CN 109416635 A CN109416635 A CN 109416635A
Authority
CN
China
Prior art keywords
register
architectural registers
instruction
processor
registers
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
CN201780041397.0A
Other languages
English (en)
Other versions
CN109416635B (zh
Inventor
M.J.查尼
R.瓦伦丁
M.B.吉尔卡
A.贾
B.L.托尔
E.奥尔德-艾哈迈德-瓦尔
J.科巴尔桑阿德里恩
J.W.布兰特
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN109416635A publication Critical patent/CN109416635A/zh
Application granted granted Critical
Publication of CN109416635B publication Critical patent/CN109416635B/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

处理器一方面包括用于解码指令的解码单元。所述指令要显式地指定第一架构寄存器,并且要隐式地指示至少第二架构寄存器。第二架构寄存器隐式地要处于比第一架构寄存器更高的寄存器编号。处理器还包括与解码单元耦合的架构寄存器替换单元。架构寄存器替换单元要以第三架构寄存器替换第一架构寄存器,并且要以第四架构寄存器替换第二架构寄存器。第三架构寄存器要处于比第一架构寄存器更低的寄存器编号。第四架构寄存器要处于比第二架构寄存器更低的寄存器编号。还公开了其它处理器,以及方法和系统。

Description

针对使用多个架构寄存器的指令的架构寄存器替换
技术领域
本文描述的实施例一般涉及处理器。具体地,本文描述的实施例一般涉及执行使用多个架构寄存器的指令的处理器。
背景技术
处理器一般具有指令集,其包括处理器能够执行的各种不同类型的指令。这些指令通常指定或以其它方式指示处理器的寄存器以识别操作数。由指令指示的这些寄存器一般称为架构寄存器。
附图说明
通过参考用于示出实施例的以下描述和附图,可以最好地理解本发明。在附图中:
图1是处理器的实施例的框图。
图2是示出使用具有隐式更高索引或编号寄存器的适合指令的一个示例的框图。
图3A-3B是示出寄存器环绕(wrap-around)的适合架构寄存器的示例实施例的框图。
图4是可以实现本发明的实施例的处理器的实施例的框图。
图5是执行指令(包括执行寄存器替换)的方法的实施例的流程框图。
图6是寄存器块替换单元的示例实施例的框图。
图7是根据一种可能方法的针对指令执行寄存器替换的方法的示例实施例的流程框图。
图8A是示出有序流水线的实施例和寄存器重命名无序发布/执行流水线的实施例的框图。
图8B是包括耦合到执行引擎单元的前端单元并且两者都耦合到存储器单元的处理器核的实施例的框图。
图9A是单个处理器核连同到管芯上互连网络的其连接以及连同2级(L2)高速缓存的其本地子集的实施例的框图。
图9B是图9A的处理器核的部分的展开图的实施例的框图。
图10是可以具有多于一个核、可以具有集成的存储器控制器,并且可以具有集成图形的处理器的实施例的框图。
图11是计算机架构的第一实施例的框图。
图12是计算机架构的第二实施例的框图。
图13是计算机架构的第三实施例的框图。
图14是计算机架构的第四实施例的框图。
图15是根据本发明的实施例的使用软件指令变换器将源指令集中的二进制指令变换为目标指令集中的二进制指令的框图。
具体实施方式
本文公开了替换寄存器的方法的实施例、寄存器替换单元的实施例、具有此类寄存器替换单元的处理器的实施例、结合一个或多个处理器以执行寄存器替换的系统的实施例。在以下描述中,阐述了许多特定细节(例如,特定指令操作、数据格式、处理器配置、微架构细节、操作顺序等)。然而,可以在没有这些特定细节的情况下实践实施例。在其它实例中,未详细示出众所周知的电路、结构和技术,以避免模糊对本描述的理解。
图1是处理器100的实施例的框图。处理器具有指令集架构(ISA)101。ISA表示与编程有关的处理器的架构的一部分,并且通常包括处理器的原生指令、架构寄存器、数据类型、寻址模式、存储器架构等等。ISA与微架构区分,其通常表示选择来实现ISA的具体处理器设计技术。
ISA包括架构寄存器106。每个寄存器可以表示操作以存储数据的管芯上或集成电路上存储位置。架构寄存器可以表示架构上可见寄存器,其对软件和/或编程器可见和/或其是由处理器的指令集102的指令指示以识别操作数的寄存器。这些架构寄存器与给定微架构中的其它非架构寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)形成对照。架构寄存器本文也可简称为寄存器。这些寄存器可以在不同的微架构中以不同的方式实现,并且不限于任何具体类型的设计。适合的类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器,以及其组合。
所示出的ISA还包括指令集102。指令集的指令可以表示处理器原生地能够执行(例如,解码和执行)的宏指令、机器语言指令等等,如与微指令或微操作(例如,从解码指令集的指令的解码器产生的那些)相对。每个指令可以具有指令格式,所述指令格式包括用于识别要执行的操作的操作代码或操作码,通常是一个或仅一些寄存器说明符(例如,字段或其它位集合)以指定寄存器操作数(例如,架构寄存器106中的独立寄存器),并且取决于指令,指定0个或多个各种其它类型的字段,例如诸如,立即数、前缀、操作限定符等。
通常,为了避免过度的指令长度(例如,可能使解码复杂)和/或由于由ISA施加的约束,指令中的寄存器说明符的数量通常不超过一些(例如,通常不超过约两个、三个或四个)。然而,对于一些指令和/或一些操作,可能期望能够使用附加寄存器。例如,这可以允许在执行单个指令的界限内从存储器读取更多数据或将更多数据存储到存储器。作为另一示例,这可以允许在执行单个指令的界限内在算术上、逻辑上或以其它方式处理更多数据。可以用于提供一个或多个附加寄存器而不将附加寄存器说明符引入到指令格式中的一种方法是要使寄存器对指令(例如,操作码)隐式、暗示或固有,而不是需要通过寄存器说明符使它们显式表达。如所示的,在一些实施例中,指令集可以包括具有隐式更高索引或编号的寄存器104的至少一个指令。为了进一步示出某些概念,将进一步详细描述具有隐式更高索引或编号的寄存器的适合指令的一个说明性示例。
图2是示出使用具有隐式更高索引或编号的寄存器的适合指令204的一个示例的框图。所述指令具有操作码210(例如,字段或其它位集合)以识别要执行的操作(例如,具体的算术、逻辑或其它操作)和/或指令,以及显式寄存器说明符212(例如,字段或其它位集合)以显式指定架构寄存器集合206中的寄存器(例如,在此示例中是给定寄存器R4)。操作码和显式寄存器说明符通常是连续的位,但是可以也是逻辑上表示操作码或说明符的非连续位。所述指令可以被提供到处理器200。处理器可以隐式地、暗示地或固有地理解(例如,从操作码210)除了指定的寄存器(例如,R4)之外,所述指令要使用(在此示例中)跟随指定寄存器的一个附加的更高索引或以其它方式编号的寄存器(例如,在增加寄存器索引、增加寄存器名称或以其它方式增加寄存器编号的方向上)。在此示例中,隐式更高编号的寄存器是隐式的下一顺序更高编号的寄存器(例如,R5),其顺序地紧跟指定的寄存器(例如,R4),尽管如果期望,也可以可选地使用其它关系(例如,跳过一个寄存器等)。虚线用于示出它可以对指令是隐式的(例如,对其操作码隐式),并且处理器可以理解(例如,从操作码),所述指令还具有隐式寄存器标识符214以指示更高编号的寄存器(例如,R5),即使实际指令可能不具有任何位(例如,非操作码位)来指定此附加更高编号的寄存器(例如,R5)。使用一个或多个此类隐式寄存器可以允许使用附加寄存器,即使指令格式和/或ISA不允许此类附加寄存器的显式指定。在此示例中,仅使用一个附加寄存器,尽管此类方法也可用于指示2、3、4、5、6、7、8或更多个寄存器。
再次参考图1,具有隐式更高索引或以其它方式编号的寄存器的指令104的一个特定适合示例是从存储器读取多个寄存器指令。从存储器读取多个寄存器指令可以显式地指定(例如,通过字段或其它位集合)单个目的地向量寄存器。此外,对指令可能隐式的(例如,对其操作码隐式)是也要使用一个或多个附加的跟随目的地向量寄存器(例如,顺序跟随单个指定的寄存器),尽管所述指令可能不具有任何非操作码位来显式指定这些寄存器。从存储器读取多个寄存器指令,当被执行时,可以使数据从存储在单个指定目的地向量寄存器以及一个或多个隐式指示的跟随目的地向量寄存器中的每个(例如,其可以顺序地跟随单个指定的寄存器)中存储的存储器读取。另一特定的适合示例是相似的存储多个寄存器到存储器指令,其可以执行从指定的源寄存器和一个或多个隐式跟随源寄存器到存储器的数据的存储。其它特定的适合示例是以相似方式从存储器读取或存储到存储器但是用于通用寄存器而不是向量寄存器的相似指令。又一特定的适合示例是将数据元素从存储器中的潜在非连续位置收集或以其它方式读取到显式指定的向量寄存器和至少一个隐式跟随向量寄存器的指令。进一步特定适合的示例是将数据元素从显式指定的向量寄存器和至少一个隐式跟随向量寄存器分散或以其它方式存储到存储器中的潜在非连续位置的指令。又一特定的合适示例是使用显式指定的通用或向量寄存器和至少一个相同类型的隐式跟随寄存器的算术指令。这些只是一些说明性示例。要意识到,本文公开的实施例可以用于具有至少一个隐式的更高索引或编号的寄存器的各种各样不同类型的指令。
再次参考图1,ISA还包括架构寄存器替换扩展108。如下面将进一步解释的,在一些实施例中,至少在某些条件下,架构寄存器替换扩展可以操作以替换具有不同架构寄存器的至少两个架构寄存器(例如,包括至少一个隐式的更高索引或编号的寄存器)。在一些实施例中,寄存器替换可以在向后方向上(例如,在减小寄存器索引,减小寄存器编号等的方向上)。在一些实施例中,可以以防止寄存器名称空间中的环绕的方式执行寄存器替换。
当处理具有隐式更高索引或编号的寄存器的指令时的一个挑战是寄存器名称空间中的环绕的可能性。当在ISA中执行此类指令时,此挑战可能进一步加重,所述ISA针对不同的操作模式定义或支持不同数量的架构寄存器。在此类情况下,寄存器名称空间中是否存在环绕可能取决于当前的操作模式。
图3A-3B是架构寄存器的适合示例实施例的框图,并且示出了寄存器名称空间中的环绕。图3A示出了八个128位单指令多数据(SIMD)架构寄存器306A(命名为XMM0到XMM7)的集合,对于大多数IA-32架构处理器,当在32位操作模式下操作时所述SIMD架构寄存器306A可用。考虑当在32位模式操作中时执行具有显式指定的寄存器XMM7和一个隐式下一顺序跟随寄存器的指令304A。由于指令指定了寄存器XMM7,因此下一顺序XMM寄存器将会是寄存器XMM8。然而,XMM8在32位模式下不存在。相应地,可以发生寄存器名称或寄存器索引空间中的翻转或其它环绕316,使得寄存器XMM0可以替代地用作隐式寄存器。在这种情况下可以使用寄存器XMM7和XMM0。
图3B示出了16个128位SIMD架构寄存器306B(命名为XMM0至XMM15)的集合,对于大多数Intel ®64架构处理器,当在64位操作模式中操作时所述SIMD架构寄存器306B可用。32个XMM寄存器(XMM0至XMM31)也可以在64位模式中可用,但为了说明的简单性,未示出。注意到,寄存器XMM8至XMM15在64位模式中可用,但在32位模式中不可用。换句话说,寄存器的数量从一个模式到另一个模式变化。考虑在64位模式操作中执行相同指令304B的另一实例。由于指令指定了寄存器XMM7,下一顺序XMM寄存器将会再次是寄存器XMM8。然而,寄存器XMM8确实存在于64位模式中。相应地,当在64位模式中执行指令时,寄存器名称或索引空间中将会不存在环绕或翻转。而是将会使用寄存器XMM7和XMM8。
相应地,寄存器名称或索引空间中的环绕或翻转可以在一种模式中发生,但不在另一模式中发生。当在不同的操作模式中执行指令时,此类模式相关的环绕可能引起不同的寄存器以及不同的结果生成。这一般是不期望的。针对其它类型的架构寄存器和/或在除了仅Intel架构之外的其它架构中这也可能发生,尤其是当在不同模式中存在不同数量的寄存器时。通常,预期编程器可以以将会避免此类环绕的方式明智地选择指定的寄存器。然而,存在编程错误的机会,这可能导致生成不正确或不一致的结果。
通常,处理器操作以处置此类情况可以是有用的和有益的,即使它们预期相对罕见。一种可能的方法将会是处理器包括检查逻辑(例如,上下文相关的故障和/或未定义的指令检查逻辑)以允许处理器检查将会用于指令的寄存器来查看是否将会发生此类环绕和/或针对在此类环绕的情况下与其它操作数的关联潜在交互而检查寄存器。然而,此类检查逻辑可倾向于具有某些缺点,例如诸如,设计和实现一般复杂,增加功耗,增加管芯面积,需要附加验证等等中的一个或多个。因此,其它方法将会是有用的和有益的。
本文描述的实施例可以允许处理器执行寄存器替换以替换用于指令的两个或更多个架构寄存器。作为一个特定的说明性示例,如果具有显式指定的寄存器XMM7和隐式下一顺序跟随寄存器XMM8的指令304A在32位模式操作中执行,则在一些实施例中,处理器可以用XMM6替换XMM7(例如,通过将XMM7寄存器的寄存器索引变换成XMM6寄存器的寄存器索引),并且可以用XMM7替换XMM8。有利地,这防止了环绕以及其先前描述的缺点。而且,这可以提供备选,使得可选地可以不存在包括前面提到的检查逻辑来检查环绕的需要,尽管如果期望,也可以可选地使用此类检查逻辑。同样地,在一些实施例中,如果在64位模式中执行相同指令,则处理器还可以用XMM6替换XMM7(例如,通过将XMM7寄存器的寄存器索引变换成XMM6寄存器的寄存器索引),以及可以用XMM7替换XMM8。这可以有助于防止在不同模式中使用不同的寄存器和/或在不同模式中生成不同的结果。这只是一个说明性的例子。预期备选实施例,在其中使用其它寄存器。
图4是可以实现本发明的实施例的处理器400的实施例的框图。处理器具有架构寄存器替换单元438的实施例。
在一些实施例中,处理器可以是通用处理器(例如,在桌上型、膝上型或其它计算机中使用的类型的通用微处理器或中央处理单元(CPU))。备选地,处理器可以是专用处理器。适合的专用处理器的示例包括但不限于网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可以具有各种复杂指令集计算(CISC)架构、精简指令集计算(RISC)架构、超长指令字(VLIW)架构、混合架构、其它类型的架构中的任何一个,或者具有不同架构的组合(例如,不同的核可能具有不同的架构)。在一些实施例中,处理器可以包括设置在至少一个集成电路或半导体管芯上。在一些实施例中,处理器可以包括至少一些硬件(例如,晶体管、电容器、二极管、电路、存储微代码的非易失性存储器等等)。
处理器包括寄存器集合406。在所示示例中,这些包括寄存器R0至RN,其中可以可选地实现针对具体实现所期望的任何合理数量的寄存器。通常,可以存在从大约8个到大约64个寄存器,尽管本发明的范围不这样限制。这些寄存器可以表示架构寄存器。每个寄存器可以表示操作以存储数据的管芯上或集成电路上存储位置。这些寄存器可以在不同的微架构中以不同的方式实现,并且不限于任何具体类型的设计。适合类型的寄存器的示例包括但不限于专用物理寄存器,使用寄存器重命名的动态分配的物理寄存器,以及其组合。适合的寄存器集合的特定示例包括但不限于图3A-B的寄存器306A和/或306B,尽管本发明的范围不这样限制。
在操作期间,处理器400可以接收指令404。所述指令可以表示宏指令、机器语言指令或处理器的指令集的其它指令或控制信号。所述指令具有操作码410(例如,字段或者连续或非连续位的其它集合)以识别要执行的操作(例如,特定的算术,逻辑或其它操作)和/或指令。所述指令还具有至少一个显式寄存器说明符412(例如,字段或者连续或非连续位的其它集合)以显式地指定架构寄存器集合406中的至少第一架构寄存器。显式指定的寄存器可以不同地用于源操作数、目的地操作数,或初始用于源操作数,以及稍后用于目的地操作数。
在一些实施例中,指令还可以具有架构寄存器集合406中的至少一个隐式第二架构寄存器。在一些实施例中,第二架构寄存器可以隐式地处于比第一架构寄存器更高的寄存器索引或编号。至少一个隐式的更高索引寄存器可以用于指令的源操作数或目的地操作数。在各种实施例中,可以可选地存在1、2、3、4、5、6、7、8或更多个此类隐式更高索引的寄存器。处理器可以固有地或以其它方式隐式地理解(例如,从操作码410)所述指令要使用至少一个隐式的更高索引的寄存器,即使所述指令可能不具有任何非操作码位来显式指定至少一个隐式更高索引或编号的寄存器。在一些实施例中,隐式更高寄存器可以可选地是顺序地紧跟指定寄存器的隐式更高下一顺序寄存器索引或编号,尽管本发明的范围不这样限制。
再次参考图4,处理器包括解码单元或解码器430。解码单元可以接收并解码指令404。解码单元可以输出一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码指令或控制信号等),其反映、表示和/或从相对更高级指令404导出。在一些实施例中,解码单元可以包括用于接收指令404的一个或多个输入结构(例如,一个或多个端口、一个或多个互连、接口),与其耦合以辨别和解码指令404的指令辨别和解码逻辑,以及与其耦合以输出一个或多个较低级指令或一个或多个控制信号的一个或多个输出的结构(例如,一个或多个端口、一个或多个互连、接口)。解码单元可以使用各种不同的机制来实现,包括但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)以及适合于实现解码单元的其它机制。在一些实施例中,解码单元可以包括在管芯上(例如,在具有执行单元436的管芯上)。在一些实施例中,解码单元可以包括至少某一硬件(例如,晶体管、集成电路或管芯上固件等)。
在一些实施例中,解码可以允许解码器和/或处理器确定要执行的具体指令和/或操作(例如,基于操作码)。例如,操作码可以指示是否要使用隐式的更高索引或编号的寄存器,指令编码的哪些位提供指定的寄存器索引等。解码还可以允许解码器和/或处理器确定指令是否具有任何隐式寄存器,以及如果有,有多少,以及它们与其关联指定的寄存器的关系(例如,如果它们是下一顺序跟随寄存器或其它东西)。在一些实施例中,此类因素可以对指令(例如,操作码)是固定或隐式的。在一些实施例中,在指令404(其具有至少一个隐式的更高索引或编号的寄存器)的情况下,解码器可操作以输出或以其它方式提供一个或多个相对较低级的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点、解码指令或控制信号等),其反映、表示和/或从相对较高级指令404导出到架构寄存器替换单元438。
架构寄存器替换单元438可以与解码单元430耦合。在一些实施例中,架构寄存器替换单元可以操作(例如,响应于指令,响应于基于指令的来自解码单元的控制等)以用第三架构寄存器替换显式指定的第一架构寄存器,并用第四架构寄存器替换隐式指示的第二架构寄存器。在一些实施例中,第三架构寄存器可以处于比第一架构寄存器更低的寄存器索引或编号。在一些实施例中,第四架构寄存器可以处于比第二架构寄存器更低的寄存器索引或编号。作为一个说明性示例,显式指定的第一寄存器可以是寄存器RN,隐式更高的第二寄存器将会是寄存器RN + 1(其针对所示出的寄存器集合不被支持,并且因此将会存在寄存器环绕),替换第三寄存器可以是寄存器RN-1,并且替换第四寄存器可以是寄存器RN。作为示例,在一些实施例中,可以通过将第一架构寄存器的寄存器索引或标识符变换成第三架构寄存器的寄存器索引或标识符(例如,通过屏蔽掉第一架构寄存器的寄存器索引或标识符的一个或多个最低阶位)来实现此类寄存器替换,如下面将进一步描述的。
在一些实施例中,由指令指示的原始/初始寄存器可以是顺序寄存器的块,并且替换寄存器可以是已经作为群组被移动或重新定位到相对较低的寄存器索引或编号的顺序寄存器的块。在一些实施例中,从原始/初始块的原始/初始基址架构寄存器的替换块的替换基址架构寄存器的偏移量或位移量(例如,在寄存器数量方面)可以基于和/或取决于在执行指令时要使用的多个顺序架构寄存器。在一些实施例中,替换寄存器可以维持与它们对应的初始/原始寄存器(例如,由指令指示的那些)彼此具有的相同的彼此的相对排序或关系。
在一些实施例中,这可以采用替换寄存器块在支持数量的架构寄存器内适合而没有从最高架构寄存器到最低架构寄存器的寄存器环绕的方式来完成,而在没有寄存器替换的情况下此类寄存器环绕可以已经在至少一种操作模式中发生。此外,这可以可选地有助于避免需要必须具有上面描述的类型的检查逻辑以及关联的潜在缺点,尽管如果期望,可以可选地包括此类检查逻辑。
寄存器替换单元438可以用硬件(例如,集成电路、晶体管或其它电路元件等)、固件(例如,ROM、EPROM、闪存或其它持久或非易失性存储器和微代码、微指令或存储在其上的其它较低级指令)、软件(例如,存储在存储器中的较高级指令)或其组合(例如,与固件和/或软件中的一个或多个潜在地组合的硬件)来实现。
执行单元436与解码单元430和寄存器406耦合。在一些实施例中,执行单元可以在管芯或集成电路上(例如,在具有解码单元的集成电路或管芯上)。执行单元可以接收表示指令404和/或从指令404导出的一个或多个解码的或以其它方式变换的指令或控制信号。执行单元响应于指令404和/或作为指令404的结果(例如,响应于从指令解码的一个或多个指令或控制信号和/或响应于指令被解码和/或响应于指令被提供给解码器)而操作以执行与指令关联的操作。上面描述的各种不同类型的指令和操作以及其它类型是适合的。在一些实施例中,执行单元可以替代地使用如上面所描述地确定的替换架构寄存器(或用于实现这些替换架构寄存器的重命名逻辑寄存器),而不是使用初始或原始指定的或由指令404以其它方式指示的架构寄存器。
执行单元和/或处理器可以包括操作以执行指令404的特定或具体逻辑(例如,晶体管、集成电路或潜在地与固件(例如,存储在非易失性存储器中的指令)和/或软件组合的其它硬件)。作为示例,取决于具体指令,适合的执行单元包括但不限于算术单元、算术逻辑单元、执行算术和逻辑操作的数字电路、融合乘加单元、存储器执行单元、加载单元、存储单元、存储器访问单元等等。在一些实施例中(例如,在算术指令的情况下),执行单元可以包括一个或多个输入结构(例如,一个或多个端口、一个或多个互连、接口)以接收一个或多个源操作数、与其耦合的逻辑或电路以接收和处理一个或多个源操作数并生成一个或多个结果操作数,以及与其耦合的一个或多个输出结构(例如,一个或多个端口、一个或多个互连、接口)以输出一个或多个结果操作数。
为了避免模糊描述,已经示出并描述了相对简单的处理器400。然而,处理器可以可选地包括其它处理器组件。例如,各种不同的实施例可以包括针对图8-10中的任何一个示出和描述的组件的各种不同的组合和配置。处理器的所有组件可以耦合在一起以允许它们按预计操作。
图5是执行指令以及执行寄存器替换的方法544的实施例的流程框图。在各种实施例中,所述方法可以由处理器、指令处理设备、数字逻辑装置或集成电路执行。在一些实施例中,方法544可以由图4的处理器400和/或通过图4的处理器400和/或使用图4的指令404执行。本文针对处理器400和/或指令404描述的组件、特征和特定可选细节也可选地应用于方法544。备选地,方法544可以由类似或不同的处理器或设备和/或在类似或不同的处理器或设备内和/或使用类似或不同的指令来执行。此外,处理器400可以执行与方法544相同、类似或不同的方法。
所述方法包括在框545接收指令。在各种方面,可以在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收指令。在各种方面,可以从处理器外和/或管芯外源(例如,从存储器、互连等)或从处理器上和/或管芯上源(例如,从指令高速缓存、指令队列等)接收指令。所述指令可以显式地指定第一架构寄存器并隐式地指示至少第二架构寄存器。第二架构寄存器可以隐式地处于比第一架构寄存器更高的寄存器索引或编号。
在框546,可以用处于比第一架构寄存器更低的寄存器索引或编号的第三架构寄存器替换第一架构寄存器。在框546,可以用处于比第二架构寄存器更低的寄存器索引或编号的第四架构寄存器替换第二架构寄存器。
在一些实施例中,替换寄存器的选择和/或从顺序寄存器块的初始/原始显式指定的基址寄存器的、替换基址替换寄存器(例如处于块中的最低索引或编号)的偏移量或位移量(例如,在寄存器编号、寄存器索引、寄存器标识符值等方面)可以至少部分地基于由指令指示的顺序寄存器块中的寄存器的数量。在一些实施例中,替换寄存器的选择和/或从顺序寄存器块的初始/原始显式指定的基址寄存器的、替换基址替换寄存器的偏移量或位移量可以足够或充足以保持寄存器的块中的最大或最高寄存器免于超过在操作模式中支持的最大或最高编号寄存器,以防止环绕到最小或最低寄存器。
为了进一步示出某些概念,将描述用于确定替换寄存器的一种适合方法的详细示例实施例,尽管本发明的范围不仅限于仅此方法。在一些实施例中,可以通过基于或根据由指令所使用的寄存器的指示的顺序寄存器块中的寄存器的数量屏蔽掉(例如,设置为零)指定寄存器索引的零个或更多个最低有效(例如最低排序的)位来从指定的寄存器索引或其它标识符(例如,索引或以其它方式识别寄存器和/或提供寄存器编号的位集合)导出或确定替换寄存器。可以将指定的寄存器索引或标识符变换或修改成新的索引或标识符以实现替换。在一些实施例中,要屏蔽掉的最低有效位的数量可以与以下等式1一致。
掩码 =(1 << ceiling(log2(number_of_registers)))- 1 等式1
在此等式中,“number_of_registers”指由指令所使用的指示的顺序寄存器块中的寄存器的数量,“log2”指以2为底对数,以及“ceiling”指用于舍入其操作数直到下一更高的整数值的操作。要意识到,这仅是适合的等式的一个说明性示例,并且本发明的范围不仅限于此等式。例如,可以可选地针对包括每一个备选寄存器的寄存器块导出其它等式。作为另一示例,可以可选地使用更简单的方法或试探,例如诸如,在将会存在环绕的情况下总是以最低数量的寄存器开始。其它方法对于本领域技术人员将是显而易见的并且具有本公开的益处。
表1列出了中间量“ceiling(log2(n))”的若干说明性评估以及范围从1到8的“number_of_registers”(n)的若干说明性值的“掩码”。在此表中,“0b”指二进制数,并且掩码的最低有效位在右手侧。
表1. 不同数量的顺序寄存器的示例掩码值
number_of_registers (n) ceiling(log2(n)) 掩码
1 0 0 = 0b00000
2 1 1 = 0b00001
3 2 3 = 0b00011
4 2 3 = 0b00011
5 3 7 = 0b00111
6 3 7 = 0b00111
7 3 7 = 0b00111
8 3 7 = 0b00111
在一些实施例中,“ceiling(log2(n))”的值可以表示要屏蔽掉(例如,设置为零、视为零等)的针对顺序寄存器块的基址的指定的寄存器索引或标识符的最低有效(例如,最低排序的)位的数量(例如,索引或识别寄存器的位集合)。如所示的,如果指令仅指示一个寄存器,则可能不屏蔽掉任何位(例如,在这种情况下,未确定替换寄存器),如果指令指示两个顺序寄存器,则可以屏蔽掉一个位,如果指令指示三个或四个顺序寄存器则可以屏蔽掉两个位,如果指令指示五个、六个、七个或八个顺序寄存器,则可以屏蔽掉三个位,依此类推。
注意到,掩码中具有二进制1值的设置位的数量等于表的每个行的“ceiling(log2(n))”的值。掩码可以表示二进制值,其至少在概念上可以与针对顺序寄存器块的基址的指定寄存器索引的二进制值逻辑组合,以确定针对顺序寄存器块的替换基址的替换寄存器索引。例如,至少在概念上,可以使用以下等式2:
replacement_reg_id_base = specified_reg_id_base AND(NOT 掩码) 等式 2
在此等式中,“掩码”指由等式1确定的掩码,“AND”是指逻辑AND操作,“specified_reg_id_base”指由指令指定的寄存器块的基址的寄存器索引或其它标识符以及“replacement_reg_id_base”指在执行指令时要使用的寄存器块的基址的替换寄存器索引或其它标识符。
图6是架构寄存器块替换单元638的示例实施例的框图。在操作期间,当检测到使用顺序寄存器块的指令时,寄存器块替换单元可以接收顺序架构寄存器块的指定的基址架构寄存器索引612,以及顺序架构寄存器块中的多个顺序架构寄存器。寄存器块替换单元包括基址架构寄存器替换单元652。在一些实施例中,替代为每个指令重新生成前面提到的掩码,以及将掩码与每个指令的指定寄存器标识符逻辑组合,基址寄存器替换单元可以实现逻辑654,其将块中的顺序架构寄存器650的数量与要屏蔽掉(例如,视为零)的指定的基址寄存器索引612的最低有效位(LSB)的数量相关。在说明中以表格形式示出的逻辑通常可以采用状态机等等的形式。逻辑可以采用硬件、固件、软件、或其组合来实现(例如,潜在/可选地与某一软件组合的至少某一硬件和/或固件)。根据所述逻辑,如果顺序架构寄存器650的数量是2,则可以屏蔽掉指定的基址寄存器索引的一个最低有效位。如果顺序架构寄存器的数量是三个或四个,则可以屏蔽掉指定的基址寄存器索引的两个最低有效位。如果顺序架构寄存器的数量是五到八个,则可以屏蔽掉指定的基址寄存器索引的三个最低有效位。如果顺序架构寄存器的数量是9到16个,则可以屏蔽掉指定的基址寄存器索引的4个最低有效位。作为示例,基址架构寄存器替换单元可以通过简单地查看用于递送未被屏蔽掉的指定基址寄存器索引的那些线或其它互连来实现此,并且假设对应于被屏蔽掉的最低有效位的其它线或互连被清除为零或设置为二进制低值。基址架构寄存器替换单元可以输出所确定的替换基址架构寄存器索引656。
架构寄存器块替换单元还包括架构寄存器索引增量单元658。寄存器索引增量单元可以接收所确定的替换基址寄存器索引656以及顺序寄存器650的数量。对于跟随基址寄存器之后的块中的每个顺序寄存器,寄存器索引增量单元可以将替换基址寄存器索引增量1以将下一顺序架构寄存器确定为替换寄存器。例如,来自块中“replacement_reg_id_base”的下一寄存器可以表示“replacement_reg_id_base”+ 1,依此类推。这可以有效地将整个顺序寄存器块作为群组移位或移动。单元658可以输出一个或多个替换顺序架构寄存器索引660。
图7是针对指令执行寄存器替换的方法764的示例实施例的流程框图。在各种实施例中,所述方法可以由处理器、指令处理设备、数字逻辑装置或集成电路执行。在一些实施例中,方法764可以由图4的处理器400和/或通过图4的处理器400和/或使用图4的指令404执行。本文针对处理器400和/或指令404描述的组件、特征和特定可选细节还可选地应用于方法764。备选地,方法764可以由类似或不同的处理器或设备和/或在类似或不同的处理器或设备内和/或使用类似或不同的指令来执行。此外,处理器400可以执行与方法764相同、类似或不同的方法。
所述方法包括在框765接收指令。在一些实施例中,指令可具有寄存器说明符以显式指定用于数量(N)顺序架构寄存器的块的基址架构寄存器。
在框766,如果顺序架构寄存器的数量(N)是2,则可以屏蔽掉(例如,假设为零)寄存器说明符的一个最低有效位以获得替换基址架构寄存器。备选地,在框767,如果顺序寄存器的数量(N)是三或四,则可以屏蔽掉寄存器说明符的两个最低有效位以获得替换基址寄存器。或者,在框768,如果顺序寄存器的数量(N)是5到8,则可以屏蔽掉寄存器说明符的三个最低有效位以获得替换基址寄存器。备选地,在框769,如果顺序寄存器的数量(N)是9到16,则可以屏蔽掉寄存器说明符的4个最低有效位以获得替换基址寄存器。
在框770,可以针对在确定的替换基址寄存器开始的N个顺序寄存器的块执行指令。这些寄存器可以表示架构寄存器。在一些实施例中,可以可选地在替换架构寄存器(而不是在替换之前原始/初始指示的架构寄存器)上执行寄存器重命名。
表2包括用于说明性工作示例的数据。此示例假设存在使用四个顺序寄存器的块的指令(例如,INSTRUCTION4 xmm *),以及指定块xmm *的基址寄存器。在考虑的四种不同情形中,块(xmm *)的指定基址是xmm4、xmm5、xmm6或xmm7。示出了xmm4-xmm7的不同对应寄存器说明符。在每种情况下,块中的寄存器数量是相同的,在这种情况下是四个。相应地,基于等式1,相同的掩码值、掩码和要屏蔽掉的最低有效位(LSB)的数量是相同的,如表中所示的。当针对xmm4-xmm7的每个寄存器说明符的两个最低有效位被屏蔽掉(例如,假设为零)时,获得相同的替换寄存器说明符。此替换寄存器说明符识别相同的基址寄存器xmm4。在替换基址寄存器是xmm4的情况下,四个寄存器块可以在寄存器xmm4-xmm7范围内。有利地,替换寄存器的选择防止了的环绕(其中块在32位操作模式中将会环绕或翻转到xmm0)。
表2. 使用四个顺序寄存器的块的指令的示例
指定的寄存器 寄存器说明符 寄存器数量 掩码值 掩码 要屏蔽掉的LSB 替换寄存器说明符 替换基址寄存器
xmm4 00100 4 3 00011 2 00100 xmm4
xmm5 00101 4 3 00011 2 00100 xmm4
xmm6 00110 4 3 00011 2 00100 xmm4
xmm7 00111 4 3 00011 2 00100 xmm4
示范核架构、处理器和计算机架构
处理器核可按照不同方式为了不同目的并且在不同的处理器中实现。例如,此类核的实现可包括:1) 预计用于通用计算的通用有序核;2) 预计用于通用计算的高性能通用无序核;3) 主要预计用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1) CPU,包括预计用于通用计算的一个或多个通用有序核和/或预计用于通用计算的一个或多个通用无序核;以及2) 协处理器,包括主要预计用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,其可包括:1) 与CPU分开的芯片上的协处理器;2) 在与CPU相同的封装中的单独管芯上的协处理器;3) 与CPU相同的管芯上的协处理器(在这种情况下,此类协处理器有时称作专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者称作专用核);以及4) 可在相同管芯上包括所描述的CPU(有时称作一个或多个应用核或一个或多个应用处理器)、上面描述的协处理器和附加功能性的片上系统。接下来描述示范核架构,之后接着示范处理器和计算机架构的描述。
示范核架构
有序和无序核框图
图8A是示出根据本发明的实施例的示范有序流水线和示范寄存器重命名、无序发布/执行流水线两者的框图。图8B是示出根据本发明的实施例的要包括在处理器中的有序架构核的示范实施例和示范寄存器重命名、无序发布/执行架构核两者的框图。图8A-B中的实线框示出有序流水线和有序核,而虚线框的可选添加示出寄存器重命名、无序发布/执行流水线和核。给定有序方面是无序方面的子集,将描述无序方面。
在图8A中,处理器流水线800包括获取阶段802、长度解码阶段804、解码阶段806、分配阶段808、重命名阶段810、调度(又称作分派或发布)阶段812、寄存器读取/存储器读取阶段814、执行阶段816、写回/存储器写入阶段818、异常处置阶段822和提交阶段824。
图8B示出包括耦合到执行引擎单元850并且均耦合到存储器单元870的前端单元830的处理器核890。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或备选核类型。作为又一选项,核890可以是专用核,例如诸如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元830包括耦合到指令高速缓存单元834的分支预测单元832,指令高速缓存单元834耦合到指令翻译后援缓冲器(TLB) 836,指令翻译后援缓冲器(TLB) 836耦合到指令获取单元838,指令获取单元838耦合到解码单元840。解码单元840(或解码器)可对指令进行解码,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,其从原始指令来解码或导出或者以其它方式反映原始指令。解码单元840可使用各种不同的机制来实现。适合机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括微代码ROM或其它介质,其存储某些宏指令的微代码(例如在解码单元840中或者以其它方式在前端单元830内)。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,其耦合到引退单元854和一个或多个调度器单元856的集合。一个或多个调度器单元856表示任何数量的不同调度器,包括保留站、中央指令窗口等。一个或多个调度器单元856耦合到一个或多个物理寄存器堆单元858。物理寄存器堆单元858的每个表示一个或多个物理寄存器堆,其中不同的寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中物理寄存器堆单元858包括向量寄存器单元、写入屏蔽寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量屏蔽寄存器和通用寄存器。一个或多个物理寄存器堆单元858被引退单元854重叠,以示出可实现寄存器重命名和无序执行的各种方式(例如使用一个或多个重排序缓冲器和一个或多个引退寄存器堆;使用一个或多个将来堆、一个或多个历史缓冲器和一个或多个引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元854和一个或多个物理寄存器堆单元858耦合到一个或多个执行集群860。一个或多个执行集群860包括一个或多个执行单元862的集合和一个或多个存储器访问单元864的集合。执行单元862可执行各种操作(例如移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)来执行。虽然一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其它实施例可以仅包括一个执行单元或多个执行单元,其全部执行全部功能。一个或多个调度器单元856、一个或多个物理寄存器堆单元858和一个或多个执行集群860示出为可能是多个的,因为某些实施例创建针对某些类型的数据/操作的单独流水线(例如标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线(其各自具有其自己的调度器单元)、物理寄存器堆单元和/或执行集群—以及在单独存储器访问流水线的情况下,实现只有这个流水线的执行集群具有一个或多个存储器访问单元864的某些实施例)。还应该理解,在使用单独流水线的情况下,这些流水线的一个或多个可以是无序发布/执行,并且其余的是有序的。
存储器访问单元864的集合耦合到存储器单元870,其包括耦合到数据高速缓存单元874(其耦合到2级(L2)高速缓存单元876)的数据TLB单元872。在一个示范实施例中,存储器访问单元864可包括加载单元、存储地址单元和存储数据单元,其的每个耦合到存储器单元870中的数据TLB单元872。指令高速缓存单元834还耦合到存储器单元870中的2级(L2)高速缓存单元876。L2高速缓存单元876耦合到一个或多个其它级的高速缓存,并且最终耦合到主存储器。
作为示例,示范寄存器重命名、无序发布/执行核架构可按如下所述实现流水线800:1) 指令获取838执行获取和长度解码阶段802和804;2)解码单元840执行解码阶段806;3) 重命名/分配器单元852执行分配阶段808和重命名阶段810;4) 一个或多个调度器单元856执行调度阶段812;5)一个或多个物理寄存器堆单元858和存储器单元870执行寄存器读取/存储器读取阶段814;执行集群860执行执行阶段816;6) 存储器单元870和一个或多个物理寄存器堆单元858执行写回/存储器写入阶段818;7)各种单元可在异常处置阶段822中涉及;以及8) 引退单元854和一个或多个物理寄存器堆单元858执行提交阶段824。
核890可支持一个或多个指令集(例如x86指令集(具有随较新版本已经添加的一些扩展);Sunnyvale,CA的MIPS Technologies的MIPS指令集;Sunnyvale,CA的ARMHoldings的ARM指令集(具有可选附加扩展,例如NEON)),包括本文所描述的一个或多个指令。在一个实施例中,核890包括支持打包数据指令集扩展的逻辑(例如AVX1、AVX2),由此允许由许多多媒体应用所使用的操作使用打包数据来执行。
应该理解,核可支持多线程(执行操作或线程的两个或更多并行集合),并且可按照多种方式这样进行,包括时间切片多线程、同时多线程(其中单个物理核为物理核同时多线程的线程的每个提供逻辑核)或者其组合(例如,诸如在Intel®超线程技术中的时间切片获取和解码以及此后的同时多线程)。
虽然在无序执行的上下文中描述寄存器重命名,但是应该理解,寄存器重命名可用于有序架构中。虽然处理器的所示实施例还包括单独指令和数据高速缓存单元834/874和共享L2高速缓存单元876,但是备选实施例可具有用于指令和数据两者的单个内部高速缓存,例如诸如1级(L1)内部高速缓存或者多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存全部可以在核和/或处理器外部。
特定示范有序核架构
图9A-B示出更特定的示范有序核架构的框图,该核将会是芯片中的若干逻辑块(包括相同类型和/或不同类型的其它核)中的一个。取决于应用,逻辑块通过具有某一固定功能逻辑、存储器I/O接口和其它必要I/O逻辑的高带宽互连网络(例如环形网络)进行通信。
图9A是根据本发明的实施例的单个处理器核连同到管芯上互连网络902的其连接以及连同其2级(L2)高速缓存904的本地子集的框图。在一个实施例中,指令解码器900支持具有打包数据指令集扩展的x86指令集。L1高速缓存906允许对高速缓冲存储器的低延迟访问到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元908和向量单元910使用单独寄存器集合(分别为标量寄存器912和向量寄存器914),以及在它们之间所传递的数据被写入到存储器并且然后从1级(L1)高速缓存906读回,但是本发明的备选实施例可使用不同方法(例如使用单个寄存器集合,或者包括允许数据在两个寄存器堆之间来传递而没有被写入和读回的通信路径)。
L2高速缓存904的本地子集是全局L2高速缓存(其划分为单独本地子集,每处理器核一个)的部分。每个处理器核具有到L2高速缓存904的其自己的本地子集的直接访问路径。由处理器核所读取的数据存储在其L2高速缓存子集904中,并且能够被与访问其自己的本地L2高速缓存子集的其它处理器核并行地快速访问。由处理器核所写入的数据存储在其自己的L2高速缓存子集904中,并且如果需要则从其它子集来转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以便允许诸如处理器核、L2高速缓存和其它逻辑块的代理在芯片内彼此通信。每个环形数据路径每方向为1012位宽。
图9B是根据本发明的实施例的图9A中的处理器核的部分的展开图。图9B包括L1高速缓存904的L1数据高速缓存906A部分以及与向量单元910和向量寄存器914有关的更多细节。具体来说,向量单元910是16宽向量处理单元(VPU)(参见16宽ALU 928),其执行整数、单精度浮点和双精度浮点指令的一个或多个。VPU支持通过拌和(swizzle)单元920来拌和寄存器输入、通过数字变换单元922A-B的数字变换以及通过复制单元924对存储器输入的复制。写入屏蔽寄存器926允许断定所产生向量写入。
具有集成存储器控制器和图形的处理器
图10是根据本发明的实施例的可具有多于一个核、可具有集成存储器控制器并且可具有集成图形的处理器1000的框图。图10中的实线框示出具有单个核1002A、系统代理1010、一个或多个总线控制器单元1016的集合的处理器1000,而虚线框的可选添加示出具有多个核1002A-N、系统代理单元1010中的一个或多个集成存储器控制器单元1014的集合和专用逻辑1008的备选处理器1000。
因此,处理器1000的不同实现可包括:1) 具有作为集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1008以及作为一个或多个通用核(例如通用有序核、通用无序核、两者的组合)的核1002A-N的CPU;2) 具有作为主要预计用于图形和/或科学(吞吐量)的大量专用核的核1002A-N的协处理器;以及3) 具有作为大量通用有序核的核1002A-N的协处理器。因此,处理器1000可以是通用处理器、协处理器或专用处理器,例如诸如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等等。处理器可在一个或多个芯片上实现。处理器1000可以是一个或多个衬底的一部分和/或可使用多种处理技术的任何一种(例如诸如BiCMOS、CMOS或NMOS)在一个或多个衬底上实现。
存储器分层结构包括核内的一级或多级高速缓存、一个或多个共享高速缓存单元1006或共享高速缓存单元集合,以及耦合到集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可包括一个或多个中间级高速缓存,例如2级(L2)、3级(L3)、4级(L4)或者其它级高速缓存、末级高速缓存(LLC)和/或其组合。虽然在一个实施例中,基于环的互连单元1012互连集成图形逻辑1008、共享高速缓存单元1006的集合和系统代理单元1010/一个或多个集成存储器控制器单元1014,但是备选实施例可将任何数量的众所周知技术用于互连此类单元。在一个实施例中,在一个或多个高速缓存单元1006与核1002A-N之间保持一致性。
在一些实施例中,核1002A-N的一个或多个能够进行多线程。系统代理1010包括协调和操作核1002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括用于调节核1002A-N和集成图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构指令集方面可以是同构或异构的;即,核1002A-N的两个或更多可以能够执行相同指令集,而其它核可以能够仅执行那个指令集的子集或者不同的指令集。
示范计算机架构
图11-14是示范计算机架构的框图。用于膝上型、桌上型、手持PC、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器,数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携媒体播放器、手持装置和各种其它电子装置的本领域已知的其它系统设计和配置也是适合的。一般来说,能够结合如本文所公开的处理器和/或其它执行逻辑的大量系统或电子装置一般是适合的。
现在参考图11,所示的是根据本发明的一个实施例的系统1100的框图。系统1100可包括一个或多个处理器1110、1115,其耦合到控制器中枢1120。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(GMCH)1190和输入/输出中枢(IOH)1150(其可在单独芯片上);GMCH 1190包括存储器和图形控制器(存储器1140和协处理器1145与其耦合);IOH1150将输入/输出(I/O)装置1160耦合到GMCH 1190。备选地,存储器和图形控制器的一个或两者集成在处理器内(如本文所描述的),存储器1140和协处理器1145直接耦合到处理器1110以及具有IOH 1150的单个芯片中的控制器中枢1120。
附加处理器1115的可选性质在图11中通过虚线表示。每个处理器1110、1115可包括本文所描述的处理核的一个或多个,并且可以是处理器1000的某一版本。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者两者的组合。对于至少一个实施例,控制器中枢1120经由多点总线(例如前侧总线(FSB))、点对点接口(例如快速路径互连(QPI))或者类似连接1195与一个或多个处理器1110、1115进行通信。
在一个实施例中,协处理器1145是专用处理器,例如诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器中枢1120可包括集成图形加速器。
在包括架构、微架构、热、功耗特性等等的衡量度量范围方面,在物理资源1110、1115之间能够存在各种差异。
在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1110将这些协处理器指令辨别为应该由所附连的协处理器1145来执行的类型。相应地,处理器1110在协处理器总线或其它互连上向协处理器1145发布这些协处理器指令(或者表示协处理器指令的控制信号)。一个或多个协处理器1145接受并执行所接收的协处理器指令。
现在参考图12,所示的是根据本发明的实施例的第一更特定示范系统1200的框图。如图12中所示的,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250所耦合的第一处理器1270和第二处理器1280。处理器1270和1280的每个可以是某一版本的处理器1200。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1080分别是处理器1110、协处理器1145。
示出处理器1270和1280分别包括集成存储器控制器(IMC)单元1272和1282。处理器1270还包括作为其总线控制器单元的部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可使用点对点(P-P)接口电路1278、1288经由P-P接口1250来交换信息。如图12中所示的,IMC 1272和1282将处理器耦合到相应存储器(即存储器1232和存储器1234),其可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280各自可使用点对点接口电路1276、1294、1286、1298经由独立P-P接口1252、1254与芯片集1290交换信息。芯片集1290可选地可经由高性能接口1239与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,例如诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享高速缓存(未示出)可包括在任一处理器中或者两个处理器外部(但是仍然经由P-P互连与处理器连接),使得如果将处理器置入低功率模式,则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
芯片集1290可经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线或者例如PCI Express总线的总线或另一第三代I/O互连总线(尽管本发明的范围不这样限制)。
如图12中所示的,各种I/O装置1214可连同总线桥1218(其将第一总线1216耦合到第二总线1220)耦合到第一总线1216。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,诸如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其它处理器的一个或多个附加处理器1215耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线1220,包括例如键盘和/或鼠标1222、通信装置1227以及可包括指令/代码和数据1230的存储单元1228(诸如磁盘驱动器或其它大容量存储装置)。此外,音频I/O 1224可耦合到第二总线1220。注意到其它架构是可能的。例如,系统可实现多点总线或其它此类架构,而不是图12的点对点架构。
现在参考图13,所示的是根据本发明的实施例的第二更特定示范系统1300的框图。图12和图13中的相同元件具有相同附图标记,并且已经从图13中省略图12的某些方面,以避免模糊图13的其它方面。
图13示出处理器1270、1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL 1272、1282包括集成存储器控制器单元,并且包括I/O控制逻辑。图13示出不仅存储器1232、1234耦合到CL 1272、1282,而且还示出I/O装置1314也耦合到控制逻辑1272、1282。遗留I/O装置1315耦合到芯片集1290。
现在参考图14,所示的是根据本发明的实施例的SoC 1400的框图。图10中的类似元件具有相同附图标记。而且,虚线框是更高级SoC上的可选特征。在图14中,一个或多个互连单元1402耦合到:应用处理器1410,其包括一个或多个核132A-N和一个或多个共享高速缓存单元1006的集合;系统代理单元1010;一个或多个总线控制器单元1016;一个或多个集成存储器控制器单元1014;一个或多个协处理器1420或其集合,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器访问(DMA)单元1432;以及显示单元1440,用于耦合到一个或多个外部显示器。在一个实施例中,一个或多个协处理器1420包括专用处理器,例如诸如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文所公开的机制的实施例可用硬件、软件、固件或者此类实现方法的组合来实现。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。
例如图12中所示的代码1230的程序代码可应用于输入指令,以执行本文所描述的功能并且生成输出信息。输出信息可按照已知方式应用于一个或多个输出装置。为了本申请的目的,处理系统包括具有例如诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器的处理器的任何系统。
程序代码可以用高级过程或面向对象的编程语言来实现,以与处理系统进行通信。如果期望,程序代码也可以用汇编或机器语言来实现。实际上,本文所描述的机制在范围方面不限于任何具体编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过表示处理器内的各种逻辑的机器可读介质上存储的代表性指令来实现,所述指令在由机器读取时引起机器制作执行本文所描述的技术的逻辑。称作“IP核”的此类表示可存储在有形机器可读介质上,并且供应给各种客户或制造设施,以加载到实际制作逻辑或处理器的制作机器中。
此类机器可读存储介质可以包括但不限于通过机器或装置所制造或形成的产品的非暂时、有形布置,包括:例如硬盘的存储介质;任何其它类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘;半导体装置(例如只读存储器(ROM))、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SARAM))、可擦可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM);磁卡或光卡;或者适合用于存储电子指令的任何其它类型的介质。
相应地,本发明的实施例还包括非暂时、有形机器可读介质,包含指令或者包含定义本文所描述的结构、电路、设备、处理器和/或系统特征的设计数据(例如硬件描述语言(HDL))。此类实施例又可称作程序产品。
模拟(包括二进制翻译、代码变形等)
在一些情况下,指令变换器可用来将指令从源指令集变换成目标指令集。例如,指令变换器可将指令翻译(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、模拟或者以其它方式将指令变换成将要由核来处理的一个或多个其它指令。指令变换器可以用软件、硬件、固件或其组合来实现。指令变换器可以在处理器上、处理器外或者部分处理器上和部分处理器外。
图15是根据本发明的实施例的将使用软件指令变换器来将源指令集中的二进制指令变换成目标指令集中的二进制指令相对照的框图。在所示实施例中,指令变换器是软件指令变换器,尽管备选地,指令变换器可以用软件、固件、硬件或者其各种组合来实现。图15示出以高级语言1502的程序可使用x86编译器1504来编译,以生成x86二进制代码1506,其可由具有至少一个x86指令集核的处理器1516原生执行。具有至少一个x86指令集核的处理器1516表示任何处理器,其能够通过兼容地执行或者以其它方式处理以下项来执行与具有至少一个x86指令集核的Intel处理器基本上相同的功能:(1) Intel x86指令集核的指令集的相当大部分;或者(2) 针对在具有至少一个x86指令集核的Intel处理器上运行的应用或其它软件的对象代码版本,以便实现与具有至少一个x86指令集核的Intel处理器基本上相同的结果。x86编译器1504表示可操作以生成x86二进制代码1506(例如对象代码)(其能够在具有或没有附加链接处理的情况下在具有至少一个x86指令集核的处理器1516上执行)的编译器。类似地,图15示出以高级语言1502的程序可使用备选指令集编译器1508来编译,以便生成备选指令集二进制代码1510,其可由没有至少一个x86指令集核的处理器1514(例如具有执行Sunnyvale,CA的MIPS Technologies的MIPS指令集和/或执行Sunnyvale,CA的ARM Holdings的ARM指令集的核的处理器)原生执行。指令变换器1512用来将x86二进制代码1506变换为可由没有x86指令集核的处理器1514原生执行的代码。这个变换的代码不太可能与备选指令集二进制代码1510是相同的,因为能够进行这个操作的指令变换器难以制作;然而,变换的代码将实现一般操作,并且由来自备选指令集的指令来组成。因此,指令变换器1512表示软件、固件、硬件或者其组合,其通过模拟、仿真或者任何其它过程允许处理器或者没有x86指令集处理器或核的其它电子装置执行x86二进制代码1506。
针对本文公开的处理器的任何一个所描述的组件、特征和细节可以可选地应用于本文公开的方法的任何一个,其在实施例中可以可选地由和/或通过此类处理器来执行。本文在实施例中所描述处理器的任何一个可以可选地包括在本文所公开的系统的任何一个中。本文在实施例中公开的指令的任何一个可以可选地由本文公开的处理器的任何一个执行和/或通过本文公开的处理器的任何一个执行,可选地在具有本文所示的微架构中的任何一个的一些实施例中,以及可选地在本文所示的系统中的任何一个中包括的一些实施例中。相应地,在一些实施例中,针对本文公开的指令的任何一个描述的特征和细节因此可以可选地应用于可用于执行那些指令的本文公开的处理器和/或系统中的任何一个。
本文公开的处理器组件可以说成操作以执行操作、配置成执行操作、能够执行操作或能执行操作。例如,解码器可以要解码指令,执行单元可以要存储结果等。为了清楚性,要理解这些表达不暗示处理器组件在操作或使用中,但是而是指当处理器组件在操作中时它们能够进行或能进行的事物,但在设备权利要求中,这些处理器组件不在操作中。
在描述和权利要求中,可使用术语“耦合”和/或“连接”连同其派生。这些术语不预计作为彼此的同义词。而是,在实施例中,“连接”可用来指示两个或更多元件彼此直接物理和/或电接触。“耦合”可意味着两个或更多元件彼此直接物理和/或电接触。然而,“耦合”也可意味着两个或更多元件不是彼此直接接触,但是仍然还彼此合作或交互。例如,执行单元可以通过一个或多个中间组件与寄存器和/或解码单元耦合。在附图中,箭头用于示出连接和耦合。
本文公开的组件和前面附图中描绘的方法可以通过包括硬件(例如,晶体管、门、电路等)、固件(例如,存储微代码或控制信号的非易失性存储器)、软件(例如,存储在非暂时计算机可读存储介质上)或其组合的逻辑、模块或单元来实现。在一些实施例中,逻辑、模块或单元可以包括至少一些或主要潜在地与某一可选软件组合的硬件和/或固件的混合。
可使用术语“和/或”。如本文所使用的,术语“和/或”意味着一个或另一或者两者(例如A和/或B意味着A或B或者A和B两者)。
在以上描述中,已经阐述了许多特定细节,以便提供对实施例的透彻理解。然而,在没有这些特定细节的一些的情况下可实施其它实施例。本发明的范围不是通过以上提供的特定示例来确定,而是仅通过下面权利要求来确定。在其它实例中,众所周知的电路、结构、装置和操作以框图形式示出和/或没有细节,以避免模糊本描述的理解。在认为适当的情况下,附图之间重复附图标记或者附图标记的末尾部分,以指示可选地可具有相似或相同特性的对应或相似的元件,除非以其它方式指定或以其它方式清楚地显而易见。
某些操作可以由硬件组件执行,或者可以体现在机器可执行或电路可执行指令中,其可以用于引起和/或导致机器、电路或硬件组件(例如,处理器、处理器部分、电路等)通过执行操作的指令编程。还可以可选地通过硬件和软件的组合来执行操作。处理器、机器、电路或硬件可以包括特定或具体电路或其它逻辑(例如,潜在地与固件和/或软件组合的硬件)其操作以执行和/或处理指令并响应于指令存储结果。
一些实施例包括制品(例如计算机程序产品),其包括机器可读介质。介质可包括以由机器可读的形式来提供(例如存储)信息的机制。机器可读介质可提供指令或指令顺序或者在其上存储了指令或指令顺序,所述指令如果和/或在由机器执行时操作以促使机器执行和/或导致机器执行本文所公开的一个或多个操作、方法或技术。
在一些实施例中,机器可读介质可包括有形和/或非暂时机器可读存储介质。例如,非暂时机器可读存储介质可包括软盘、光存储介质、光盘、光数据存储装置、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦且可编程ROM(EPROM)、电可擦且可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪速存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂时存储器、非暂时数据存储装置等等。非暂时机器可读存储介质不是由暂时传播信号来组成。在一些实施例中,存储介质可包括有形介质,其包括固态物质或材料,诸如例如半导体材料、相变材料、磁固体材料、固体数据存储材料等。备选地,可选地可以使用非有形的暂时计算机可读传输介质,诸如例如电、光、声或其它形式的传播信号(例如,载波、红外信号和数字信号)。
适合机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等等。适合机器的又一些示例包括计算机系统或其它电子装置,其包括处理器、数字逻辑电路或集成电路。此类计算机系统或电子装置的示例包括但不限于桌上型计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如路由器和交换机)、移动因特网装置(MID)、媒体播放器、智能电视机、上网机、机顶盒和视频游戏控制器。
例如,遍及本说明书中对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的参考指示具体特征可包括在本发明的实践中,但是不一定要求这样。类似地,在本描述中,各种特征有时在单个实施例、附图或者其描述中分组在一起,以用于简化本公开,并且帮助理解各种发明方面的目的。然而,本公开的这种方法不要被解释为反映本发明要求超过每个权利要求中明确叙述的特征的意图。而是,如以下权利要求所反映的,发明方面在于少于单个所公开实施例的全部特征。因此,接着详细描述的权利要求书由此明确结合到本详细描述中,其中各权利要求自身代表本发明的单独实施例。
示例实施例
以下示例涉及另外的实施例。示例中的特定细节可以在一个或多个实施例中的任何地方使用。
示例1是一种处理器,包括用于解码指令的解码单元。所述指令要显式地指定第一架构寄存器并且要隐式地指示至少第二架构寄存器。所述第二架构寄存器要隐式地处于比所述第一架构寄存器更高的寄存器编号。所述处理器还包括与所述解码单元耦合的架构寄存器替换单元。所述架构寄存器替换单元要以第三架构寄存器替换所述第一架构寄存器,并且要以第四架构寄存器替换所述第二架构寄存器。所述第三个架构寄存器要处于比所述第一架构寄存器更低的寄存器编号。所述第四架构寄存器要处于比所述第二架构寄存器更低的寄存器编号。
示例2包括示例1的处理器,其中所述解码单元要解码所述指令,其中所述第二架构寄存器隐式地要处于比所述第一架构寄存器更高的下一顺序寄存器编号。所述架构寄存器替换单元以所述第四架构寄存器替换所述第二架构寄存器,所述第四架构寄存器要处于比所述第三架构寄存器更高的下一顺序寄存器编号。
示例3包括示例1的处理器,其中解码单元要解码要显式指定所述第一架构寄存器的所述指令,所述第一架构寄存器要是要用于执行所述指令的顺序架构寄存器块的基址架构寄存器。所述架构寄存器替换单元要以所述第三架构寄存器替换所述第一架构寄存器,所述第三架构寄存器要处于所述较低的寄存器编号,所述寄存器编号要基于所述块的所述顺序架构寄存器的数量。
示例4包括示例3的处理器,其中解码单元要解码要显式指定所述第一架构寄存器的寄存器说明符的所述指令。所述架构寄存器替换单元要以所述第三架构寄存器替换所述第一架构寄存器,所述第三架构寄存器要具有寄存器说明符,所述说明符要包括所述第一架构寄存器的所述寄存器说明符的最高有效位的子集。
示例5包括示例4的处理器,其中所述块要基本上由两个顺序架构寄存器组成。所述第三架构寄存器的所述寄存器说明符可选地要等于所述第一架构寄存器的所述寄存器说明符,其中其最低有效单个位是二进制零。
示例6包括示例4的处理器,其中所述块要基本上由三个和四个顺序架构寄存器之一组成。所述第三架构寄存器的所述寄存器说明符可选地要等于所述第一架构寄存器的所述寄存器说明符,其中其两个最低有效位是二进制零。
示例7包括示例4的处理器,其中所述块要基本上由五个、六个、七个和八个顺序架构寄存器之一组成。所述第三架构寄存器的寄存器说明符可选地要等于所述第一架构寄存器的所述寄存器说明符,其中其三个最低有效位是二进制零。
示例8包括示例1至7的任一项的处理器,其中所述架构寄存器替换单元要以所述第三架构寄存器替换所述第一架构寄存器,并且要以能够防止寄存器环绕的方式用所述第四架构寄存器替换所述第二架构寄存器。
示例9包括示例1至7的任一项的处理器,其中所述第一架构寄存器要是架构寄存器集合中的一个。所述处理器要具有要支持不同数量的架构寄存器的所述集合的第一操作模式和第二操作模式。
示例10包括示例1至7的任一项的处理器,还包括与所述解码单元耦合的执行单元。所述执行单元基于所述第三和第四架构寄存器执行所述指令。
示例11是一种处理器,包括:用于解码指令的解码单元。所述指令具有第一寄存器说明符以指定要用于执行所述指令的多个顺序架构寄存器的块的基址架构寄存器。所述处理器还包括与所述解码单元耦合的架构寄存器替换单元。所述架构寄存器替换单元要以替换基址架构寄存器替换所述块的所述基址架构寄存器。所述替换基址架构寄存器的第二寄存器说明符要等于以下之一:(1)当所述块基本上由两个顺序架构寄存器组成时,等于所述第一寄存器说明符,其中其最低有效单个位是二进制零;(2)当所述块基本上由三个和四个顺序架构寄存器之一组成时,等于所述第一寄存器说明符,其中其最低有效两位是二进制零;(3)当所述块基本上由五个、六个、七个和八个顺序架构寄存器之一组成时,等于所述第一寄存器说明符,其中其最低有效三位是二进制零;以及(4)当所述块基本上由九个、十个、十一个、十二个、十三个、十四个和十五个顺序架构寄存器之一组成时,等于所述第一寄存器说明符,其中其最低有效四位是二进制零。
示例12包括示例11的处理器,其中所述架构寄存器替换单元要以对应的替换架构寄存器替换所述块中的每个其它架构寄存器,所述替换架构寄存器要在所述替换基址架构寄存器之后顺序地彼此跟随。
示例13是一种由处理器执行的方法。所述方法包括接收指令。所述指令显式地指定第一架构寄存器并且隐式地指示至少第二架构寄存器。所述第二架构寄存器隐式地处于比所述第一架构寄存器更高的寄存器编号。所述方法还包括以第三架构寄存器替换所述第一架构寄存器,所述第三架构寄存器处于比所述第一个架构寄存器更低的寄存器编号。所述方法还包括以第四架构寄存器替换所述第二架构寄存器,所述第四架构寄存器处于比所述第二架构寄存器更低的寄存器编号。
示例14包括示例13的方法,其中所述接收包括接收隐式地指示所述第二架构寄存器的所述指令,所述第二架构寄存器处于比所述第一架构寄存器更高的下一顺序寄存器编号。而且所述第二架构寄存器以所述第四架构寄存器替换,所述第四架构寄存器处于比所述第三架构寄存器更高的下一顺序寄存器编号。
示例15包括示例13的方法,其中所述接收包括接收显式指定所述第一架构寄存器的所述指令,所述第一架构寄存器是要被用于执行所述指令的顺序架构寄存器块的基址架构寄存器。而且替换所述第一架构寄存器包括以处于所述较低寄存器编号的所述第三架构寄存器替换所述第一架构寄存器,所述寄存器编号基于所述块的所述顺序架构寄存器的数量。
示例16包括示例15的方法,其中所述接收包括接收显式指定所述第一架构寄存器的寄存器说明符的所述指令。而且替换所述第一架构寄存器包括以具有寄存器说明符的所述第三架构寄存器替换所述第一架构寄存器,所述寄存器说明符包括所述第一架构寄存器的所述寄存器说明符的最高有效位的子集。
示例17包括示例16的方法,其中所述块基本上由三个和四个顺序架构寄存器之一组成。所述方法还包括通过清除所述第一架构寄存器的所述寄存器说明符的最低有效两位来确定所述第三架构寄存器的所述寄存器说明符。
示例18包括示例16的方法,其中所述块基本上由五个、六个、七个和八个顺序架构寄存器之一组成。所述方法还包括通过清除所述第一架构寄存器的所述寄存器说明符的最低有效三位来确定所述第三架构寄存器的所述寄存器说明符。
示例19包括示例13至18中的任一项的方法,其中所述替换所述第一架构寄存器和所述替换所述第二架构寄存器包括防止针对所述指令的寄存器环绕。
示例20包括示例13至19中的任一项的方法,还包括在所述处理器的第一操作模式中执行所述指令。在所述第一操作模式中,所述第一架构寄存器是支持所述第一操作模式的多个架构寄存器中的一个,并且其中所述处理器还具有第二操作模式,其支持更大数量的所述架构寄存器。
示例21是一种处理指令的系统,包括互连以及与所述互连耦合的处理器。所述处理器接收要显式地指定第一架构寄存器并且隐式地指示至少第二架构寄存器的指令。所述第二架构寄存器隐式地要处于比所述第一架构寄存器更高的寄存器编号。所述处理器要以第三架构寄存器替换所述第一架构寄存器,并且要以第四架构寄存器替换所述第二架构寄存器。所述第三架构寄存器要处于比所述第一架构寄存器更低的寄存器编号,并且其中所述第四架构寄存器要处于比所述第二架构寄存器更低的寄存器编号。所述系统还包括与所述互连耦合的动态随机存取存储器(DRAM)。
示例22包括示例21的系统,其中所述第二架构寄存器隐式地要处于比所述第一架构寄存器更高的下一顺序寄存器编号。所述处理器要以所述第四架构寄存器替换所述第二架构寄存器,所述第四架构寄存器要处于比所述第三架构寄存器更高的下一顺序寄存器编号。
示例23包括示例21至22的任一项的系统,其中所述处理器要以所述第三架构寄存器替换所述第一架构寄存器,并且要以能够防止寄存器环绕的方式用所述第四架构寄存器替换所述第二架构寄存器。示例24包括示例1至10中任一项的处理器,还包括用于预测分支的可选分支预测单元,以及与所述分支预测单元耦合的可选指令预获取单元,所述指令预获取单元预获取包括所述指令的指令。处理器还可以可选地包括与所述指令预获取单元耦合的可选1级(L1)指令高速缓存(所述L1指令高速缓存存储指令),存储数据的可选L1数据高速缓存,以及存储数据和指令的可选2级(L2)高速缓存。处理器还可以可选地包括与所述解码单元、所述L1指令高速缓存和所述L2高速缓存耦合的指令获取单元,以在一些情况下从所述L1指令高速缓存和所述L2高速缓存中的一个获取所述指令,并提供所述指令到所述解码单元。处理器还可以可选地包括:重命名寄存器的寄存器重命名单元,调度已经从用于执行的所述指令解码的一个或多个操作的可选调度器,以及提交指令的执行结果的可选提交单元。
示例25包括片上系统,其包括至少一个互连;与所述至少一个互连耦合的示例1至10中任一项所述的处理器;与所述至少一个互连耦合的可选图形处理单元(GPU);与所述至少一个互连耦合的可选数字信号处理器(DSP);与所述至少一个互连耦合的可选显示控制器;与所述至少一个互连耦合的可选存储器控制器;与所述至少一个互连耦合的可选无线调制解调器;与所述至少一个互连耦合的可选图像信号处理器;与所述至少一个互连耦合的可选通用串行总线(USB)3.0兼容控制器;与所述至少一个互连耦合的可选蓝牙4.1兼容控制器,以及与所述至少一个互连耦合的可选无线收发器控制器。
示例26是操作以执行示例13至20中任一项的方法的处理器或其它设备。
示例27是包括用于执行示例13至20中任一项的方法的部件的处理器或其它设备。
示例28是处理器或其它设备,其包括操作以执行示例13至20中任一项的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。
示例29可选地是非暂时和/或有形机器可读介质,其可选地存储或以其它方式提供包括第一指令的指令,所述第一指令如果和/或当由处理器、计算机系统、电子装置或其它机器执行时操作以使所述机器执行示例13至20中任一项的方法。
示例30是大体上如本文所描述的处理器或其它设备。
示例31是操作以执行大体上如本文所描述的任何方法的处理器或其它设备。
示例32是操作以执行大体上如本文所描述的任何指令的处理器或其它设备。

Claims (24)

1.一种处理器,包括:
用于解码指令的解码单元,所述指令显式地指定第一架构寄存器并且隐式地指示至少第二架构寄存器,其中所述第二架构寄存器隐式地要处于比所述第一架构寄存器更高的寄存器编号;以及
与所述解码单元耦合的架构寄存器替换单元,所述架构寄存器替换单元以第三架构寄存器替换所述第一架构寄存器,并且以第四架构寄存器替换所述第二架构寄存器,其中所述第三架构寄存器要处于比所述第一架构寄存器更低的寄存器编号,并且其中所述第四架构寄存器要处于比所述第二架构寄存器更低的寄存器编号。
2.如权利要求1所述的处理器,其中所述解码单元要解码所述指令,其中所述第二架构寄存器隐式地要处于比所述第一架构寄存器更高的下一顺序寄存器编号,并且其中所述架构寄存器替换单元以所述第四架构寄存器替换所述第二架构寄存器,所述第四架构寄存器要处于比所述第三架构寄存器更高的下一顺序寄存器编号。
3.如权利要求1所述的处理器,其中解码单元要解码要显式指定所述第一架构寄存器的所述指令,所述第一架构寄存器要是要用于执行所述指令的顺序架构寄存器块的基址架构寄存器,并且其中所述架构寄存器替换单元要以所述第三架构寄存器替换所述第一架构寄存器,所述第三架构寄存器要处于所述较低的寄存器编号,所述寄存器编号要基于所述块的所述顺序架构寄存器的数量。
4.如权利要求3所述的处理器,其中解码单元要解码要显式指定所述第一架构寄存器的寄存器说明符的所述指令,并且其中所述架构寄存器替换单元要以所述第三架构寄存器替换所述第一架构寄存器,所述第三架构寄存器要具有寄存器说明符,所述寄存器说明符要包括所述第一架构寄存器的所述寄存器说明符的最高有效位的子集。
5.如权利要求4所述的处理器,其中所述块要基本上由两个顺序架构寄存器组成,并且其中所述第三架构寄存器的所述寄存器说明符要等于所述第一架构寄存器的所述寄存器说明符,其中其最低有效单个位是二进制零。
6.如权利要求4所述的处理器,其中所述块要基本上由三个和四个顺序架构寄存器之一组成,并且其中所述第三架构寄存器的所述寄存器说明符要等于所述第一架构寄存器的所述寄存器说明符,其中其两个最低有效位是二进制零。
7.如权利要求4所述的处理器,其中所述块要基本上由五个、六个、七个和八个顺序架构寄存器之一组成,并且其中所述第三架构寄存器的寄存器说明符要等于所述第一架构寄存器的所述寄存器说明符,其中其三个最低有效位是二进制零。
8.如权利要求1至7中的任一项所述的处理器,其中所述架构寄存器替换单元要以所述第三架构寄存器替换所述第一架构寄存器,并且要以能够防止寄存器环绕的方式以所述第四架构寄存器替换所述第二架构寄存器。
9.如权利要求1至7中的任一项所述的处理器,其中所述第一架构寄存器要是架构寄存器集合之一,并且其中所述处理器要具有要支持不同数量的架构寄存器的所述集合的第一操作模式和第二操作模式。
10.如权利要求1至7中的任一项所述的处理器,还包括与所述解码单元耦合的执行单元,所述执行单元基于所述第三和第四架构寄存器执行所述指令。
11.一种处理器,包括:
用于解码指令的解码单元,所述指令具有第一寄存器说明符以指定要用于执行所述指令的多个顺序架构寄存器的块的基址架构寄存器;以及
与所述解码单元耦合的架构寄存器替换单元,所述架构寄存器替换单元以替换基址架构寄存器替换所述块的所述基址架构寄存器,其中所述替换基址架构寄存器的第二寄存器说明符要等于以下之一:
当所述块基本上由两个顺序架构寄存器组成时,等于所述第一寄存器说明符,其中其最低有效单个位是二进制零;
当所述块基本上由三个和四个顺序架构寄存器之一组成时,等于所述第一寄存器说明符,其中其最低有效两位是二进制零;
当所述块基本上由五个、六个、七个和八个顺序架构寄存器之一组成时,等于所述第一寄存器说明符,其中其最低有效三位是二进制零;以及
当所述块基本上由九个、十个、十一个、十二个、十三个、十四个和十五个顺序架构寄存器之一组成时,等于所述第一寄存器说明符,其中其最低有效四位是二进制零。
12.如权利要求11所述的处理器,其中所述架构寄存器替换单元要以对应的替换架构寄存器替换所述块中的每个其它架构寄存器,所述替换架构寄存器要在所述替换基址架构寄存器之后顺序地彼此跟随。
13.一种由处理器执行的方法,所述方法包括:
接收指令,所述指令显式指定第一架构寄存器并且隐式地指示至少第二架构寄存器,其中所述第二架构寄存器隐式地处于比所述第一架构寄存器更高的寄存器编号;以及
以第三架构寄存器替换所述第一架构寄存器,所述第三架构寄存器处于比所述第一架构寄存器更低的寄存器编号;以及
以第四架构寄存器替换所述第二架构寄存器,所述第四架构寄存器处于比所述第二架构寄存器更低的寄存器编号。
14.如权利要求13所述的方法,其中所述接收包括接收隐式地指示所述第二架构寄存器的所述指令,所述第二架构寄存器处于比所述第一架构寄存器更高的下一顺序寄存器编号,并且其中所述替换所述第二架构寄存器包括以所述第四架构寄存器替换所述第二架构寄存器,所述第四架构寄存器处于比所述第三架构寄存器更高的下一顺序寄存器编号。
15.如权利要求13所述的方法,其中所述接收包括接收显式指定所述第一架构寄存器的所述指令,所述第一架构寄存器是要被用于执行所述指令的顺序架构寄存器块的基址架构寄存器,并且其中所述替换所述第一架构寄存器包括以处于所述较低寄存器编号的所述第三架构寄存器替换所述第一架构寄存器,所述寄存器编号基于所述块的所述顺序架构寄存器的数量。
16.如权利要求15所述的方法,其中所述接收包括接收显式指定所述第一架构寄存器的寄存器说明符的所述指令,并且其中所述替换所述第一架构寄存器包括以具有寄存器说明符的所述第三架构寄存器替换所述第一架构寄存器,所述寄存器说明符包括所述第一架构寄存器的所述寄存器说明符的最高有效位的子集。
17.如权利要求16所述的方法,其中所述块基本上由三个和四个顺序架构寄存器之一组成,并且还包括通过清除所述第一架构寄存器的所述寄存器说明符的最低有效两位来确定所述第三架构寄存器的所述寄存器说明符。
18.如权利要求16所述的方法,其中所述块基本上由五个、六个、七个和八个顺序架构寄存器之一组成,并且还包括通过清除所述第一架构寄存器的所述寄存器说明符的最低有效三位来确定所述第三架构寄存器的所述寄存器说明符。
19.如权利要求13所述的方法,其中所述替换所述第一架构寄存器和所述替换所述第二架构寄存器包括防止针对所述指令的寄存器环绕。
20.如权利要求13所述的方法,还包括在所述处理器的第一操作模式中执行所述指令,其中在所述第一操作模式中,所述第一架构寄存器是支持所述第一操作模式的多个架构寄存器中的一个,并且其中所述处理器还具有第二操作模式,其支持更大数量的所述架构寄存器。
21.一种计算机系统,包括:
互连;
权利要求1至7中任一项所述的处理器,所述处理器与所述互连耦合;以及
与所述互连耦合的动态随机存取存储器(DRAM)。
22.一种设备,操作以执行权利要求13至20中任一项所述的方法。
23.一种设备,包括用于执行权利要求13至20中任一项所述的方法的部件。
24.一种非暂时机器可读存储介质,其存储包括第一指令的指令,所述第一指令如果由机器执行,则操作以使所述机器执行权利要求13至20中任一项所述的方法。
CN201780041397.0A 2016-07-01 2017-06-01 针对使用多个架构寄存器的指令的架构寄存器替换 Active CN109416635B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/201,310 US10255072B2 (en) 2016-07-01 2016-07-01 Architectural register replacement for instructions that use multiple architectural registers
US15/201310 2016-07-01
PCT/US2017/035407 WO2018004972A1 (en) 2016-07-01 2017-06-01 Architectural register replacement for instructions that use multiple architectural registers

Publications (2)

Publication Number Publication Date
CN109416635A true CN109416635A (zh) 2019-03-01
CN109416635B CN109416635B (zh) 2023-12-26

Family

ID=60786723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780041397.0A Active CN109416635B (zh) 2016-07-01 2017-06-01 针对使用多个架构寄存器的指令的架构寄存器替换

Country Status (4)

Country Link
US (1) US10255072B2 (zh)
CN (1) CN109416635B (zh)
DE (1) DE112017003337T5 (zh)
WO (1) WO2018004972A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248423B2 (en) * 2016-07-22 2019-04-02 International Business Machines Corporation Executing short pointer mode applications
CN110383281A (zh) * 2017-01-04 2019-10-25 格哈德·施瓦茨 非对称系统与网络体系结构

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20120005444A1 (en) * 2010-07-01 2012-01-05 Rupley Jeffrey P Microcode rename reclamation
CN103377037A (zh) * 2012-04-30 2013-10-30 苹果公司 优化寄存器初始化操作
US20140013085A1 (en) * 2012-07-03 2014-01-09 Suparn Vats Low power and high performance physical register free list implementation for microprocessors
US20140181830A1 (en) * 2012-12-26 2014-06-26 Mishali Naik Thread migration support for architectually different cores
CN104025043A (zh) * 2011-12-29 2014-09-03 国际商业机器公司 从十进制浮点格式转换为区位格式
CN104603746A (zh) * 2012-09-28 2015-05-06 英特尔公司 由读和写掩码控制的向量移动指令
CN104778030A (zh) * 2013-12-20 2015-07-15 想象技术有限公司 具有虚拟化指令集架构的处理器和方法
US20160140079A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Implementing 128-bit simd operations on a 64-bit datapath

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835774A (en) * 1996-04-30 1998-11-10 Hewlett-Packard Company Efficient 32-bit based case table support for 64-bit architectures
US6189094B1 (en) 1998-05-27 2001-02-13 Arm Limited Recirculating register file
JP2000172505A (ja) 1998-12-11 2000-06-23 Hitachi Ltd レジスタ番号変換を行うプロセッサ
US7373483B2 (en) * 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US9696975B2 (en) * 2010-09-03 2017-07-04 International Business Machines Corporation Allocating register halves independently
US9256427B2 (en) 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9268572B2 (en) 2012-12-11 2016-02-23 International Business Machines Corporation Modify and execute next sequential instruction facility and instructions therefor
US9424034B2 (en) 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems
US10318299B2 (en) * 2013-10-31 2019-06-11 International Business Machines Corporation Reading a register pair by writing a wide register
US20170177543A1 (en) 2015-12-22 2017-06-22 Intel Corporation Aggregate scatter instructions
US10019262B2 (en) 2015-12-22 2018-07-10 Intel Corporation Vector store/load instructions for array of structures
US20170192782A1 (en) 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Aggregate Gather and Stride
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20120005444A1 (en) * 2010-07-01 2012-01-05 Rupley Jeffrey P Microcode rename reclamation
CN104025043A (zh) * 2011-12-29 2014-09-03 国际商业机器公司 从十进制浮点格式转换为区位格式
CN103377037A (zh) * 2012-04-30 2013-10-30 苹果公司 优化寄存器初始化操作
US20140013085A1 (en) * 2012-07-03 2014-01-09 Suparn Vats Low power and high performance physical register free list implementation for microprocessors
CN104603746A (zh) * 2012-09-28 2015-05-06 英特尔公司 由读和写掩码控制的向量移动指令
US20140181830A1 (en) * 2012-12-26 2014-06-26 Mishali Naik Thread migration support for architectually different cores
CN104778030A (zh) * 2013-12-20 2015-07-15 想象技术有限公司 具有虚拟化指令集架构的处理器和方法
US20160140079A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Implementing 128-bit simd operations on a 64-bit datapath

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邓晴莺;张民选;蒋江;: "IA-64的并行架构及其寄存器文件", 计算机工程, no. 12 *

Also Published As

Publication number Publication date
US20180004523A1 (en) 2018-01-04
DE112017003337T5 (de) 2019-03-14
US10255072B2 (en) 2019-04-09
WO2018004972A1 (en) 2018-01-04
CN109416635B (zh) 2023-12-26

Similar Documents

Publication Publication Date Title
CN105278917B (zh) 无局部性提示的向量存储器访问处理器、方法、设备、制品和电子设备
CN104049943B (zh) 有限范围向量存储器访问指令、处理器、方法和系统
CN104040487B (zh) 用于合并掩码模式的指令
CN104040488B (zh) 用于给出相应复数的复共轭的矢量指令
CN104094218B (zh) 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法
CN104081336B (zh) 用于检测向量寄存器内的相同元素的装置和方法
CN105247475B (zh) 紧缩数据元素断定处理器、方法、系统和指令
CN104011652B (zh) 打包选择处理器、方法、系统和指令
CN109791488A (zh) 用于执行用于复数的融合乘-加指令的系统和方法
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN104094182B (zh) 掩码置换指令的装置和方法
CN104081337B (zh) 用于响应于单个指令来执行横向部分求和的系统、装置和方法
CN104025024B (zh) 打包数据操作掩码移位处理器、方法及系统
CN108351830A (zh) 用于存储器损坏检测的硬件装置和方法
CN108369509A (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN104137053B (zh) 用于响应于单个指令来执行蝴蝶横向和交叉加法或减法的系统、装置和方法
CN107003846A (zh) 用于向量索引加载和存储的方法和装置
CN104350461B (zh) 具有不同的读和写掩码的多元素指令
CN107918546A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN109992302A (zh) 远程原子操作的空间和时间上的归并
CN104919432A (zh) 用于将多个位向左移并将多个1拉入较低有效位的指令
CN110347431A (zh) 自适应空间访问预取器装置和方法
CN109791486A (zh) 用于具有紧凑指令编码的指令的处理器、方法、系统和指令转换模块
CN108885551A (zh) 存储器复制指令、处理器、方法和系统
CN106030514A (zh) 采用到被屏蔽结果元素的传播将源元素存储到对应未屏蔽结果元素的处理器、方法、系统和指令

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant