CN114691598A - 用于处理器的独立于存储器的和可缩放状态组件初始化 - Google Patents
用于处理器的独立于存储器的和可缩放状态组件初始化 Download PDFInfo
- Publication number
- CN114691598A CN114691598A CN202111562749.1A CN202111562749A CN114691598A CN 114691598 A CN114691598 A CN 114691598A CN 202111562749 A CN202111562749 A CN 202111562749A CN 114691598 A CN114691598 A CN 114691598A
- Authority
- CN
- China
- Prior art keywords
- state
- processor
- initialization
- component
- initialized
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 84
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000012545 processing Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 29
- 238000007667 floating Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30098—Register arrangements
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
Abstract
本申请公开了用于处理器的独立于存储器的和可缩放状态组件初始化。本公开的系统和方法可提供以高效方式启用多个状态的初始化的初始化技术。初始化技术包括用于跟踪处理器的状态组件的使用的寄存器以及用于对状态初始化指令解码的解码单元。状态初始化指令指示状态组件要被初始化。初始化技术还包括与解码单元耦合的执行单元。该执行单元响应于状态初始化指令而用于:在不作为初始化的部分从存储器读取另一状态组件的情况下初始化状态组件。
Description
背景
本公开总体上关于用于存储相应状态的处理器的初始化(INIT)状态组件的初始化过程。更具体地,本公开关于用于重置为一个或多个状态组件的初始化状况的独立于存储器的INIT过程。
当处理器、芯片上系统(SoC)和/或电子设备启动时,该处理器、芯片上系统和/或电子设备的一个或多个状态组件和/或寄存器能以INIT(初始化)状态开始。一旦状态组件被改变,寄存器就改变。然而,这些寄存器中的持久性数据可导致数据对其他用户和/或线程是脆弱的。例如,在上下文切换期间,操作系统(OS)和虚拟机管理器(VMM)可能易受状态信息向不同的进程/虚拟机泄露的影响。此外,在上下文切换期间具有从一个软件线程到另一软件线程的残余数据会给予恶意线程对敏感数据的访问权。经由残余信息的该脆弱性也存在于由VMM进行的虚拟处理器(VP)上下文切换中。
此外,将处于这些状态的数据存储达在其中数据不被使用的延长的持续时间消耗功率并且会降低性能。例如,如果其他状态组件处于非INIT状态,则某些指令的执行会导致性能损失。例如,在流送单指令多数据(SIMD)扩展(SSE)指令时具有脏的(即,从INIT状态变化而来)AVX寄存器相比执行128位AVX版本的相同指令会花费更长时间来完成。
相应地,在处理器或SoC上运行的软件在处理器和/或包括该处理器的电子设备的启动/重置时可被置于扩展INIT状态(例如,在寄存器堆中)。可出于安全目的执行重置为状态组件的初始化状况。然而,用于重置为状态组件的初始化状况的机制可能是受限的。例如,处理器或SoC可通过以下方式重置为状态组件的初始化状况:存储状态组件,清除状态组件的位以重置为初始化状况,并且通过从存储器读取状态组件位来恢复非INIT状态组件。然而,这种从存储器的读取会花费重置过程持续时间的大部分时间。替代地,可使用状态专用初始化过程,但是这些初始化过程利用针对每个状态组件的特定指令,而不具有被应用于未来发生的状态组件和/或被同时应用于多个状态组件的灵活性。附加地或替代地,状态专用初始化过程会留下处于陈旧状态的使用中标志(例如,XINUSE),该陈旧状态不跟踪状态组件已被置于INIT状况。
本节旨在向读者介绍可能涉及本公开的各方面的技术的各方面,这在下文描述和/或要求保护。相信该讨论有助于向读者提供促进对本公开的各方面更好的理解的背景信息。相应地,可理解这些陈述应从这个角度来阅读,而不是作为对现有技术的承认。
附图说明
在阅读下列具体实施方式时并在参考附图时,可更好地理解本公开的各方面,在附图中:
图1是根据本公开的实施例的寄存器的框图;
图2A是图示出根据本公开的实施例的有序流水线以及寄存器重命名的、乱序发布/执行流水线的框图;
图2B是图示出根据本公开的实施例的、要被包括在处理器中的有序架构核以及寄存器重命名的、乱序发布/执行架构核的框图;
图3A-图3B图示出根据本公开的实施例的更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块;
图4是根据本公开的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图;
图5示出的是根据本公开的实施例的系统的框图;
图6是根据本公开的实施例的第一更具体的示例性系统的框图;
图7是根据本公开的实施例的第二更具体的示例性系统的框图;
图8是根据本公开的实施例的芯片上系统(SoC)的框图;
图9是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图;
图10是根据本公开的实施例的、用于使用恢复过程来初始化前述附图中的任何附图中的处理器或图8的SoC的状态组件的过程的流程图;
图11是根据本公开的实施例的、用于使用基于状态专用指令的过程来初始化前述附图中的任何附图中的处理器或图8的SoC的状态组件的过程的流程图;
图12是根据本公开的实施例的、用于使用通用独立于存储器的过程来初始化前述附图中的任何附图中的处理器或图8的SoC的状态组件的过程的流程图;
图13是图示出根据本公开的实施例的图12的过程的更详细视图的流程图。
具体实施方式
下文将描述一个或多个具体实施例。为了提供对这些实施例的简洁描述,说明书中并未描述实际实现方式的所有特征。应当领会,在任何此类实际实现方式的开发中,如同在任何工程或设计项目中一样,为了实现开发人员的特定目标,必须作出众多特定于实现方式的决策,诸如遵守与系统相关的约束和与业务相关的约束,这些约束可能因实现方式而有所不同。而且应当领会,此类开发工作可能是复杂且耗时的,但是对于受益于本公开的普通技术人员而言,这仍将是设计、制作和制造的例行任务。
当介绍本公开的各实施例的要素时,冠词“一(a、an)”、“该(the)”旨在意指存在这些要素中的一个或多个要素。术语“包含”、“包括”、“具有”旨在是包含性的,并且意指除了所列举的要素之外还可能存在附加要素。另外,应当理解,对本公开的“一个实施例”或“实施例”的引用不旨在被解释为排除也包含所陈述的特征的附加实施例的存在。
寄存器架构
图1是根据本公开的实施例的寄存器10的框图。在所图示的实施例中,存在多个(例如,32个)向量寄存器12,这些向量寄存器12可以是多个位(例如,512位)宽的。在寄存器10中;这些寄存器被引用为zmm0至zmmi。较低的n个(例如,16个)zmm寄存器的较低阶的(例如,256个)位覆盖在对应的寄存器ymm上。较低的n个zmm寄存器的较低阶的(例如,128个位)(其也是ymm寄存器的较低阶的n个位)覆盖在对应的寄存器xmm上。
写掩码寄存器14可包括m个(例如,8个)写掩码寄存器(k0至km),这些写掩码寄存器各自具有多个(例如,64个)位。附加地或替代地,写掩码寄存器14中的至少一些可具有不同的尺寸(例如,16位)。向量掩码寄存器12中的至少一些(例如,k0)被禁止用作写掩码。当此类向量掩码寄存器被指示时,硬连线的写掩码(例如,0xFFFF)被选择,并且实际上禁用针对那条指令的写掩码。
通用寄存器16可包括具有对应的位尺寸(例如,64)的多个(例如,16个)寄存器,这些对应的位尺寸与x86寻址模式一起使用以对存储器操作数寻址。这些寄存器可通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来引用。附加地或替代地,这些通用寄存器16可包括EDX:EAX。EDX:EAX意指EDX的32个位和EAX的32个位被串接在一起以形成64位的寄存器。这些寄存器中的至少一些寄存器的部分(例如,寄存器的32个位)可被用于比寄存器的完整长度短的模式(例如,32位模式)。
标量浮点栈寄存器堆(x87栈)18具有被混叠的MMX紧缩整数平坦寄存器堆20。x87栈18是用于使用x87指令集扩展对浮点数据执行标量浮点操作的八元素的(或其他数量的元素的)栈。浮点数据可具有各种精度水平(例如,16位、32位、64位、80位、或更多位)。MMX紧缩整数平台寄存器堆20被用于对64位紧缩整数数据执行操作,并且被用于保存用于在MMX紧缩整数平台寄存器堆20与XMM寄存器之间执行的一些操作的操作数。
替代实施例可以使用更宽的或更窄的寄存器。另外,替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
核架构、处理器和计算机架构
处理器核能以不同的方式、出于不同的目的并且在不同的处理器中实现。例如,此类核的实现可以包括:1)适用于通用计算的通用有序核;2)适用于通用计算的高性能通用乱序核;3)主要适用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括适用于通用计算的一个或多个通用有序核和/或适用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
有序和乱序核架构
图2A是图示出根据本公开的实施例的有序流水线和寄存器重命名的、乱序发布/执行流水线的框图。图2B是图示出根据实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的、乱序发布/执行架构核两者的框图。图2A-图2B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图2A中,处理器中的流水线30包括取出级32、长度解码级34、解码级36、分配级38、重命名级40、调度(也被称为分派或发布)级42、寄存器读取/存储器读取级44、执行级46、写回/存储器写入级48、异常处置级50和提交级52。
图2B示出处理器核54,该处理器核54包括前端单元56,该前端单元56耦合到执行引擎单元58,并且前端单元56和执行引擎单元58两者都耦合到存储器单元6。处理器核54可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,处理器核54可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元56包括分支预测单元62,该分支预测单元耦合到指令高速缓存单元64,该指令高速缓存单元64耦合到指令转换后备缓冲器(TLB)单元66。TLB 66耦合到指令取出单元68。指令取出单元68耦合到解码电路70。解码电路70(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码电路70可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。处理器核54可包括存储用于宏指令的微代码的微代码ROM或其他介质(例如,在解码电路70中,或以其他方式在前端单元56内)。解码电路70耦合到执行引擎单元58中的重命名/分配器单元72。
执行引擎单元58包括重命名/分配器单元72,该重命名/分配器单元72耦合到引退单元74和一个或多个调度器单元的集合76。(多个)调度器单元76表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元76耦合到(多个)物理寄存器堆单元78。(多个)物理寄存器堆单元78中的每一个物理寄存器堆单元表示存储一种或多种不同数据类型的一个或多个物理寄存器堆,不同的数据类型诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元78包括向量寄存器12、写掩码寄存器14、和/或x87栈18。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元78由引退单元74重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。
引退单元74和(多个)物理寄存器堆单元78耦合到(多个)执行集群80。(多个)执行集群80包括一个或多个执行单元的集合82以及一个或多个存储器访问电路的集合84。执行单元82可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行多个不同功能的多个执行单元。(多个)调度器单元76、(多个)物理寄存器堆单元78、以及(多个)执行集群80被示出为单数或附属,因为一些处理器核54为某些类型的数据/操作创建分开的流水线(例如,各自具有其自身的调度器单元、(多个)物理寄存器堆单元、和/或执行集群的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线。在分开的存储器访问流水线的情况下,用于该分开的存储器访问流水线的处理器核54是仅有的具有存储器访问电路84的执行集群80。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线执行有序执行。
存储器访问电路84的集合耦合到存储器单元60。存储器单元60包括数据TLB单元86,该数据TLB单元86耦合到数据高速缓存单元88,该数据高速缓存单元88耦合到第二级(L2)高速缓存单元90。存储器访问单元84可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元60中的数据TLB单元86。指令高速缓存单元64还耦合到存储器单元60中的第二级(L2)高速缓存单元90。L2高速缓存单元90到一个或多个其他级别的高速缓存,和/或耦合到主储器。
作为示例,寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线30:1)指令取出68执行流水线30的取出级32和长度解码级34;2)解码电路70执行流水线30的解码级36;3)重命名/分配器单元72执行流水线的分配级38和重命名级40;4)(多个)调度器单元76执行流水线30调度级42;5)(多个)物理寄存器堆单元78和存储器单元60执行流水线30的寄存器读取/存储器读取级44;执行集群80执行流水线30的执行级46);6)存储器单元60和(多个)物理寄存器堆单元78执行流水线30的写回/存储器写入级48;7)各单元可牵涉到流水线的异常处置级50;和/或8)引退单元74和(多个)物理寄存器堆单元78执行流水线30的提交级52。
处理器核54可支持一个或多个指令集(诸如,x86指令集(具有或不具有用于更新版本的附加扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。附加地或替代地,处理器核54包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(诸如,时分取出和解码以及超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但是可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令高速缓存单元64、分开的数据高速缓存单元88、以及共享的L2高速缓存单元90,但是一些实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该处理器可包括内部高速缓存和在处理器核54和/或处理器外部的外部高速缓存的组合。替代地,一些处理器可使用在处理器核54和/或处理器外部的高速缓存。
图3A和图3B图示出有序核架构的更详细的框图。处理器核54包括芯片中的一个或多个逻辑块(包括相同类型和/或不同类型的其他核)。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他I/O逻辑进行通信。
图3A是根据本公开的实施例的单个处理器核54以及它至管芯上互连网络100的连接及其第二级(L2)高速缓存的本地子集104的框图。在一个实施例中,指令解码器102支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存106允许对进入标量和向量单元中的、对高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元108和向量单元110使用分开的寄存器集合(分别为标量寄存器112(例如,x87栈18)和向量寄存器114(例如,向量寄存器112)),并且在这些寄存器之间传输的数据被写入到存储器,并随后从第一级(L1)高速缓存106读回,但是本公开的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集104是全局L2高速缓存单元90的一部分,该全局L2高速缓存单元90被划分成多个分开的本地子集,每个处理器核一个本地子集。每个处理器核54具有到其自身的L2高速缓存的本地子集104的直接访问路径。由处理器核54读取的数据被存储在其L2高速缓存子集104中,并且可以与其他处理器核54访问其自身的本地L2高速缓存子集并行地被快速访问。由处理器核54写入的数据被存储在其自身的L2高速缓存子集104中,并在必要的情况下从其他子集转储清除。互连网络100确保共享数据的一致性。互连网络100是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每条数据路径在每个方向上可具有多个(例如,1012个)位的宽度。
图3B是根据本公开的实施例的图3A中的处理器核的一部分的展开图。图3B包括L1高速缓存106的L1数据高速缓存106A部分,以及关于向量单元110和向量寄存器114的更多细节。具体地,向量单元110可以是向量处理单元(VPU)(例如,向量算术逻辑单元(ALU)118),该VPU执行整数、单精度浮点以及双精度浮点指令中的一条或多条。该VPU通过混合单元120支持对寄存器输入的混合,通过数值转换单元122A和122B支持数值转换,并且通过复制单元124支持对存储器输入的复制。写掩码寄存器14允许预测所得的向量写入。
图4是根据本公开的实施例的可具有多于一个的处理器核54、可具有(多个)集成存储器控制器单元132、以及可具有集成图形器件的处理器130的框图。图4中的实线框图示出具有单个核54A、系统代理单元134、一个或多个总线控制器单元的集合138的处理器130,而虚线框的任选的附加图示出具有多个核54A-54N、系统代理单元134中的一个或多个集成存储器控制器单元的集合132、以及专用逻辑136的处理器130。
因此,处理器130的不同实现可包括:1)CPU,其中专用逻辑136是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核54A-N是一个或多个通用核(例如,通用有序核、通用乱序核、或其组合);2)协处理器,其中核54A-N是旨在主要用于图形和/或科学(吞吐量)的相对大量的专用核;以及3)协处理器,其中核54A-N是相对大量的通用有序核。因此,处理器130可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器130可以被实现在一个或多个芯片上。处理器130可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合140、以及耦合到集成存储器控制器单元的集合132的外部存储器(未示出)。共享高速缓存单元的集合140可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然基于环的互连网络100可将集成图形逻辑136(集成图形逻辑136是其示例,并且在本文中还被称为专用逻辑136)、共享高速缓存单元的集合140和/或系统代理单元134/(多个)集成存储器控制器单元132互连,但是可使用任何数量的公知技术来互连此类单元。例如,可在一个或多个高速缓存单元142A-N与核54A-N之间维持一致性。
在一些实施例中,一个或多个核54A-N能够实现多线程化。系统代理单元134包括协调和操作核54A-N的那些组件。系统代理单元134可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括用于对核54A-N以及集成图形逻辑136的功率状态进行调节的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核54A-N在架构指令集方面可以是同构或异构的。也就是说,核54A-N中的两个或更多个可以能够执行同一指令集,而其他核可能仅能够执行单个指令集的子集或不同的指令集。
计算机架构
图5-图8是计算机架构的实施例的框图。这些架构可适于膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置。一般而言,能够并入处理器130和/或其他执行逻辑的各种广泛的系统或电子设备。
现在参考图5,所示出的是根据本公开的实施例的系统150的框图。系统150可以包括一个或多个处理器130A、130B,这些处理器耦合到控制器中枢152。控制器中枢152可包括图形存储器控制器中枢(GMCH)154和输入/输出中枢(IOH)156(其可以在分开的芯片上);GMCH 154包括存储器和图形控制器,存储器158和协处理器160耦合到该存储器和图形控制器;IOH 156将输入/输出(I/O)设备164耦合到GMCH 154。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器130内,存储器158和协处理器160耦合到(例如,直接耦合到)处理器130A,并且控制器中枢152与IOH 156处于单个芯片中。
附加的处理器130B的任选性在图5中通过虚线来表示。每一处理器130A、130B可包括本文中描述的处理核54中的一个或多个,并且可以是处理器130的某一版本。
存储器158可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或其组合。对于至少一个实施例,控制器中枢152经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接162与(多个)处理器130A、130B进行通信。
在一个实施例中,协处理器160是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在实施例中,控制器中枢152可以包括集成图形加速器。
在处理器130A、130B的物理资源之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一些实施例中,处理器130A执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器130A将这些协处理器指令识别为具有应当由附连的协处理器160执行的类型。因此,处理器130A在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器160。协处理器160接受并执行所接收的协处理器指令。
现在参见图6,所示出的是根据本公开的实施例的多处理器系统170的更详细的框图。如图6中所示,多处理器系统170是点对点互连系统,并且包括经由点对点接口190耦合的处理器172和处理器174。处理器172和174中的每一个都可以是处理器130的某一版本。在本公开的一个实施例中,处理器172和174分别是处理器130A和130B,而协处理器176是协处理器160。在另一实施例中,处理器172和174分别是处理器130A和协处理器160。
处理器172和174示出为分别包括集成存储器控制器(IMC)单元178和180。处理器172还包括点对点(P-P)接口182和184作为其总线控制器单元的部分。类似地,处理器174包括P-P接口186和188。处理器172、174可经由使用P-P接口184、188的点对点接口190来交换信息。如图6中所示,IMC178和180将处理器耦合到相应的存储器,即存储器192和存储器193,这些存储器可以是本地附连到相应处理器172、174的主存储器的不同部分。
处理器172和174可各自经由使用点对点接口182、200、186、202的各个P-P接口196、198与芯片组194交换信息。芯片组194可以任选地经由高性能接口204来与协处理器174交换信息。在实施例中,协处理器176是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器172或174中,或在这两个处理器172或174的外部的、经由相应的P-P互连与处理器172、174连接,使得如果相应的处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组194可以经由接口208耦合到第一总线206。在实施例中,第一总线206可以是外围组件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图6中所示,各种I/O设备210可连同总线桥212一起耦合到第一总线206,该总线桥212将第一总线206耦合到第二总线214。在实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器216耦合到第一总线206。在实施例中,第二总线214可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线214,这些设备包括例如键盘和/或鼠标218、通信设备220以及存储单元222,该存储单元222诸如可包括指令/代码和数据224的盘驱动器或者其他大容量存储设备。此外,音频I/O 226可以被耦合到第二总线214。注意,可为多处理器系统170部署其他架构。例如,代替图6的点对点架构,多处理器系统170可以实现多分支总线或其他此类架构。
现在参考图7,所示出的是根据本公开的实施例的系统230的框图。图7和图8中的类似元件包含类似的附图标记,并且已从图7中省略了图6的某些方面以避免混淆图7的其他方面。
图7图示处理器172、174可分别包括集成存储器和I/O控制逻辑(“IMC”)178和180。因此,IMC 178、180包括集成存储器控制器单元,并包括I/O控制逻辑。图7示出不仅存储器192、193耦合至IMC 178、180,而且I/O设备231也耦合至IMC 178、180。传统I/O设备232经由接口208耦合至芯片组194。
现在参考图8,示出的是根据本公开的实施例的SoC 250的框图。图4中的类似要素具有类似的附图标记。另外,虚线框是被包括在一些SoC 250中的任选的特征。在图8中,(多个)互连单元252被耦合到:应用处理器254,其包括一个或多个核的集合54A-N的集合以及(多个)共享高速缓存单元140,一个或多个核的集合54A-N包括高速缓存单元142A-N;系统代理单元134;(多个)总线控制器单元138;(多个)集成存储器控制器单元132;一个或多个协处理器的集合256,其可包括集成图形逻辑、图像处理器、音频处理器和/或视频处理器;静态随机存取存储器(SRAM)单元258;直接存储器存取(DMA)单元260;以及用于耦合到一个或多个外部显示器的显示单元262。在实施例中,(多个)协处理器256包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本公开的实施例可实现为在可编程系统上执行的计算机程序和/或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图6中图示的数据224)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码还能以汇编语言或以机器语言来实现。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡、光卡;或适于存储电子指令的任何其他类型的介质。
因此,本公开的实施例包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如按照硬件描述语言(HDL)的设计,它可定义本文中描述的结构、电路、装置、处理器和/或系统特征。此类实施例也可被称为程序产品。
仿真
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以实现在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图9是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其任何组合来实现。图9示出可使用x86编译器282来编译高级语言280形式的程序,以生成可由具有至少一个x86指令集核的处理器286原生执行的x86二进制代码284。具有至少一个x86指令集核的处理器286表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器282表示可操作用于生成x86二进制代码284(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器286上执行。
类似地,图9示出可以使用替代的指令集编译器288来编译高级语言280形式的程序,以生成可以由不具有至少一个x86指令集核的处理器292(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的处理器核54的处理器)原生执行的替代的指令集二进制代码290。指令转换器294用于将x86二进制代码284转换成可以由不具有x86指令集核的处理器292原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码290相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码可完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器294通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码284的软件、固件、硬件或其组合。
状态组件的初始化
如先前所述,在处理器或SoC上运行的软件可在处理器的启动/重置时和/或在包括处理器的电子设备的启动时被初始化为状态组件的初始化状况(例如,在寄存器堆中)。例如,状态组件的初始化可包括使状态组件归零为初始化状况。替代地,初始化可包括写入另一预配置值(例如,1或另一值)。
也可出于安全目的执行状态组件的初始化/重新初始化。例如,在上下文切换期间,可使用扩展状态组件的操作系统(OS)和虚拟机管理器(VMM)初始化以在无需初始化为状态组件的重置配置的情况下避免状态信息向不同的进程/虚拟机的泄露。此外,在上下文切换期间具有从一个软件线程到另一软件线程的残余数据会给予恶意线程对敏感数据的访问权。除非处理器针对虚拟处理器(VP)上下文切换初始化为状态组件的重置配置,否则经由残余信息的该脆弱性也会存在于VP上下文切换中。
附加地或替代地,也可出于性能/功率原因来使用初始化为状态组件的重置配置。例如,如果其他状态组件处于非初始化状态,则某些指令的执行会导致性能损失。例如,在流送单指令多数据(SIMD)扩展(SSE)指令时具有脏的(即,从初始化状态变化而来)AVX寄存器相比执行128位AVX版本的相同指令会花费更长时间来完成。在此类场景中,AVX寄存器的较高位可被置于初始化状态以避免此类性能损失。另外,保持任何量的数据将消耗功率。因此,保持不被使用的数据消耗了可能被浪费的功率。为了避免该附加的功率消耗,处理器可重置为状态组件的初始化状况。
用于重置为状态组件的初始化状况的一种方法可包括使用恢复XRSTOR/S(XRSTOR或XRSTORS)。图10时利用XRSTOR/S的过程300的实施例的流程图。如图所示,处理器确定状态组件要移动到初始化状况(INIT)(框302)。例如,处理器可确定512位SIMD指令(例如,AVX512)状态组件由于上下文切换和/或进程的完成而要被重置。对于要重置为初始化状况的状态组件中的每个状态组件,处理器缓冲器中的(多个)位,其中这(多个)位与该状态组件对应(框304)。例如,如果状态组件512位SIMD指令要被重置,则缓冲器(XSTATE_BV)的多个位/位的位置(例如,位5、位6和位7)可被清除,以标记状态组件512位SIMD指令以便重置为该状态组件512位SIMD指令的初始化状况。XSAVE头部的XSTATE_BV字段典型地被用于将经修改的字段写回到存储器。具体地,如果所请求特征位映射(RFBM)位(例如,RFBM[i])具有值1,则XSAVE用XINUSE位映射的对应的位映射字段的值来写入XSTATE[i]。XINUSE是位映射,通过该位映射,处理器跟踪各种状态组件的状态。例如,与状态组件位映射的位i对应的状态组件被称为状态组件i。因此,x87状态是状态组件0;SSE状态是状态组件1;AVX状态是状态组件2;MPX状态包括状态组件3-4;AVX-512包括状态组件5-7;PT状态是状态组件8;PKRU状态是状态组件9;CET状态包括状态组件11-12;HDC状态是状态组件13;并且HWP状态是状态组件16。
伴随着(多个)状态组件在缓冲器中被初始化/清除,处理器可开始XRSTOR/S过程305。作为XRSTOR/S过程305的部分,处理器(例如,(多个)执行单元82)利用适当的EDX:EAX掩码执行SRSTOR/S指令(框306)。XRSTOR/S包括使用存储器访问电路84从先前存储的状态组件读取状态组件。XRSTOR/S利用特征掩码,该特征掩码具有指示哪些状态组件要从存储器被读取的对应的位(例如,5、6、7)集合。处理器(例如,(多个)执行集群80)随后从EDX:EAX读取位(框308)。如果这些位在存储器中被清除但在寄存器中被置位(框310),则(多个)执行单元80跳过读取与被清除的位对应的状态组件以恢复状态(例如,512位SIMD指令)(框312)。与恢复被清除的位相反,(多个)执行单元82初始化与处理器中的位对应的状态(框314)。然而,如果位不被清除,则(多个)执行集群80从缓冲器读取与位对应的状态(框316),并且使用XRSTOR/S来恢复寄存器状态(框318)。(多个)执行集群80保持读取位,直到掩码/寄存器已被完全处理(框320)。一旦所有位已被审查/处理,XRSTOR/S过程305结束(框322)。
使用XRSTOR/S可使被执行以完成重置为初始化状况的指令的数量最小化,同时帮助软件保持通用且前瞻。然而,由于处理器访问存储器中的XSAVE头部以标识要初始化的状态组件,因此XRSTOR/S过程与不利用存储器调用来初始化状态组件(例如,5个周期)相比使用起来相对昂贵(例如,100个周期)。此外,由于XRSTOR/S使用存储器访问,因此它会导致其他损失,诸如,转换后备缓冲器未命中或页错误。在一些情形(例如,AMX)中,全XSAVE缓冲器尺寸会延伸超出页长度范围,从而导致页错误在此类情形下变得更频繁。
附加于或替代于使用XRSTOR/S来重置为状态组件的初始化状况,如果存在用于将听歌定状态往回恢复到INIT的支持性指令,则可使用状态专用指令集架构(ISA)来重置为状态组件的初始化状况。图11是可用于重置为状态组件的初始化状况的过程330的流程图。处理器确定状态组件至INIT(框332)。例如,用于处理器或SoC的上下文可改变,或先前进程可能已被完成,和/或指令可使用取出级32被取出和/或使用解码电路30被解码。处理器(例如,前端56)确定状态组件是否具有状态专用ISA(框334)。如果状态专用ISA存在以重置为状态组件的初始化状况,则处理器(例如,(多个)执行单元85)使用该状态专用ISA来重置为该特定状态的初始化状况(框336)。例如,软件可使处理器使用TILERELEASE指令清除掉AMXTILE,以重置为TILECFG和TILEDATA的初始化状况。附加地,如果软件要重置zmm0-zmm15寄存器中的128和更高的高位(AVX和部分AVX512状态组件),则软件可利用VZEROUPPER以重置为那些位的初始化状况,同时使其余xmm部分保留在非INIT状态。如果没有状态专用ISA可用于该状态,则处理器可使用替代方法来重置为状态组件的初始化状况(框338)。例如,处理器可将用于过程300的XRSTOR/S用于缺乏导致状态专用的INIT的ISA的此类状态组件。换言之,向初始化状况的基于状态专用的ISA的重置可限于具有专门开发的指令的仅一些不同的状态组件,而留有除利用存储器读取(例如,使用XRSTOR/S)之外不具有此类资源来重置为状态组件的初始化状况的大量状态。此外,向初始化状况的基于状态专用的ISA的重置可用于特定状态组件,而不提供利用单条指令同时重置为多个状态组件的初始化状况的灵活性。
附加于或替代于基于XRSTOR/S的INIT或基于ISA的INIT技术,可使用扩展状态初始化(XINIT)以在不触及存储器的情况下重置为一个或多个状态组件的初始化状况。XINIT命令可响应于特定事件而开始,该特定事件诸如用于OS或VMM中的进程的上下文的改变。图12是图示用于重置为状态组件的初始化状况的的XINIT的过程350的流程图。处理器确定要初始化的一个或多个状态组件(框352)。例如,解码电路30和/或(多个)执行单元可对哪些状态组件要重置为初始化状况进行解码。处理器(例如,(多个)执行单元82)随后应用XINIT,以在不利用适当的EDX:EAX掩码而从存储器读取任何状态组件的情况下初始化状态组件(框354)。附加地或替代地,可利用另一掩码来应用XINIT。此外,XINIT可不仅限于具有基于状态专用的ISA的INIT指令的特定状态组件,并且可不限于重置为单独的状态组件的初始化状况。替代地,XINIT可提供通用接口,用于在没有状态专用的指令且不像在基于XRSTOR/S的INIT技术中所做的那样从存储器读取状态组件的情况下将INIT应用于多个状态组件。
图13是过程360的流程图,其示出用于使用XINIT初始化为一个或多个状态组件的初始化状况的实施例的详细视图。如图所示,作为使用XINIT的初始化的部分,处理器(例如,(多个)执行单元82)确定当前特权级别是否大于阈值级别(框362)。该确定可响应于初始化要基于在解码单元(诸如,解码电路36)中的解码而发生的指示而作出。如果当前特权级别大于阈值,则处理器(例如,(多个)执行单元)计算用于状态组件的第一集合的特征位掩码(框364)。特征位掩码可使用与用户状态和监督状态对应的状态组件的第一集合来设置。例如,状态的第一集合可使用OR(“或”)操作(例如,在全局使用状态OR全局使用监督状态之间)与某些寄存器(例如,EDX:EAX)中的位的AND(“与”)操作来设置。如果当前特权级别不大于阈值,则处理器(例如,(多个)执行单元82)计算用于状态组件的第二集合的特征位掩码(框366)。特征位掩码可使用仅与用户状态对应的状态组件的第一集合来设置。例如,状态组件的第二集合可包括某些寄存器(例如,EDX:EAX)中的位与全局使用状态(而没有全局使用监督状态)之间的AND操作。换言之,无论所使用的设置如何,某些寄存器可被用于指定要重置为初始化状况的状态组件,这些状态组件也对照当前特权级别被检查并被存储在位掩码中。
处理器(例如,(多个)执行单元82)随后检查位掩码中的状态组件以确定对应的状态是否处于使用中(框368)。换言之,处理器进行检查以审视相应的状态组件是否已被标记为处于使用中。使用中标志指示某个变化已被作出,使得状态是“脏”的且与INIT状况不同。对于处于使用中的状态,处理器(例如,(多个)执行单元82)对用于状态的相应初始化标志置位以指示该状态要被初始化(框370)。否则,初始化标志保持不改变。
处理器初始化索引(i=0)以检查与位掩码的第一位对应的第一状态组件(框372)。处理器(例如,(多个)执行单元82)检查第一初始化标志以确定第一状态组件是否要被初始化(框374)。如果初始化标志已被置位,则处理器(例如,(多个)执行单元82)初始化与初始化标志对应的状态组件(框376)。如果初始化标志未被置位,则状态组件不被初始化。如果状态组件被置位为要被初始化,则处理器(例如,(多个)执行单元82)重置使用中标志(框380)。
在状态组件的初始化已被执行或跳过之后,处理器(例如,(多个)执行单元82)可确定位掩码中是否存在于还未被处理的其他状态组件对应的任何其他位(框382)。换言之,处理器(例如,(多个)执行单元82)确定是否已到达位掩码中的最后的位。如果还有任何位,则索引被递增(框384)。对下一状态组件,处理器检测初始化标志,并对该下一状态组件执行先前讨论的步骤。如果在位掩码中未指示其他状态组件,处理器(例如,(多个)执行单元82)可结束初始化过程(框386)。在一些实施例中,前述框中的前述技术的执行可使用(多个)物理寄存器堆78、(多个)执行单元82和解码电路70来实现。与过程360有关的前述讨论可使用任何何时的技术来实现。例如,XINIT的实现方式可使用表1中的以下伪代码来进行。
表1 XINIT伪代码
如先前所述,XRSTOR/S可以是可由系统软件使用以重置为状态组件的初始化状况的通用方法,但是XRSTOR/S涉及存储器访问,这些存储器访问增加成本以重置为状态组件的初始化状况。XINIT是可用于直接将任何状态置于INIT状态的快得多的解决方案。因此,XINIT提供针对未来和现有状态的可缩放解决方案,而无需具有状态专用指令以重置为这些状态的初始化状况。此外,与可能将使用中标志保留在陈旧状态或不正确状态的状态专用ISA不同,XINIT可被用于确保用于初始化状态的使用中标志是最新的。
一旦在系统软件/库中被启用,XINIT就可提供机制,以对于任何相关的软件流重置为任何数量的状态组件的初始化状况,而无需对不具有状态专用ISA的任何未来状态或当前状态使用任何特定的启用(例如,状态专用ISA的开发和部署)。XINIT还消除了为了重置为状态的初始化状况而对状态专用指令的使用,由此节省了一般在处理器架构中的重要的操作码查找和操作码存储。
此外,如先前所讨论,XINIT是独立于存储器的。如先前所讨论,对于不具有状态专用的ISA的状态组件,执行XRSTOR/S可被依赖。然而,XRSTSOR/S具有可能导致瓶颈的存储性依赖性。此外,在XRSTOR/S在应用基于XRSTOR/S的INIT时创建附加的发布时,保存区域存储器页可被页出。系统软件通常确保页在非可分页存储器上被分配,但是用户空间编程器在尝试经由XRSTOR/S重置为状态组件的初始化状况时会看见页错误。XINIT由于其存储器独立性而不具有这些缺点。
XINIT可在众多应用中(诸如,在OS、VMM和/或用户空间内)具有适用性。首先,XINIT对于VMM具有显然的优势。在由宾客VM进行的VP切换或全局状态修改期间,VMM会禁用某些特征。先前处于使用中的任何特征将保持为脏,并影响VM的功率/性能。为了避免该情形,VMM可使用XINIT而不是XRSTOR/S或状态组件专用ISA来清除状态。由于在缺乏XINIT的情况下,在不是也使其他状态组件重置为初始化状况的情况下,VMM可能不能够重置为一些状态组件(例如,AVX512(即,zmm16-zmm41))的初始化状况,因此可使用XRSTOR/S来执行选择性的INIT过程。然而,如先前所述,XRSTOR/S在功率和性能方面是昂贵的(例如,100个周期)。XINIT使VMM能够以用于XRSTOR/S的时间的分数(例如,5%)来将状态组件重置为初始化状况。
在OS内,OS不使用环0(最高包含环或高于阈值的其他包含环)执行中的扩展状态组件,但是除非OS在环0代码的执行之前将状态组件置于INIT,否则由于处理器中的脏状态组件,环0代码仍会导致损失。XINIT可在系统调用的开始时被使用,并且在保存了扩展状态后中断。通过在执行环0代码前执行XINIT,OS可在执行环0代码的同时避免由处理器导致的功率/性能损失。
XINIT可经由固有OS操作或OS API被扩展到用户空间,其中,XINIT可被用于一旦用户空间线程使用扩展状态组件而被完成就清除扩展状态组件。通过这样做,线程可避免由于经由XRSTOR/S将状态组件带回到INIT而由处理器导致的功率/性能损失。
尽管本公开中阐述的实施例易于具有各种修改和替代形式,但是,特定实施例已作为示例在附图中示出并已在本文中详细描述。然而,应当理解,本公开不旨在被限于所公开的特定形式。本公开旨在涵盖落入如由所附示例实施例所限定的本公开的精神和范围内的所有修改、等效方案和替代方案。
本文中提出的技术和本文中的示例实施例被引用并应用于实际性质的实物和具体示例,这些实物和示例明显改善了当前技术领域,因此不是抽象的、无形的或纯理论的。进一步地,如果本说明书末尾所附的任何示例实施例包含一个或多个被指定为“用于[执行][功能]的装置”或“用于[执行][功能]的步骤”的要素,则其旨在基于35U.S.C.112(f)来解释此类要素。然而,对于包含以任何其他方式指定的要素的任何示例实施例,其旨在不基于35U.S.C.112(f)来解释此类要素。
示例实施例
下列具有编号的条款限定了本公开的某些示例实施例。
示例实施例1:一种处理器,包括:
寄存器,用于跟踪处理器的状态组件的使用;
解码单元,用于对状态初始化指令解码,其中,所述状态初始化指令指示所述状态组件要通过使所述状态组件归零而被初始化;以及
执行单元,与所述解码单元耦合,其中,所述执行单元响应于所述状态初始化指令而用于:在不作为初始化的部分从存储器读取另一状态组件的情况下初始化所述状态组件。
示例实施例2:如示例实施例1所述的处理器,其中,所述执行单元响应于所述状态初始化指令而不初始化所述另一状态组件来作为初始化所述状态组件的部分。
示例实施例3:如示例实施例1所述的处理器,其中,所述执行单元响应于所述状态初始化指令,不使用状态专用指令集来供所述状态组件执行初始化。
示例实施例4:如示例实施例1所述的处理器,其中,所述执行单元不执行恢复指令来完成初始化。
示例实施例5:如示例实施例1所述的处理器,其中,由所述执行单元初始化所述状态组件包括:
通过检查用于多个状态组件中的状态组件的使用中标志来确定所述状态组件处于使用中;以及
响应于确定了所述状态组件处于使用中,对初始化标志置位,所述初始化标志指示所述状态组件要被初始化。
示例实施例6:如示例实施例5所述的处理器,其中,初始化包括在初始化之后:
确定所述状态组件已被初始化;以及
响应于确定了所述状态组件已被初始化,清除用于所述状态组件的使用中标志。
示例实施例7:如示例实施例1所述的处理器,其中,初始化包括:在不访问存储器以读取任何所存储的状态组件的任何内容的情况下初始化所述状态组件。
示例实施例8:一种方法,包括:
确定用于处理器的多个状态组件要被初始化;
将所述多个状态组件的指示存储在位掩码中;
确定所述多个状态组件是否处于使用中;
对于处于使用中的所述多个状态组件,至少部分地基于相应状态组件的使用中状况而将相应的状态组件标记为要被初始化;以及
至少部分地基于要被初始化标记来初始化所述位掩码中的状态组件。
示例实施例9:如示例实施例8所述的方法,包括:确定当前特权是否超出特权阈值。
示例实施例10:如示例实施例9所述的方法,其中,确定所述多个状态组件包括:基于所述当前特权超出所述特权阈值,对用于状态组件的第一集合的位掩码置位。
示例实施例11:如示例实施例10所述的方法,其中,确定所述多个状态组件包括:基于所述当前特权不超出所述特权阈值,对用于状态组件的第二集合的位掩码置位。
示例实施例12:如示例实施例11所述的方法,其中,所述状态组件的第一集合包括全局使用监督状态,并且所述状态组件的第二集合不包括全局使用监督状态。
示例实施例13:如示例实施例8所述的方法,其中,所述使用中状况指示相应的状态组件已从初始化状态改变。
示例实施例14:如示例实施例13所述的方法,包括:确定所述使用中状况指示相应的状态包含除0之外的值。
示例实施例15:如示例实施例13所述的方法,包括:一旦相应的状态被初始化,就清除指示所述使用中状况的使用中位映射的至少部分。
示例实施例16:一种用于处理指令的系统,包括:
寄存器,用于跟踪所述系统的状态组件的使用;
解码单元,用于对状态初始化指令解码,其中,所述状态初始化指令指示所述状态组件中的一个或多个状态组件要被初始化;以及
执行单元,与所述解码单元耦合,其中,所述执行单元响应于所述状态初始化指令而用于:
对用于所述寄存器中的所述一个或多个状态组件的位掩码置位;
至少部分地基于用于跟踪所述一个或多个状态组件中的相应状态组件的状态的使用中位映射来确定所述一个或多个状态组件是否已从初始化状态改变;
对于已从所述初始化状态改变的所述一个或多个状态组件,对用于所述一个或多个状态组件的初始化标志置位;
初始化具有经置位的初始化标志的所述一个或多个状态组件;以及
清除用于经初始化的状态组件的使用中状态组件。
示例实施例17:如示例实施例16所述的系统,其中,对所述位掩码置位至少部分地基于所述系统中的处于使用中的当前特权级别。
示例实施例18:如示例实施例17所述的系统,其中,所述寄存器包括所请求特征位映射。
示例实施例19:如示例实施例18所述的系统,其中所述所请求特征位映射使用在当前特权级别高于阈值时具有全局用户状态和监督状态的一个或多个寄存器的逻辑AND来置位。
示例实施例20:如示例实施例19所述的系统,其中所述所请求特征位映射使用在当前特权级别低于阈值时具有全局用户状态的一个或多个寄存器的逻辑AND来置位。
Claims (20)
1.一种用于执行状态初始化的处理器,包括:
寄存器,用于跟踪所述处理器的状态组件的使用;
解码单元,用于对状态初始化指令解码,其中,所述状态初始化指令指示所述状态组件要通过使所述状态组件归零而被初始化;以及
执行单元,与所述解码单元耦合,其中,所述执行单元响应于所述状态初始化指令而用于:在不作为初始化的部分从存储器读取另一状态组件的情况下初始化所述状态组件。
2.如权利要求1所述的处理器,其中,所述执行单元响应于所述状态初始化指令而不初始化所述另一状态组件来作为初始化所述状态组件的部分。
3.如权利要求1所述的处理器,其中,所述执行单元响应于所述状态初始化指令,不使用状态专用指令集来供所述状态组件执行初始化。
4.如权利要求1所述的处理器,其中,所述执行单元不执行恢复指令来完成所述初始化。
5.如权利要求1-4中的任一项所述的处理器,其中,由所述执行单元初始化所述状态组件包括:
通过检查用于多个状态组件中的状态组件的使用中标志来确定所述状态组件处于使用中;以及
响应于确定了所述状态组件处于使用中,对初始化标志置位,所述初始化标志指示所述状态组件要被初始化。
6.如权利要求5所述的处理器,其中,初始化包括在初始化之后:
确定所述状态组件已被初始化;以及
响应于确定了所述状态组件已被初始化,清除用于所述状态组件的使用中标志。
7.如权利要求1-4中的任一项所述的处理器,其中,初始化包括:在不访问存储器以读取任何所存储的状态组件的任何内容的情况下初始化所述状态组件。
8.一种用于在处理器中执行状态初始化的方法,所述方法包括:
确定用于所述处理器的多个状态组件要通过使所述状态组件归零而被初始化;
将所述多个状态组件的指示存储在位掩码中;
确定所述多个状态组件是否处于使用中;
对于处于使用中的所述多个状态组件,至少部分地基于相应状态组件的使用中状况而将相应的状态组件标记为要被初始化;以及
至少部分地基于要被初始化标记来初始化所述位掩码中的状态组件。
9.如权利要求8所述的方法,包括:确定当前特权是否超出特权阈值。
10.如权利要求9所述的方法,其中,确定所述多个状态组件包括:基于所述当前特权超出所述特权阈值,对用于状态组件的第一集合的位掩码置位。
11.如权利要求10所述的方法,其中,确定所述多个状态组件包括:基于所述当前特权不超出所述特权阈值,对用于状态组件的第二集合的位掩码置位。
12.如权利要求11所述的方法,其中,所述状态组件的第一集合包括全局使用监督状态,并且所述状态组件的第二集合不包括全局使用监督状态。
13.如权利要求8-11中的任一项所述的方法,其中,所述使用中状况指示相应的状态组件已从初始化状态改变。
14.如权利要求13所述的方法,包括:确定所述使用中状况指示相应的状态包含除0之外的值。
15.如权利要求13所述的方法,包括:一旦相应的状态被初始化,就清除指示所述使用中状况的使用中位映射的至少部分。
16.一种系统,用于处理与所述系统中的状态初始化有关的指令,所述系统包括:
寄存器,用于跟踪所述系统的状态组件的使用;
解码单元,用于对状态初始化指令解码,其中,所述状态初始化指令指示所述状态组件中的一个或多个状态组件要通过使所述状态组件归零而被初始化;以及
执行单元,与所述解码单元耦合,其中,所述执行单元响应于所述状态初始化指令而用于:
对用于所述一个或多个状态组件的位掩码置位;
至少部分地基于用于跟踪所述一个或多个状态组件中的相应状态组件的状态的使用中位映射来确定所述一个或多个状态组件是否已从初始化状态改变;
对于已从所述初始化状态改变的所述一个或多个状态组件,对用于所述一个或多个状态组件的初始化标志置位;
初始化具有经置位的初始化标志的所述一个或多个状态组件;以及
清除用于经初始化的状态组件的使用中状态组件。
17.如权利要求16所述的系统,其中,对所述位掩码置位至少部分地基于所述系统中的处于使用中的当前特权级别。
18.如权利要求17所述的系统,其中,所述寄存器包括所请求特征位映射。
19.如权利要求18所述的系统,其中所述所请求特征位映射使用在当前特权级别高于阈值时与全局用户状态和监督状态对应的一个或多个寄存器的逻辑AND来置位。
20.如权利要求19所述的系统,其中所述所请求特征位映射使用在当前特权级别低于阈值时与全局用户状态对应的一个或多个寄存器的逻辑AND来置位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/134,322 | 2020-12-26 | ||
US17/134,322 US20220206825A1 (en) | 2020-12-26 | 2020-12-26 | Memory-independent and scalable state component initialization for a processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691598A true CN114691598A (zh) | 2022-07-01 |
Family
ID=82119876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111562749.1A Pending CN114691598A (zh) | 2020-12-26 | 2021-12-20 | 用于处理器的独立于存储器的和可缩放状态组件初始化 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220206825A1 (zh) |
CN (1) | CN114691598A (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781745A (en) * | 1996-05-20 | 1998-07-14 | 3Com Corporation | High speed communication bus |
US5943689A (en) * | 1997-03-31 | 1999-08-24 | Emc Corporation | On-demand initialization of memory locations as they are requested command |
US6768993B2 (en) * | 2001-06-28 | 2004-07-27 | International Business Machines Corporation | System and method for file system cooperation in a multi-threaded environment |
US7152144B2 (en) * | 2002-05-29 | 2006-12-19 | Hitachi, Ltd. | Centralized storage management method |
US7155586B1 (en) * | 2003-12-30 | 2006-12-26 | Emc Corporation | Method of allowing point-in-time view of data on a disk using a map on cache disk |
US20120303322A1 (en) * | 2011-05-23 | 2012-11-29 | Rego Charles W | Incorporating memory and io cycle information into compute usage determinations |
US10007590B2 (en) * | 2016-04-14 | 2018-06-26 | International Business Machines Corporation | Identifying and tracking frequently accessed registers in a processor |
US10740452B2 (en) * | 2017-09-15 | 2020-08-11 | Arm Limited | Call path dependent authentication |
US10963260B2 (en) * | 2019-01-18 | 2021-03-30 | Arm Limited | Branch predictor |
US11366807B2 (en) * | 2019-10-04 | 2022-06-21 | Target Brands, Inc. | Hash-based data structure |
-
2020
- 2020-12-26 US US17/134,322 patent/US20220206825A1/en active Pending
-
2021
- 2021-12-20 CN CN202111562749.1A patent/CN114691598A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220206825A1 (en) | 2022-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288069B2 (en) | Systems, methods, and apparatuses for tile store | |
US10776190B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
CN106648843B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
US11663006B2 (en) | Hardware apparatuses and methods to switch shadow stack pointers | |
US20140095847A1 (en) | Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading | |
EP3014422B1 (en) | Mode dependent partial width load to wider register processors, methods, and systems | |
US9207940B2 (en) | Robust and high performance instructions for system call | |
US10642711B2 (en) | Apparatus and method for pausing processor trace for efficient analysis | |
US20180157598A1 (en) | Apparatuses, methods, and systems to share translation lookaside buffer entries | |
CN110941448A (zh) | 用于片聚集和片分散的装置和方法 | |
US10503662B2 (en) | Systems, apparatuses, and methods for implementing temporary escalated privilege | |
CN115357332A (zh) | 处理器间中断的虚拟化 | |
US20150277910A1 (en) | Method and apparatus for executing instructions using a predicate register | |
US11023382B2 (en) | Systems, methods, and apparatuses utilizing CPU storage with a memory reference | |
US11615031B2 (en) | Memory management apparatus and method for managing different page tables for different privilege levels | |
US10175992B2 (en) | Systems and methods for enhancing BIOS performance by alleviating code-size limitations | |
US20220206825A1 (en) | Memory-independent and scalable state component initialization for a processor | |
WO2019133091A1 (en) | Apparatus and method for vectored machine check bank reporting | |
US20230315501A1 (en) | Performance Monitoring Emulation in Translated Branch Instructions in a Binary Translation-Based Processor | |
EP3798824A1 (en) | Apparatus and method for store pairing with reduced hardware requirements | |
US20220413859A1 (en) | System, apparatus and methods for performant read and write of processor state information responsive to list instructions | |
US20220308873A1 (en) | Apparatuses, methods, and systems for instructions for downconverting a tile row and interleaving with a register | |
US11275588B2 (en) | Context save with variable save state size | |
CN111512309A (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 |