CN104025027B - 结构访问处理器、方法、系统和指令 - Google Patents

结构访问处理器、方法、系统和指令 Download PDF

Info

Publication number
CN104025027B
CN104025027B CN201180076095.XA CN201180076095A CN104025027B CN 104025027 B CN104025027 B CN 104025027B CN 201180076095 A CN201180076095 A CN 201180076095A CN 104025027 B CN104025027 B CN 104025027B
Authority
CN
China
Prior art keywords
state
isolation
instruction
processor
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180076095.XA
Other languages
English (en)
Other versions
CN104025027A (zh
Inventor
C·B·麦奈瑞
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 CN104025027A publication Critical patent/CN104025027A/zh
Application granted granted Critical
Publication of CN104025027B publication Critical patent/CN104025027B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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
    • G06F9/30105Register structure
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

可响应于一个或多个结构访问指令而执行的一方面的一种方法包括将处理器的结构的一部分的状态改变为隔绝状态。在隔绝状态中,处理器的组件不能访问该结构的该部分,但是能够访问该结构的一个或多个其他部分。在该结构的该部分处于隔绝状态时,修改该结构的该部分中的非架构可见数据。在已修改该结构的该部分中的非架构可见数据之后,随后将该结构的该部分的状态从隔绝状态改变为非隔绝状态。还公开了其它方法、装置、系统和指令。

Description

结构访问处理器、方法、系统和指令
背景技术
技术领域
实施例涉及处理器。更具体地,实施例涉及响应于结构访问指令而隔绝和修改处理器结构内的微架构数据的处理器。
背景信息
本领域已知具有各种指令集架构(ISA)的处理器。ISA一般表示与编程有关的处理器架构部分。ISA通常包括原生指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处置、以及对软件和/或编程者可见的其他处理器架构部分。作为示例,架构寄存器(例如,通用寄存器)可由应用程序的通用宏指令来指定以标识要操作的数据。
ISA不同于处理器的微架构。处理器的微架构一般表示被选择成实现ISA的特定处理器设计技术。带有不同微架构的处理器可以共享共同的ISA。大多数处理器具有数个微架构结构。此类微架构结构的几个示例包括但不限于高速缓存、翻译后备缓冲器、重排序缓冲器、引退寄存器等。此类微架构结构以及具有此类结构的各种不同类型的微架构或非架构可见数据通常是宏指令不可访问的,或者仅可按非常有限的方式由宏指令访问。
附图说明
可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。在附图中:
图1是具有可操作用于响应于结构访问指令实施例而执行结构访问操作的逻辑实施例的处理器实施例的框图。
图2是可响应于一个或多个结构访问指令的实施例而执行的方法的实施例的流程框图。
图3是可通过一个或多个结构访问指令来修改的高速缓存的实施例的框图。
图4是结构访问指令的实施例的框图。
图5是结构访问操作数的详细示例实施例的框图。
图6是具有特权访问状态的结构的实施例的框图,该特权访问状态允许较高特权组件访问结构的一部分且阻止较低特权组件访问结构的该部分。
图7是包括存储一个或多个结构访问指令的机器可读存储介质的制品的框图。
图8A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的框图。
图8B是示出根据本发明的实施例的包括在处理器中的有序架构核的示例性实施例以及示例性寄存器重命名的无序发布/执行架构核两者的框图。
图9A-B示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。
图10是根据本发明实施例可具有一个以上的核、可具有集成存储器控制器以及可具有集成图形器件的处理器的框图。
图11所示为根据本发明的一个实施例的系统的框图。
图12所示为根据本发明的实施例的第一更具体示例性系统的框图。
图13所示为根据本发明的一实施例的第二更具体示例性系统的框图。
图14所示为根据本发明的一实施例的SoC的框图。
图15是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文中公开了结构访问指令,用于执行或处理结构访问指令的处理器,在处理或执行结构访问指令时处理器所执行的方法,以及合并了一个或多个处理器以处理或执行结构访问指令的系统。在以下描述中,阐述众多具体细节(例如,具体处理器配置、操作序列、指令格式、数据格式、微架构细节等)。然而,在没有这些具体细节的情况下,也可实践实施例。在其他实例中,未详细示出公知电路、结构和技术,以避免混淆对本描述的理解。
图1是具有响应于结构访问指令101的实施例而执行结构访问操作的逻辑103的实施例的处理器100的实施例的框图。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一些实施例中,处理器可以是通用处理器(例如,在台式、膝上型等计算机中使用的类型的通用微处理器)。替换地,处理器可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。
处理器可接收一个或多个结构访问指令101。例如,可从指令获取单元、指令队列或存储器接收该指令。结构访问指令可各自表示由处理器识别并控制装置执行特定操作的机器指令、宏指令或控制信号。在一些实施例中,每个结构访问指令可明确指定(例如,通过位或者一个或多个字段)或以其他方式指示(例如,隐含地指示)一个或多个源111(例如,寄存器)。每个源可具有结构访问操作数112。结构访问操作数可提供信息以指定或量化逻辑103响应于结构访问指令将执行的操作类型。在执行结构访问指令之前,软件可将数据写入操作数的源。在一些实施例中,该指令可明确指定或以其他方式指示从结构读取的数据将存储到的目的地。在一些情形中,源111可被重用作目的地。
所示的处理器包括指令解码单元或解码器102。解码器可接收和解码高级机器指令或宏指令,并且输出一个或多个较低级的微操作、微代码入口点、微指令或者反映和/或源自于原始较高级指令的其他较低级的指令或控制信号。一个或多个较低级指令或控制信号可通过一个或多个较低级(例如,电路级或硬件级)操作来实现较高级指令的操作。解码器可以使用各种不同的机制来实现,包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本领域已知的用于实现解码器的其他机制。
在其他实施例中,取代具有解码器102,可使用指令仿真器、翻译器、变形器(morpher)、解释器、或者其他指令转换逻辑。各种不同类型的指令转换逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。指令转换逻辑可接收指令,并且仿真、翻译、变形、解释、或者以其他方式将接收的指令转换成一个或多个对应的导出指令或控制信号。在其他实施例中,可使用指令转换逻辑和解码器两者。例如,该装置可具有用于将接收到的指令转换成一个或多个中间指令的指令转换逻辑、以及用于将一个或多个中间指令解码成可由处理器的原生硬件执行的一个或多个较低级指令或控制信号的解码器。指令转换逻辑中的一些或全部可位于处理器的其余部分的管芯外,诸如在单独的管芯上或在管芯外的存储器中。
再次参照图1,用于为结构访问指令101执行结构访问操作的逻辑103与解码器102耦合。逻辑103可从解码器接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了或者源自于一个或多个结构访问指令。逻辑103还与由一个或多个结构访问指令指示的一个或多个源(例如,一个或多个寄存器或其他存储位置)耦合。如先前提及的,源可具有结构访问操作数,其帮助指定或量化逻辑103响应于结构访问指令将执行的操作。以下将进一步讨论操作数的具体示例。
逻辑103还与处理器的结构104耦合。作为示例,该结构可以是高速缓存、寄存器集合、翻译后备缓冲器(TLB)、另一类型的高速缓存或缓冲器、地址解码器、处理器的微架构结构、等等。该结构具有部分105以及一个或多个其他部分108。作为示例,在结构为高速缓存的情形中,部分105可以是个体高速缓存线,并且其他部分108可以是所有其他高速缓存线。作为另一示例,在结构为寄存器集合的情形中,部分105可以是个体寄存器,并且其他部分108可以是所有其他寄存器。作为又一示例,在结构为TLB的情形中,部分105可以是TLB的个体入口,并且其他部分108可以是TLB的所有其他入口。这些仅仅是合适的结构和部分的几个说明性示例。
逻辑103可操作用于响应于一个或多个结构访问指令101和/或作为该指令的结果而将结构104的部分105的状态改变为隔绝状态107。在一些实施例中,第一结构访问指令可导致逻辑103改变该状态。在隔绝状态中,逻辑103在处理一个或多个结构访问指令101时能够访问该结构的部分105以及该结构的其他部分108。然而,在隔绝状态,处理器的其他组件109(例如,没在处理结构访问指令101的其他逻辑和核)不能够访问该结构的部分105(如图中由双向箭头上的“X”所指示的),但能够访问该结构的一个或多个其他部分108。隔绝该结构的部分105可有效地向除了执行或运行结构访问指令的资源以外的所有资源禁用该结构的该部分和/或有效地使该部分不可供这些其他组件使用。
隔绝该部分有效地使该部分不可供其他组件使用,从而该部分中的数据可被修改而没有来自其他组件的干扰并且在修改完成之前没有其他组件访问该数据。作为示例,在高速缓存和高速缓存线的情形中,其他组件109将不会检查隔绝高速缓存线105的命中,并且将不会存储或检索来自隔绝高速缓存线105的数据,尽管该高速缓存仍活跃和运转,并且其他组件109可存储或读取来自高速缓存的其他非隔绝高速缓存线108的数据。作为另一示例,在寄存器集合和寄存器的情形中,其他组件109将不会访问隔绝寄存器105,尽管隔绝寄存器集合仍活跃和运转,并且其他组件109可存储或读取来自寄存器集合的其他非隔绝寄存器108的数据。在一些实施例中,在微架构结构具有架构含义时,可对隔绝寄存器或其他隔绝部分执行重命名、重新映射等等。例如,寄存器Ax和其他架构寄存器可被重命名或被重新映射到另一非隔绝寄存器。作为示例,这可通过使用重排序缓冲器来达成。
作为示例,将该结构的部分改变为隔绝状态可包括将与该部分相关联的一个或多个位置位(例如,在高速缓存的情形中将一个或多个每高速缓存线的位置位,在寄存器集合的情形中将一个或多个每寄存器的位置位,在TLB的情形中将一个或多个每入口的位置位,等等)。在一些实施例中,当结构具有原始/初始数据时,逻辑103响应于一个或多个结构访问指令(例如,响应于第一结构访问指令)可在修改原始非架构可见数据之前一致地将原始非架构可见数据存储到恰适存储位置110,从而原始/初始数据不会丢失。例如,在高速缓存的情形中,原始数据可被写回存储器。
再次参照该附图,逻辑103进一步可操作用于响应于一个或多个结构访问指令101和/或作为该指令的结果而在该结构的该部分处于隔绝状态时将该结构的该部分中的原始非架构可见数据修改为经修改非架构可见数据106。在一些实施例中,第二结构访问指令可导致逻辑103修改数据。在一些实施例中,两个或更多个结构访问指令可被用于作出两个或更多个顺序修改。如本文所使用的,修改包括改变一个或多个位(例如,要么通过直接改变一个或多个个体位,要么通过用具有不同的一个或多个位的另一数据值来替换整个数据值)。
作为示例,在结构104为高速缓存且部分105为高速缓存线的情形中,逻辑103可修改该高速缓存线的一个或多个字段、值、或部分。可被修改的高速缓存线的字段、值、或部分的示例包括但不限于标志、纠错或奇偶校验数据、状态、高速缓存替换数据、以及实际数据、及其组合。纠错数据可基于各种不同的纠错方案。类似地,高速缓存替换数据可基于各种不同的方案(例如,近期最少使用(LRU)、伪LRU、最近使用的、等等)。作为示例,逻辑103响应于一个或多个结构访问指令可翻转高速缓存线的标志或纠错字段中的一个或多个位,或者用另一不同的错误值来替换该标志或纠错字段(例如,以引入错误)。
值得注意的是,在一些实施例中,本文所公开的结构访问指令可帮助提供对架构可见结构(例如,寄存器集合等)或非架构可见结构(例如,高速缓存、TLB等)的原本通常是非架构可见的或微架构的字段、数据、或部分的访问(例如,读和/或写访问)。这些结构的非架构可见的或微架构字段、数据、或部分可表示应用程序通常不知晓的资源。例如,在高速缓存的情形中,应用程序通常不必知晓高速缓存的存在,更别说是知晓高速缓存的标志值、纠错数据、高速缓存替换数据、或其他非架构可见数据或字段。在没有本文公开的结构访问指令的情况下,结构的这些非架构可见的或微架构的字段、数据、或部分一般原本不可供程序使用(例如,不可供通用宏指令使用)。
用本文公开的结构访问指令来访问结构的这些非架构可见的或微架构的字段、数据、或部分可用于各种不同目的。作为示例,这些访问可用于帮助管理、监视、测试、控制、重新配置结构,或以其他方式与结构交互。作为另一特定示例,结构访问指令可用于向结构(例如,高速缓存、寄存器集合、其他数据存储结构等)中注入错误。例如,可破坏高速缓存线的标志、纠错、高速缓存替换、或其他字段(例如,一个或多个位可翻转)。作为示例,可执行此举以测试高速缓存检测错误和/或纠错的能力。在其他实施例中,本文所公开的指令可用于执行对结构的运行中(例如,在运行时或活跃执行期间)重配置。例如,可使用结构访问指令在运行时期间禁用结构的有缺陷的高速缓存线或其他部分。
再次参照该附图,逻辑103进一步可操作用于响应于一个或多个结构访问指令101和/或作为该指令的结果而在修改该结构的该部分中的非架构可见数据之后将该结构的该部分的状态从隔绝状态改变为非隔绝状态(未示出)。在一些实施例中,第三结构访问指令可导致逻辑103将该状态改变为非隔绝状态。作为示例,在高速缓存的情形中,非隔绝状态可以是MESI状态(例如,修改、排他、共享、或无效状态)。在一些实施例中,这可允许其他组件109能够访问部分105和/或经修改的非架构可见数据106。替换地,如以下将进一步解释的,在一些实施例中,可配置附加特权访问状态,其可允许较高特权组件访问部分105但不允许较低特权组件访问部分105(参见例如图6)。
有利的是,可以伪原子地作出对该结构的部分中的数据的修改。其他组件可以不能够访问该结构的该部分或其中的数据,但是能够保持操作并且能够访问该结构的其他部分。伪原子操作帮助原子地执行对数据的修改而没有来自系统中的其他组件的干扰。伪原子操作可有效地使该结构的该部分被暂时修改成不可供其他组件访问。如果其他组件能够访问该部分中的数据,则它们潜在有可能使用该数据,这会导致错误,或者它们潜在地有可能修改该数据,这可能不是期望的。例如,在修改高速缓存线的情形中,伪原子修改可帮助阻止另一组件在该修改完成之前驱逐或进一步修改该高速缓存线。其还可帮助阻止另一组件在该修改完成之前访问该高速缓存线中的经修改数据,否则潜在地有可能导致错误。
而且,可作出该修改而无需使整个结构静默和/或无需使能够访问该结构的其他组件静默。使整个结构静默和/或使能够访问该结构的其他组件静默也可帮助防止来自这些其他组件的干扰。然而,使整个结构静默和/或使其他组件静默一般趋向于降低性能。例如,使其他组件(例如,执行单元、多核系统中的其他核、多处理器系统中的其他处理器等)静默通常涉及停止或暂停这些组件的执行,这降低了性能。同样,使整个高速缓存、整个寄存器集合等静默也趋向于降低性能。
逻辑103可包括响应于结构访问指令而执行结构访问操作的逻辑。该特定逻辑可取决于被操作的结构和/或作为结构访问指令的目标的结构而变化。通常,该逻辑可包括与该结构和/或该结构的部分相关联的用于操纵该结构(例如,在这些结构内添加和/或修改非架构可见数据)的原生电路或其他逻辑。作为示例,在高速缓存、TLB、或存储器有关结构的情形中,该逻辑可以是这些结构之一和/或操纵这些结构的关联逻辑(例如,访问纠错数据、标志等的集成电路)的部分。作为另一示例,在寄存器组的情形中,逻辑103可以是访问寄存器组和/或寄存器组的部分中的架构可见数据的执行单元的部分。逻辑103和/或该装置可包括具体或特定逻辑(例如,潜在可能与软件和/或固件组合的电路或其它硬件),其可操作用于响应于结构访问指令(例如,响应于从该指令导出的一个或多个微指令或其它控制信号)而执行结构访问指令的操作。
为了避免混淆本描述,已示出和描述了相对简单的处理器100。在其他实施例中,处理器可任选地包括其他公知组件,诸如举例而言,指令获取单元、指令调度单元、分支预测单元、指令和数据高速缓存、指令和数据翻译后备缓冲器(translation lookasidebuffer)、预取缓冲器、微指令队列、微指令定序器、总线接口单元、第二或更高级高速缓存、引退单元(retirement unit)、寄存器重命名单元、处理器中包括的其他组件、及其各种组合。实施例可具有多个核、逻辑处理器或执行引擎。可操作用于运行或执行本文所公开的指令实施例的逻辑可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特定组合或配置。
图2是可响应于一个或多个结构访问指令的实施例而执行的方法215的示例实施例的流程框图。在各种实施例中,该方法可由通用处理器、专用处理器(例如,网络处理器、图形处理器或数字信号处理器)、或另一种类型的数字逻辑设备执行。在各个方面,该指令可在处理器或者其一部分(例如,解码器、指令转换器等)处接收。在各个方面,指令可从处理器外的源(例如,从主存储器、盘、或总线或互连)或者从处理器上的源(例如,从指令高速缓存)接收。在一些实施例中,方法215可由图1的处理器100、或类似处理器执行。或者,该方法可由处理器的不同实施例执行。此外,处理器100可执行与方法215的实施例相同、相似或者完全不同的操作和方法的实施例。
该方法包括在框216将处理器的结构的一部分的状态改变为隔绝状态。在隔绝状态中,处理器的组件不能访问该结构的该部分,但是能够访问该结构的一个或多个其他部分。在一些实施例中,该结构的该部分中的原始/初始数据可被一致地写入或存储至另一存储位置。在一些实施例中,可响应于第一结构访问指令而执行该操作。
在框217,在该结构的该部分处于隔绝状态时,将该结构的该部分中的非架构可见数据修改成经修改非架构可见数据。作为示例,在该结构为高速缓存且该部分为高速缓存线的情形中,处理器逻辑响应于该指令可修改该高速缓存线的标志、纠错或奇偶校验数据、状态、高速缓存替换数据、以及实际数据中的一者或多者。在一些实施例中,可响应于第二结构访问指令而执行该操作。在一些实施例中,一个或多个附加结构访问指令可被用于在该结构的该部分处于隔绝状态时对该结构的该部分作出一个或多个附加顺序修改。有利的是,这一个或多个结构访问指令可提供对结构的原本通常不可供微指令和/或机器指令使用的非架构可见的或微架构的字段、数据、或部分的读和/或写访问。
在框218,在修改该结构的该部分中的非架构可见数据之后,将该结构的该部分的状态从隔绝状态改变为非隔绝状态。有利的是,可以伪原子地作出对该结构的该部分中的数据的修改。其他组件可以不能够访问该结构的该部分或其中的数据从而它们不会产生干扰,但是能够保持操作并且能够访问该结构的其他部分。无需使其他组件或整个结构静默。
已经以基本形式示出和描述了该方法,但可任选地向该方法添加操作和/或从该方法移除操作。作为示例,可获取结构访问指令,将其解码(或以其他方式转换)成一个或多个其他指令或控制信号,可启用逻辑以执行该指令的操作,该逻辑可执行该操作等。另外,已示出和/或描述了特定操作次序,但替换实施例可按不同次序执行某些操作、组合某些操作、重叠某些操作等等。例如,在替换实施例中,可与将状态改变为隔绝状态并发地、或者至少部分并发地执行修改。
为了进一步说明某些概念,考虑示例高速缓存,以及隔绝高速缓存线并修改该高速缓存线、然后将该高速缓存线改变为非隔绝状态的示例可能是有帮助的。如已知的,高速缓存是处理器中常用的结构,其用于透明地存储数据,从而可以比如果数据处于另一存储位置(例如,处理器外的存储器)的情形更快地访问数据。存储在高速缓存内的数据可表示存储在其他存储位置的副本。高速缓存结构通常被安排成数个条目。每个条目具有相应数据。每个条目通常还具有用于标识该条目中的数据(例如,确定该条目中的数据是否对应于其他存储位置中的期望数据)的标志。
在处理单元、核或其他实体想要访问其他存储位置中的给定数据时,它可首先检查高速缓存以确定期望数据是否存在于高速缓存中。该实体可检查该标志以确定它们是否对应于期望数据。如果该数据在高速缓存中(例如,存在高速缓存命中),则可从高速缓存检索该数据。这可帮助避免对其他存储位置(例如,处理器外的存储器)中的数据的较慢访问。否则,如果没有找到具有与期望数据匹配的标志的条目(例如,存在高速缓存未命中),则可从其他存储位置(例如,从处理器外的存储器)访问该数据,这一般趋向于是较慢访问。一般而言,作为高速缓存命中的高速缓存访问的百分比越高,整体系统性能就越快。
通常,在高速缓存未命中期间,处理器可驱逐高速缓存的另一条目以便为从其他存储位置新检索的数据留出空间。要驱逐的条目可根据基于给定替换策略的算法来选择。各种替换策略在本领域中是已知的。替换策略的示例包括但不限于:近期最少使用(LRU)、最近使用的(MRU)、伪LRU、随机替换等等。高速缓存的每个条目还可包括可由高速缓存替换算法使用的高速缓存替换数据(例如,一个或多个LRU位)。
高速缓存的每个条目通常还包括用于维护一致性域(例如,一般至少包括该高速缓存和处理器外的后援存储位置)中的数据的一致性的状态或一致性数据。高速缓存中使用的常见一致性协议是MESI(修改-排他-共享-无效)协议、以及源自于或类似于MESI协议的其他协议。在MESI协议中,高速缓存的每个条目或者每条高速缓存线被指示为处于四个状态即修改、排他、共享、和无效之一。这些状态是本领域中公知的。其他协议可定义其他或相关的状态。
通常,在高速缓存中还采用纠错方案以帮助纠正某种程度的错误。高速缓存的每个条目可包括纠错数据(例如,纠错码的一个或多个位)。纠错码的这一个或多个位可表示可用于纠正其他字段中的错误(例如,检测并纠正表示数据中的位的误翻转的错误)的奇偶校验位或冗余数据。各种不同的纠错方案是本领域中已知的,诸如举例而言基于汉明码的那些纠错方案。在一些实施例中,高速缓存线的多个字段或每个字段(例如,数据、标志、状态、高速缓存替换、使用向量、有效等)可具有其自己的相应纠错数据。
图3是高速缓存304的示例实施例的框图。该高速缓存包括数条(N条)高速缓存线308-1至308-N。在一些实施例中,结构访问指令可对个体高速缓存线进行操作。例如,如图中所示,结构访问指令可对高速缓存线M308-M进行操作。结构访问指令可指定或以其它方式指示高速缓存线M。在其中结构访问指令能够对多个不同结构(例如,多级高速缓存)或多个不同类型的结构进行操作的一些实施例中,结构访问指令可指定或以其它方式指示高速缓存。
所示的高速缓存线M包括数个高速缓存线字段或部分,包括纠错字段320、标志字段321、状态字段322、高速缓存替换字段323、以及数据字段324。在一些实施例中,高速缓存线的这些字段中的任何一个或多个字段可被一个或多个结构访问指令隔绝、修改、并随后解除隔绝。在一些实施例中,纠错字段(例如,一个或多个纠错码位)可被改变。在一些实施例中,标志字段可被改变。在一些实施例中,状态字段(例如,MESI状态)可被改变。在一些实施例中,高速缓存替换字段(例如,一个或多个LRU、伪LRU、或MRU位)可被改变。在一些实施例中,数据可被改变。数据可被修改成有效或无效数据。在一些实施例中,在修改之后,高速缓存线M可改变为选自修改状态、排他状态、共享状态、和无效状态的非隔绝状态。
在一些实施例中,结构访问指令可指示高速缓存针对经修改数据要应用还是不应用纠错(例如,生成纠错码)。高速缓存通常具有在数据被写入高速缓存线时自动生成纠错码的电路。结构访问指令可指定要执行该自动更新(例如,以节省不得不自动生成恰适纠错码的努力),或者可禁用该自动更新(例如,以执行诊断或测试)。换言之,如果字段(例如,数据字段)具有对另一字段(例如,纠错或奇偶校验字段)的依赖性,则该指令可指定从属字段将在另一字段改变时被更新,或者从属字段在另一字段改变时不被更新从而可能存在某种不一致性。在一些实施例中,结构访问指令可替换数据并且还替换用于该数据的纠错数据。
这仅仅是合适的结构的一个示例。合适结构的另一示例是寄存器集合或寄存器群。处理器通常包括一个或多个寄存器集合(寄存器的集合或群)。寄存器集合中的寄存器一般表示架构上可见的寄存器。架构上可见的寄存器通常表示管芯上的处理器存储位置。架构上可见的寄存器此处也可被称为架构寄存器或简称为寄存器。处理器可包括各种类型的寄存器集合。不同类型的寄存器集合的几个示例包括但不限于:通用寄存器集合、标量寄存器集合、打包数据寄存器集合、浮点寄存器集合、以及状态和控制寄存器。在一些情形中,寄存器可用于多种类型的数据(例如,整数和浮点数据)。虽然由指令指定的寄存器中的数据是架构上可见的,但寄存器通常还包括非架构可见的或微架构的字段或部分。作为示例,寄存器常常包括保护位或纠错数据。作为另一示例,寄存器可包括记分板位或数据,其可指示寄存器内容‘在运行中’且尚不可供访问。在一些实施例中,寄存器的非架构可见字段或部分(例如,保护位)可通过本文所公开的一个或多个结构访问指令来隔绝、修改并随后解除隔绝。
合适结构的又一示例是翻译后备缓冲器(TLB)。处理器通常包括一个或多个TLB以缓冲或高速缓存虚拟至物理地址翻译。TLB通常被安排为数个条目,其中每个条目存储给定的虚拟至物理地址翻译。在一些实施例中,TLB的条目的非架构可见字段或部分可通过本文所公开的一个或多个结构访问指令来隔绝、修改并随后解除隔绝。此类非架构可见字段的示例包括但不限于页掩码、页大小、纠错数据、奇偶校验数据、访问权限数据、预验证位或数据、虚拟地址、物理地址、脏位、管脚位等。
图4是结构访问指令401的实施例的框图。结构访问指令包括操作代码或操作码字段425。操作码字段可表示可操作用于标识指令和/或至少部分地标识要执行的操作的多个位或者一个或多个字段。
结构访问指令的所示实施例还包括源指定符字段426。源指定符字段可操作用于明确指定源操作数(例如,源寄存器或其他源存储位置)。作为示例,源指定符可包括通用寄存器的地址。替换地,并非具有源指定符来明确指定源,源可以是该指令中隐含的或固有的。在一些替代实施例中,该指令可明确指定或隐含地指示两个或更多个源。一个或多个源可连同操作码一起帮助指定或量化响应于结构访问指令将执行的操作类型。在一些实施例中,该指令可进一步具有目的地指定符(例如,以指定所读出的数据将存储到的目的地)。替换地,源可被重用作目的地。
结构访问指令的所示实施例还可任选地包括一个或多个数据字段427和可任选立即数428。这些字段中的任一个或两个字段可任选地被包括以进一步帮助指定或量化响应于结构访问指令将执行的操作类型。
所示的指令格式示出可被包括在实施例结构访问指令中的字段类型的示例。一般而言,源指定符、数据和立即数字段中的一个或多个字段可被包括以单独或组合地帮助指定或量化响应于结构访问指令将执行的操作类型。替代的实施例可包括所示字段的子集,可添加附加字段,可包括不同字段,或者其组合。此外,所示的字段次序/安排并非是必须的,相反,字段可被重排列。字段无需包括连续位序列,相反可包括非连续或分开的位。
图5是结构访问操作数512的实施例的框图。在一些实施例中,结构访问操作数可由结构访问指令所指定或以其他方式指示的源(例如,源寄存器)来提供。该操作数的所示实施例包括一致性字段530、操作字段531、纠错字段532、路线字段533、状态字段534、索引字段535、主结构字段536、以及副结构字段537。其它实施例可包括更少、更多或不同的字段。
一致性字段530可指示操作是否应当维护数据一致性。例如,一致性字段可指示正被访问的结构部分中的原始/初始数据如果正要改变则是否应当被存储在另一存储位置,从而原始/初始数据不会丢失。作为示例,在高速缓存线的情形中,一致性字段可指示在修改之前,该高速缓存线是否要被写回存储器。
操作字段531可表示至少部分地指定要对给定结构执行的操作的结构专用编码。作为示例,在该结构为高速缓存的情形中,结构访问指令的示例实施例的三位操作字段可具有值‘x00’以指示该操作是用于将标志读取到目的地中的诊断操作,可具有值‘x10’以指示该操作是用于将标志从源写入高速缓存线的诊断操作,可具有值‘x11’以指示该操作是用于将状态读取到目的地中的诊断操作,可具有值‘001’以指示该操作是用于清除值的诊断操作,或者可具有值‘101’以指示该操作是随同至无效或隔绝状态的状态改变的一致写回。这些只是高速缓存特有的几个说明性示例。可包括更少或更多的位以指定更少或更多不同类型的操作,包括涉及如本文别处所公开的其他类型的结构的操作。
纠错字段532可指示处理器是否将作为修改结果而生成新的纠错数据/位。作为示例,单个位可具有值1以指示处理器将生成新的检错数据或奇偶校验位,或者具有值0以指示处理器不会生成新的检错数据或奇偶校验位。当结构不执行纠错时,此字段可被省略或忽略。
路线字段533可指定进行操作的期望路线。当结构不是高速缓存时,此字段可被省略或忽略。
状态字段534可指示在结构访问指令已执行或运行之后,该结构的该部分的状态。在一些实施例中,状态可指示隔绝或非隔绝。作为一个示例,状态字段可包括单个位,其具有值1以指示隔绝状态或者具有值0以指示非隔绝状态。在其它示例中,可包括附加的位以指示其他状态(例如,在高速缓存的情形中指示MESI状态)。
索引字段535可指示要进行操作的索引。索引字段的位数量和涵意可以是因结构而异的。当结构不具有索引时,此字段可被省略或忽略。
主结构字段536可指示结构访问指令将对其进行操作的结构。在一些实施例中,结构访问指令可操作用于对给定类型的结构进行操作。例如,结构访问指令(例如,操作码)可以是专用于高速缓存的,并且主结构字段可指示多个不同高速缓存中的一个特定高速缓存(例如,中级高速缓存、最低级高速缓存等)。在一个示例中,可提供单个位以指示中级高速缓存或最低级高速缓存。作为另一示例,可指示多级TLB。可按需针对不同类型的结构包括不同类型的结构访问指令(例如,不同操作码)。替换地,在其他实施例中,给定的结构访问指令(例如,操作码)可以能够对不同类型的结构进行操作,并且主结构字段可从不同类型的结构(例如,高速缓存、寄存器集合、TLB、或其他结构)中指示特定结构并且如果存在多个级别则可指示结构的特定级别(例如,如果存在多个级别则指示高速缓存或TLB的特定级别)。主结构字段的位数量可取决于供选择的结构数量而变化。
副结构字段537可指示由主结构字段指示的结构中将被操作的特定部分。例如,在该结构为高速缓存的实施例中,副结构字段可具有不同值以指示该部分是高速缓存线的数据字段、高速缓存线的标志字段、高速缓存线的状态字段、或高速缓存线的纠错字段。在一些实施例中,结构访问指令的不同实例可被用于修改这些不同字段中的多个字段。替换地,单个结构访问指令可以能够指定在该单个指令内要改变的多个字段。
所示的结构访问操作数表示了示出可被包括在结构访问操作数的实施例中的字段类型的合适操作数的特定详细示例。替换实施例可具有更少、更多或不同的字段,或其组合。此外,这些字段中的一些或所有字段可从操作数移至嵌入在指令编码中的数据或立即数字段。指令编码和结构访问操作数的组合可充分指示要执行的操作类型。此外,在替换实施例中,以上描述为被明确指定的一些信息可取而代之是指令中隐含的或固有的,而非被明确指定。所示的字段次序/安排并非是必须的,相反,字段可被重排列。字段无需包括连续位序列,相反可包括非连续或分开的位。
在一些实施例中,使用本文所公开的结构访问指令来修改数据可限于某些组件,诸如相对较高特权的组件,但这不是必须的。合适的较高特权组件的示例包括但不限于操作系统、管理程序、虚拟机监视器、以及比相对较低特权的组件(例如,用户级应用程序)具有更高特权的其他相对较高特权的软件或组件。较高特权组件比较低特权组件具有相对更高的特权。这些是相关术语。
此外,在一些实施例中,处理器和/或其结构可具有附加的特权访问状态。特权访问状态不同于隔绝状态。在如上所讨论的对数据的隔绝修改之后,可进入特权访问状态。特权访问状态可仅准许较高特权组件访问处于特权访问状态的结构部分,并且阻止较低特权组件访问处于特权访问状态的结构部分。
图6是具有特权访问状态640的结构604的实施例的框图,该特权访问状态640允许较高特权组件638访问结构的一部分605且阻止较低特权组件639访问结构的该部分605。作为示例,在高速缓存的情形中,特权访问状态可表示用于指明相应高速缓存线是否处于特权访问状态的一个或多个每高速缓存线的位。作为示例,在该结构的该部分已被修改之后,当处于隔绝状态时,结构访问指令可被用于将该结构的该部分的状态改变为特权可见状态。当处于特权可见状态时,仅较高特权组件可以能够访问该部分和/或经修改非架构可见数据606,而较低特权组件不能够访问该部分和/或经修改的非架构可见数据。较高特权组件和较低特权组件两者可被准许访问该结构的一个或多个其他部分608。
图7是包括机器可读存储介质743的制品(例如计算机程序产品)742的框图。在一些实施例中,机器可读存储介质可包括有形的和/或非瞬态的机器可读存储介质。在各示例实施例中,机器可读存储介质可包括软盘、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、半导体存储器、其它类型的存储器或它们的组合。在一些实施例中,介质可包括一个或多个固态数据存储材料,例如半导体数据存储材料、相变数据存储材料、磁性数据存储材料、光学透明固体数据存储材料等等。
机器可读存储介质存储一个或多个结构访问指令701。这一个或多个结构访问指令若由机器执行或运行则可操作用于使该机器执行如本文所公开的一个或多个操作或方法。不同类型的机器的示例包括但不限于处理器(例如,通用处理器和专用处理器)、指令处理装置、以及具有一个或多个处理器和/或执行或处理指令的各种电子设备。这种机器或电子设备的几个代表示例包括但不限于计算机系统、台式机、膝上型计算机、笔记本、服务器、网络路由器、网络交换机、上网计算机、机顶盒、蜂窝电话、视频游戏控制器等。
示例性核架构、处理器和计算机架构
处理器核可以用不同方式、出于不同目的、在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:包括预期用于通用计算的一个或多个通用有序核和/或预期用于通用计算的一个或多个通用无序核的CPU;以及2)包括主要预期用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等的专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图8A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名的无序发布/执行流水线两者的框图。图8B是示出根据本发明的实施例的有序架构核的示例性实施例以及包括在处理器中的示例性寄存器重命名的无序发布/执行架构核两者的框图。图8A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。考虑到有序方面是无序方面的子集,将描述无序方面。
在图8A中,处理器流水线800包括获取(fetch)级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处理级822和提交级824。
图8B示出处理器核890,该核包括耦合到执行引擎单元850的前端单元830,并且两者耦合到存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,核890可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、图形核等等。
前端单元830包括耦合到指令高速缓存单元834的分支预测单元832,该指令高速缓存单元834被耦合到指令翻译后备缓冲器(TLB)836,该指令翻译后备缓冲器836被耦合到指令获取单元838,指令获取单元838被耦合到解码单元840。解码单元840(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元840可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括存储特定宏指令的微代码的微代码ROM或其他介质(例如,在解码单元840中或否则在前端单元830内)。解码单元840耦合至执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元852耦合至引退单元854以及一个或多个调度器单元(多个)856的集合。调度器单元856表示任何数目的不同调度器,包括预留站(reservations stations)、中央指令窗等。调度器单元856被耦合到物理寄存器组单元858。每个物理寄存器组单元858表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元858与引退单元854重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元854和物理寄存器组单元858被耦合到执行群集860。执行群集860包括一个或多个执行单元862的集合以及一个或多个存储器访问单元864的集合。执行单元862可以执行各种操作(例如,移位、加法、减法、乘法),以及对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。尽管某些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有函数的仅一个执行单元或多个执行单元。调度器单元856、物理寄存器组单元858和执行群集860被示为可能有多个,因为某些实施例为某些类型的数据/操作(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元864的某些实施例)创建分开的流水线。还应当理解,在分开的流水线被使用的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元864的集合被耦合到存储器单元870,该存储器单元870包括耦合到数据高速缓存单元874的数据TLB单元872,其中该数据高速缓存单元874耦合到二级(L2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元870中的数据TLB单元872。指令高速缓存单元834还耦合到存储器单元870中的二级(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指令集(具有与较新版本一起添加的某些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核890包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许被许多多媒体应用使用的操作将使用打包数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取指和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所例示的处理器的实施例还包括分开的指令和数据高速缓存单元834/874以及共享L2高速缓存单元876,但替换实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多级内部高速缓存。在某些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图9A-B示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块(包括具有相同类型和/或不同类型的其他核)中的一个。这些逻辑块通过高带宽的互连网络(例如,环形网络)与某些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信,这依赖于应用。
图9A是根据本发明的实施例的连接到片上互联网络902且具有第二级(L2)高速缓存的本地子集904的单一处理器核的框图。在一个实施例中,指令解码器900支持具有打包数据指令集扩展的x86指令集。L1高速缓存906允许对高速缓存存储器的低等待时间访问进入标量和向量单元。尽管在一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存906读回,但是本发明的替换实施例可以使用不同的方法(例如使用单个寄存器集合,或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集904是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存的本地子集904的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集904中,并且可以被快速访问,该访问与其他处理器核访问它们自己的本地L2高速缓存子集并行。被处理器核写入的数据被存储在其自己的L2高速缓存子集904中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径每个方向为1012位宽。
图9B是根据本发明的各实施例的图9A中的处理器核的一部分的展开图。图9B包括L1高速缓存904的L1数据高速缓存906A部分、以及关于向量单元910和向量寄存器914的更多细节。具体地说,向量单元910是16宽向量处理单元(VPU)(见16宽ALU928),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU支持通过拌和单元920混合寄存器输入、通过数值转换单元922A-B进行数值转换,以及通过复制单元924进行对存储器输入的复制。写掩码寄存器926允许断言(predicating)所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图10是根据本发明的实施例的处理器1000的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形器件。图10的实线框示出了处理器1000,处理器1000具有单个核1002A、系统代理1010、一个或多个总线控制器单元1016的集合,而可选附加的虚线框示出了替换处理器1000,其具有多个核1002A-N、系统代理单元1010中的一个或多个集成存储器控制器单元1014的集合以及专用逻辑1008。
因此,处理器1000的不同实现可包括:1)CPU,其中专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1002A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1002A-N是主要旨在用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1002A-N是大量通用有序核。因此,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1000可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一组或一个或多个共享高速缓存单元1006、以及耦合至集成存储器控制器单元1014的集合的外部存储器(未示出)。该共享高速缓存单元1006的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1012将集成图形逻辑1008、共享高速缓存单元1006的集合以及系统代理单元1010/集成存储器控制器单元1014互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,在一个或多个高速缓存单元1006与核1002-A-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(其可以在分开的芯片上);GMCH1190包括存储器和图形控制器,存储器1140和协处理器1145耦合到该图形控制器;IOH1150将输入/输出(I/O)设备1160耦合到GMCH1190。替换地,存储器和图形控制器中的一个或两个集成到处理器(如本文中所描述的)中,存储器1140和协处理器1145直接耦合到处理器1110、以及在单个芯片中具有IOH1150的控制器中枢1120。
附加处理器1115的可选性质用虚线表示在图11中。每一处理器1110、1115可包括本文中描述的处理核中的一个或多个,并且可以是处理器1000的某一版本。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1120经由诸如前端总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(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中的每一个都可以是处理器1000的某一版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
处理器1270和1280被示为分别包括集成存储器控制器(IMC)单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括点对点接口1286和1288。处理器1270、1280可以使用点对点(P-P)接口电路1278、1288经由P-P接口1250来交换信息。如图12所示,IMC1272和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,总线桥1218将第一总线1216耦合至第二总线1220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1215被耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1220,在一个实施例中这些设备包括例如键盘/鼠标1222、通信设备1227以及诸如可包括指令/代码和数据1228的盘驱动器或其它海量存储设备的存储单元1230。此外,音频I/O1224可以被耦合至第二总线1220。注意,其它架构是可能的。例如,代替图12的点对点架构,系统可实现多点总线或者其他此类架构。
现在参照图13,所示出的是根据本发明实施例的更具体的第二示例性系统1300的框图。图12和13中的相同元件使用相同附图标记,且在图13中省略了图12的某些方面以避免混淆图13的其它方面。
图13示出处理器1270、1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL1272、1282包括集成存储器控制器单元并包括I/O控制逻辑。图13示出:不仅存储器1232、1234耦合至CL1272、1282,I/O设备1314也耦合至控制逻辑1272、1282。传统I/O设备1315被耦合至芯片组1290。
现在参照图14,所示出的是根据本发明实施例的SoC1400的框图。图10中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图14中,互连单元1402被耦合至:应用处理器1410,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个协处理器1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及用于耦合至一个或多个外部显示器的显示单元1440。在一个实施例中,协处理器1420包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
诸如图12所示的代码1230之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级过程语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态、有形配置,其包括存储介质,诸如硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)的以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形(morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
图15是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图15以高级语言1502示出了程序,该程序可使用x86编译器1504来编译以生成x86二进制代码1506,该二进制代码可原生地由具有至少一个x86指令集核的处理器1516来执行。具有至少一个x86指令集核的处理器1516表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分(substantial portion),或2)目标旨在在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的对象代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1504表示用于生成x86二进制代码1506(例如,对象代码)的编译器,该二进制代码1506可通过或不通过附加的可链接处理在具有至少一个x86指令集核的处理器1516上执行。类似地,图15以高级语言1502示出了程序,该程序可使用替换指令集编译器1508来编译以生成替换指令集二级制代码1510,替换指令集二级制代码1510可由不具有至少一个x86指令集核1514的处理器(诸如,具有执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的处理器)来原生地执行。指令转换器1512被用来将x86二进制代码1506转换成可以由不具有x86指令集核的处理器1514原生执行的代码。该经转换的代码不大可能与替换性指令集二进制代码1510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1512表示:通过仿真、模拟或任何其它过程来允许不具有x86指令集处理器或核的处理器或其它电子设备得以执行x86二进制代码1506的软件、固件、硬件或其组合。
在该描述和权利要求中,使用了术语“耦合”和/或“连接”、及其派生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在具体实施例中,“连接的”用于指示两个或更多个要素彼此直接物理或电接触。“耦合”可表示两个或多个元件直接物理或电气接触。然而,“耦合的”也可表示两个或更多个要素可能并未彼此直接接触,但是仍然彼此协作、彼此作用。例如,逻辑可通过一个或多个中间组件与解码器和/或高速缓存耦合。在附图中,箭头用于示出连接和/或耦合。
在说明书和权利要求书中,可能使用了术语“逻辑”。如本文中所使用的,逻辑可包括硬件、固件、软件或者其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在某些实施例中,硬件设备可包括晶体管和/或门控,并潜在地包括其他电路组件。
在以上描述中,为了提供对实施例的透彻理解阐述了具体的细节。然而,在没有这些具体细节中的部分的情况下,可实践其他实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在附图中显示且在说明书中描述的关系的所有等效关系都被涵盖在实施例内。在其它实例中,以框图形式而非以细节地示出了公知的电路、结构、设备和操作以避免使说明书的理解变得晦涩。在一些情况下,附图中所示的这些多个组件可被合并在单个组件中。在示出和描述了单一组件的一些情况下,该单一组件可被分成两个或两个以上组件。
已经以基本形式示出和描述了本文所公开的某些方法,但可任选地向这些方法添加操作和/或从这些方法移除操作。另外,已示出和/或描述了特定操作次序,但替换实施例可按不同次序执行某些操作、组合某些操作、重叠某些操作等等。
特定操作可由硬件组件执行,和/或可体现在机器可执行或电路可执行指令中,这些操作可用于使得和/或者导致硬件组件(例如,处理器、处理器的一部分、电路等)通过执行操作的指令来编程。硬件组件可包括通用或专用硬件组件。操作可由硬件、软件和/或固件的组合来执行。硬件组件可包括专用或特定逻辑(例如,潜在地与软件和/或固件组合的电路),该逻辑操作以执行和/或处理指令并响应于指令存储结果(例如,响应于一个或多个微指令或从该指令导出的其它控制信号)。
例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实践中,但是不一定需要这样。类似地,在该描述中,出于流线型化本公开和辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实施例、附图、及其描述中。然而,该公开方法不应被解释成反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求反映的,发明性方面在于少于单一公开的实施例的所有特征。因此,所附权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明单独的实施例。

Claims (35)

1.一种访问处理器的结构的方法,包括:
将处理器的结构的一部分的状态改变为隔绝状态,其中在所述隔绝状态中,所述处理器的组件不能访问所述结构的所述部分,但是能够访问所述结构的一个或多个其他部分;
在所述结构的所述部分处于隔绝状态时,将所述结构的所述部分中的非架构可见数据修改成经修改非架构可见数据;以及
在修改所述结构的所述部分中的非架构可见数据之后,将所述结构的所述部分的状态从隔绝状态改变为非隔绝状态。
2.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态包括将选自于高速缓存、寄存器集合、翻译后备缓冲器(TLB)、以及地址解码器的结构的一部分的状态改变为隔绝状态。
3.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态包括将高速缓存线的状态改变为隔绝状态,其中修改包括修改选自于所述高速缓存线的标志和所述高速缓存线的纠错码数据中的至少一者的数据,并且其中将所述状态改变为非隔绝状态包括将所述高速缓存线的状态改变为选自于修改状态、排他状态、共享状态、和无效状态的非隔绝状态。
4.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态包括改变寄存器集合中的寄存器的状态,并且其中修改包括修改选自于所述寄存器的纠错数据和记分板数据中的至少一者的数据。
5.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态是响应于第一指令而执行的,其中修改所述非架构可见数据是响应于第二指令而执行的,并且其中将所述状态改变为非隔绝状态是响应于第三指令而执行的。
6.如权利要求5所述的方法,其特征在于,所述第一指令、第二指令和第三指令中的每一者是结构访问指令。
7.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态是响应于指令而执行的,其中所述指令指示所述结构并且能够指示各自选自于高速缓存、寄存器集合、地址解码器和翻译后备缓冲器(TLB)的多个不同结构。
8.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态包括响应于指令而改变高速缓存线的状态,并且其中所述指令操作用于指示所述高速缓存将针对经修改非架构可见数据生成纠错码还是不生成纠错码。
9.如权利要求1所述的方法,其特征在于,修改包括在所述组件访问所述结构的所述一个或多个其他部分时修改所述非架构可见数据。
10.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态包括一致地将所述状态改变为隔绝状态,包括在修改所述非架构可见数据之前将所述非架构可见数据存储在一存储位置。
11.如权利要求1所述的方法,其特征在于,将所述状态改变为隔绝状态包括较高特权级组件将所述状态改变为隔绝状态,并且其中不能访问处于隔绝状态的所述结构的所述部分的组件包括较低特权级组件,所述较低特权级组件各自具有比所述较高特权级组件更低的特权级。
12.一种包括用于执行权利要求1至11中任一项所述的方法的装置的处理器。
13.一种处理器,包括:
所述处理器的结构,所述结构具有非架构可见数据;以及
逻辑单元,与所述结构耦合并被配置成用于响应于一个或多个指令:
将所述结构的一部分的状态改变为隔绝状态,其中在所述隔绝状态中,所述处理器的组件不能访问所述结构的所述部分,但是能够访问所述结构的一个或多个其他部分;
在所述结构的所述部分处于隔绝状态时,将所述结构的所述部分中的非架构可见数据修改成经修改非架构可见数据;以及
在修改所述结构的所述部分中的非架构可见数据之后,将所述结构的所述部分的状态从隔绝状态改变为非隔绝状态。
14.如权利要求13所述的处理器,其特征在于,所述逻辑单元被配置成用于响应于第一指令而将所述状态改变为隔绝状态,其中所述逻辑单元被配置成用于响应于第二指令而修改所述非架构可见数据,并且其中所述逻辑单元被配置成用于响应于第三指令而将所述状态改变为非隔绝状态。
15.如权利要求14所述的处理器,其特征在于,所述第一指令、第二指令和第三指令中的每一者具有相同操作码。
16.如权利要求13所述的处理器,其特征在于,所述结构选自于高速缓存、寄存器集合、翻译后备缓冲器(TLB)、和地址解码器。
17.如权利要求13所述的处理器,其特征在于,所述结构包括高速缓存,其中所述高速缓存的所述部分包括高速缓存线,并且其中所述逻辑单元被配置成用于响应于所述一个或多个指令而修改选自于所述高速缓存线的标志和所述高速缓存线的纠错码数据中的至少一者的数据。
18.如权利要求13所述的处理器,其特征在于,所述结构包括寄存器集合,其中所述寄存器集合的所述部分包括寄存器,并且其中所述逻辑单元被配置成用于响应于所述一个或多个指令而修改选自于所述寄存器的纠错数据和记分板数据中的至少一者的数据。
19.如权利要求13所述的处理器,其特征在于,所述逻辑单元被配置成用于响应于指令而将所述状态改变为隔绝状态,所述指令指示所述结构并且能够指示各自选自于高速缓存、寄存器集合、地址解码器和翻译后备缓冲器(TLB)的多个不同结构。
20.如权利要求13所述的处理器,其特征在于,所述结构包括高速缓存且所述高速缓存的所述部分包括高速缓存线,并且其中所述逻辑单元被配置成用于响应于指令而修改所述非架构可见数据,其中所述指令用于指示所述高速缓存针对经修改非架构可见数据生成纠错码还是不生成纠错码。
21.如权利要求13所述的处理器,其特征在于,在所述逻辑单元修改所述非架构可见数据时,所述组件能够访问所述结构的所述一个或多个其他部分。
22.如权利要求13所述的处理器,其特征在于,所述逻辑单元被配置成用于响应于所述一个或多个指令而一致地将所述状态改变为隔绝状态,包括在修改所述非架构可见数据之前将所述非架构可见数据存储在一存储位置。
23.一种处理器,包括:
所述处理器的结构,所述结构具有非架构可见数据;以及
第一改变装置,与所述结构耦合并被配置成用于响应于一个或多个指令将所述结构的一部分的状态改变为隔绝状态,其中在所述隔绝状态中,所述处理器的组件不能访问所述结构的所述部分,但是能够访问所述结构的一个或多个其他部分;
修改装置,与所述结构耦合并被配置成用于响应于所述一个或多个指令而在所述结构的所述部分处于隔绝状态时将所述结构的所述部分中的非架构可见数据修改为经修改非架构可见数据;以及
第二改变装置,与所述结构耦合并被配置成用于响应于所述一个或多个指令而在修改所述结构的所述部分中的非架构可见数据之后将所述结构的所述部分的状态从隔绝状态改变为非隔绝状态。
24.一种访问处理器的结构的设备,包括:
用于将处理器的结构的一部分的状态改变为隔绝状态的装置,其中在所述隔绝状态中,所述处理器的组件不能访问所述结构的所述部分,但是能够访问所述结构的一个或多个其他部分;
用于在所述结构的所述部分处于隔绝状态时,将所述结构的所述部分中的非架构可见数据修改成经修改非架构可见数据的装置;以及
用于在修改所述结构的所述部分中的非架构可见数据之后,将所述结构的所述部分的状态从隔绝状态改变为非隔绝状态的装置。
25.如权利要求24所述的设备,其特征在于,用于将所述状态改变为隔绝状态的装置包括:用于将选自于高速缓存、寄存器集合、翻译后备缓冲器(TLB)、以及地址解码器的结构的一部分的状态改变为隔绝状态的装置。
26.如权利要求24所述的设备,其特征在于,用于将所述状态改变为隔绝状态的装置包括用于将高速缓存线的状态改变为隔绝状态的装置,其中修改包括修改选自于所述高速缓存线的标志和所述高速缓存线的纠错码数据中的至少一者的数据,并且其中用于将所述状态改变为非隔绝状态的装置包括用于将所述高速缓存线的状态改变为选自于修改状态、排他状态、共享状态、和无效状态的非隔绝状态的装置。
27.如权利要求24所述的设备,其特征在于,用于将所述状态改变为隔绝状态的装置包括:用于改变寄存器集合中的寄存器的状态的装置,并且其中修改包括修改选自于所述寄存器的纠错数据和记分板数据中的至少一者的数据。
28.如权利要求24所述的设备,其特征在于,将所述状态改变为隔绝状态是响应于第一指令而执行的,其中修改所述非架构可见数据是响应于第二指令而执行的,并且其中将所述状态改变为非隔绝状态是响应于第三指令而执行的。
29.如权利要求28所述的设备,其特征在于,所述第一指令、第二指令和第三指令中的每一者是结构访问指令。
30.如权利要求24所述的设备,其特征在于,将所述状态改变为隔绝状态是响应于指令而执行的,其中所述指令指示所述结构并且能够指示各自选自于高速缓存、寄存器集合、地址解码器和翻译后备缓冲器(TLB)的多个不同结构。
31.如权利要求24所述的设备,其特征在于,用于将所述状态改变为隔绝状态的装置包括响应于指令而改变高速缓存线的状态的装置,并且其中所述指令操作用于指示所述高速缓存将针对经修改非架构可见数据生成纠错码还是不生成纠错码。
32.如权利要求24所述的设备,其特征在于,修改包括在所述组件访问所述结构的所述一个或多个其他部分时修改所述非架构可见数据。
33.如权利要求24所述的设备,其特征在于,用于将所述状态改变为隔绝状态的装置包括用于一致地将所述状态改变为隔绝状态的装置,包括在修改所述非架构可见数据之前将所述非架构可见数据存储在一存储位置。
34.如权利要求24所述的设备,其特征在于,将所述状态改变为隔绝状态包括较高特权级组件将所述状态改变为隔绝状态,并且其中不能访问处于隔绝状态的所述结构的所述部分的组件包括较低特权级组件,所述较低特权级组件各自具有比所述较高特权级组件更低的特权级。
35.一种计算机系统,所述计算机系统包括如权利要求12至21中任一项所述的处理器,以及与所述处理器相耦合的动态随机存取存储器。
CN201180076095.XA 2011-12-30 2011-12-30 结构访问处理器、方法、系统和指令 Active CN104025027B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/068238 WO2013101229A1 (en) 2011-12-30 2011-12-30 Structure access processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
CN104025027A CN104025027A (zh) 2014-09-03
CN104025027B true CN104025027B (zh) 2017-08-15

Family

ID=48698461

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180076095.XA Active CN104025027B (zh) 2011-12-30 2011-12-30 结构访问处理器、方法、系统和指令

Country Status (5)

Country Link
US (1) US20150134932A1 (zh)
EP (1) EP2798471A4 (zh)
CN (1) CN104025027B (zh)
TW (1) TWI465920B (zh)
WO (1) WO2013101229A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013040241A1 (en) 2011-09-13 2013-03-21 Privatecore, Inc. Software cryptoprocessor
US9477603B2 (en) 2013-09-05 2016-10-25 Facebook, Inc. System and method for partitioning of memory units into non-conflicting sets
US9983894B2 (en) 2013-09-25 2018-05-29 Facebook, Inc. Method and system for providing secure system execution on hardware supporting secure application execution
US10049048B1 (en) 2013-10-01 2018-08-14 Facebook, Inc. Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US9747450B2 (en) 2014-02-10 2017-08-29 Facebook, Inc. Attestation using a combined measurement and its constituent measurements
US9734092B2 (en) * 2014-03-19 2017-08-15 Facebook, Inc. Secure support for I/O in software cryptoprocessor
US9824012B2 (en) * 2015-09-24 2017-11-21 Qualcomm Incorporated Providing coherent merging of committed store queue entries in unordered store queues of block-based computer processors
US20220207148A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Hardening branch hardware against speculation vulnerabilities
CN113779649B (zh) * 2021-09-08 2023-07-14 中国科学院上海高等研究院 一种针对投机执行攻击的防御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1215863A (zh) * 1997-10-15 1999-05-05 戴尔美国公司 计算机存储装置的可修改分区引导记录
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
CN1808392A (zh) * 2004-12-29 2006-07-26 英特尔公司 用于从在寄存器文件中的软错误中恢复的方法和装置
CN101201885A (zh) * 2006-09-29 2008-06-18 英特尔公司 一种在vt环境中操作的软件代理的篡改保护方法和装置
CN101297270A (zh) * 2005-08-23 2008-10-29 先进微装置公司 计算器系统内主动同步的方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6990570B2 (en) * 1998-10-06 2006-01-24 Texas Instruments Incorporated Processor with a computer repeat instruction
US6708330B1 (en) * 2000-06-13 2004-03-16 Cisco Technology, Inc. Performance improvement of critical code execution
US7185183B1 (en) * 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US20030097587A1 (en) * 2001-11-01 2003-05-22 Gulick Dale E. Hardware interlock mechanism using a watchdog timer
US6961806B1 (en) * 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US20040034820A1 (en) * 2002-08-15 2004-02-19 Soltis, Donald C. Apparatus and method for pseudorandom rare event injection to improve verification quality
US8006225B1 (en) * 2004-06-03 2011-08-23 Synposys, Inc. Method and system for automatic generation of instruction-set documentation from an abstract processor model described using a hierarchical architectural description language
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US20090037782A1 (en) * 2007-08-01 2009-02-05 Arm Limited Detection of address decoder faults
US8645965B2 (en) * 2007-12-31 2014-02-04 Intel Corporation Supporting metered clients with manycore through time-limited partitioning
CN101645005A (zh) * 2008-08-06 2010-02-10 中国人民解放军信息工程大学 基于多维可变描述表的处理器结构与指令系统表示方法
US8347119B2 (en) * 2009-06-26 2013-01-01 Intel Corporation System and method for processor utilization adjustment to improve deep C-state use
US8239635B2 (en) * 2009-09-30 2012-08-07 Oracle America, Inc. System and method for performing visible and semi-visible read operations in a software transactional memory
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US8793471B2 (en) * 2010-12-07 2014-07-29 Advanced Micro Devices, Inc. Atomic program verification

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1215863A (zh) * 1997-10-15 1999-05-05 戴尔美国公司 计算机存储装置的可修改分区引导记录
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
CN1808392A (zh) * 2004-12-29 2006-07-26 英特尔公司 用于从在寄存器文件中的软错误中恢复的方法和装置
CN101297270A (zh) * 2005-08-23 2008-10-29 先进微装置公司 计算器系统内主动同步的方法
CN101201885A (zh) * 2006-09-29 2008-06-18 英特尔公司 一种在vt环境中操作的软件代理的篡改保护方法和装置

Also Published As

Publication number Publication date
CN104025027A (zh) 2014-09-03
TWI465920B (zh) 2014-12-21
TW201346567A (zh) 2013-11-16
EP2798471A4 (en) 2016-12-21
WO2013101229A1 (en) 2013-07-04
US20150134932A1 (en) 2015-05-14
EP2798471A1 (en) 2014-11-05

Similar Documents

Publication Publication Date Title
CN104025027B (zh) 结构访问处理器、方法、系统和指令
CN104050012B (zh) 指令模拟处理器、方法和系统
CN104049948B (zh) 指令仿真处理器、方法和系统
CN104204990B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN105320611B (zh) 用于细粒存储器保护的方法和设备
CN106716434B (zh) 具有独立的用户域与管理程序域的存储器保护密钥架构
CN108268282A (zh) 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、系统和指令
CN108351830A (zh) 用于存储器损坏检测的硬件装置和方法
CN106575218A (zh) 持久性存储屏障处理器、方法、系统和指令
CN104969199B (zh) 实施黑名单分页结构指示值的处理器、方法,以及系统
CN107683480A (zh) 用于支持对受保护容器的实时迁移的处理器、方法、系统和指令
CN108701027A (zh) 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令
CN104246694B (zh) 聚集页错误信令和处理
US20170286302A1 (en) Hardware apparatuses and methods for memory performance monitoring
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN109690552A (zh) 用于判定是否将受保护容器页的加密副本加载到受保护容器存储器中的处理器、方法、系统和指令
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN104050415B (zh) 用于系统调用的稳健且高性能的指令
CN105247479B (zh) 指令次序实施指令对、处理器、方法和系统
CN109564552A (zh) 增强基于每页当前特权等级的存储器访问许可
CN109416672A (zh) 不对有缺陷数据采取异常的从存储器读取指令、处理器、方法和系统
CN108292273A (zh) 用于子页写入保护的方法和装置
CN108292232A (zh) 用于加载索引和分散操作的指令和逻辑
CN105027137B (zh) 用于针对增强型安全检查的页走查扩展的装置和方法
CN106575284A (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
GR01 Patent grant
GR01 Patent grant