CN104050415B - 用于系统调用的稳健且高性能的指令 - Google Patents
用于系统调用的稳健且高性能的指令 Download PDFInfo
- Publication number
- CN104050415B CN104050415B CN201410095695.6A CN201410095695A CN104050415B CN 104050415 B CN104050415 B CN 104050415B CN 201410095695 A CN201410095695 A CN 201410095695A CN 104050415 B CN104050415 B CN 104050415B
- Authority
- CN
- China
- Prior art keywords
- unit
- requestor
- processor
- instruction
- register
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 64
- 238000003860 storage Methods 0.000 claims abstract description 21
- 230000007704 transition Effects 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 22
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 5
- 238000011068 loading method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 23
- 238000012546 transfer Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 11
- 238000012856 packing Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000013519 translation Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000000926 separation method Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003756 stirring Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
- G06F21/126—Interacting with the operating system
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/30181—Instruction operation extension or modification
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/54—Interprogram communication
-
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
Abstract
本发明涉及用于系统调用的稳健且高性能的指令。稳健的系统调用和系统返回指令被处理器执行以在请求者和操作系统内核之间转移控制。该处理器包括执行电路和存储指向存储器中的数据结构的指针的寄存器。该执行电路从请求者接收将控制从所述请求者的第一特权等级转移到操作系统内核的第二特权等级的系统调用指令。作为响应,该执行电路在一个最小单元过渡中在所述请求者和所述操作系统内核之间交换所述寄存器所指向的数据结构。
Description
技术领域
本公开涉及处理逻辑、微处理器以及相关的指令集体系结构的领域,当这些指令集体系结构被处理器或其他处理逻辑所执行时运行逻辑、数学或其他功能性操作。
背景技术
指令集或指令集架构(ISA)是与编程有关的计算机架构的一部分,且可包括本机数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。在本文中术语“指令”一般指宏指令——即被提供给处理器(或指令转换器,该指令转换器(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)翻译、变形、仿真,或以其他方式将指令转换成要由处理器处理的一个或多个指令)的指令)以用于执行的指令——而不是微指令或微操作(micro-op)——它们是处理器的解码器解码宏指令的结果。
ISA与微架构不同,微架构是实现指令集的处理器的内部设计。具有不同微架构的处理器可共享通用指令集。例如,酷睿(CoreTM)处理器以及来自加利福尼亚州桑尼威尔(Sunnyvale)的高级微设备有限公司(Advanced Micro Devices,Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。例如,该ISA的相同寄存器架构可使用公知技术在不同微处理器中以不同方式实现,所述公知技术包括专用物理寄存器、使用寄存器重命名机制的一个或多个动态分配的物理寄存器等。
ISA通常为应用程序提供一个或多个指令以进行系统调用。通过系统调用,应用程序能够请求来自操作系统内核的服务。该服务包括硬件相关的服务(例如,访问硬盘)、创建和执行新进程、以及与集成内核服务(例如调度)通信。从而,系统调用在应用程序和操作系统内核之间提供接口。
通常,系统调用是用软件中断或捕获来实现的。中断将控制从应用程序转移到操作系统内核。一些现有架构提供了用于做出系统调用的控制转移指令。这些控制转移指令被设计为使应用程序将控制快速转移给操作系统,而无需中断的开销。然而,现有控制转移指令具有易出错和受攻击的明显弱点。这种脆弱性导致了不那么稳健的软件。例如,如果在系统调用或系统返回期间在控制栈被切换之前发生错误,则操作系统中的错误处理程序可用用户模式栈而不是系统栈执行。用户模式栈没有特权且不被信任。在一些情况下,用户模式栈可包含恶意代码,而以用户模式栈来执行可能将系统暴露给恶意攻击。
附图说明
在附图的以下各图中通过示例而非限制地说明多个实施例:
图1是示出根据一个实施例的控制转移的框图。
图2是根据一个实施例的指令处理装置的框图。
图3是根据一个实施例的寄存器架构的框图。
图4A示出根据一个实施例的RBSTCALL指令的第一个版本的示例。
图4B示出根据一个实施例的RBSTRET指令的第一个版本的示例。
图5A示出根据一个实施例的RBSTCALL指令的第二个版本的示例。
图5B示出根据一个实施例的RBSTRET指令的第二个版本的示例。
图6A是示出根据一个实施例的要响应于RBSTCALL指令执行的操作的流程图。
图6B是示出根据一个实施例的要响应于RBSTRET指令执行的操作的流程图。
图6C是示出根据一个实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
图7A是根据一个实施例的有序和无序流水线的框图。
图7B是根据一个实施例的有序和无序核的框图。
图8A-B是根据一个实施例的更具体的示例性的有序核结构的框图。
图9是根据一个实施例的处理器的框图。
图10是根据一个实施例的系统的框图。
图11是根据一个实施例的第二系统的框图。
图12是根据一个实施例的第三系统的框图。
图13是根据一个实施例的片上系统(SoC)的框图。
具体实施方式
在下面的描述中,阐述了很多具体细节。然而,应该理解,本发明的实施例可在没有这些特定细节的情况下实施。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便不至于使本描述变得模糊。
本文描述的实施例提供了一组控制转移指令,其中每个指令在一个单一最小单元(atomic)指令中完成监控程序模式和用户模式之间的过渡(transition)。使用传统的系统调用和返回机制,要花费一个指令序列来完成监控程序模式和用户模式之间的过渡。此传统指令序列中间的错误导致以非监控状态在监控程序模式中执行。这种错误的发生通常要么导致系统崩溃、要么无法从错误恢复,要么导致授权升级攻击。
本文中使用的术语“监控程序模式”也被称为“特权模式”、“内核模式”、或“环0”,而术语“用户模式”也被称为“非特权模式”、“非监控程序模式”或“环3”。而且,本文中使用的软件实体的“特权等级”与其环等级相同;例如,环3程序具有特权等级3。尽管在下面示例的一个或多个中描述了环0和环3之间的过渡,然而可以理解,本文描述的新指令适用于任何两个不同环之间或同一环中的不同进程之间的过渡。
根据一个实施例,新指令包括“RBSTCALL”指令和“RBSTRET”指令,其中“RBST”代表单词“稳健”。RBSTCALL指令是系统调用指令,而RBSTRET指令是系统返回指令。这些新指令对恶意攻击是稳健的,并且还具有高性能。
图1示出响应于“RBSTCALL”和“RBSTRET”指令而发生的控制转移的示例。RBSTCALL指令是非特权指令并且能被请求者程序110调用,该请求者程序可以在环0、1、2或3中。当处理器(例如,处理系统中的中央处理单元(CPU))执行请求者程序110中的RBSTCALL指令时,控制被转移到操作系统(OS)内核120中的调用处理程序(handler)125。调用处理程序125在环0中执行。当调用处理程序125完成调用处理之后,处理器执行OS120中的RBSTRET指令以将控制返回给请求者程序110。RBSTRET指令是特权指令并且仅能由环0软件(诸如OS)调用。在一个实施例中,“RBSTCALL”和“RBSTRET”指令的执行可嵌套。例如,该执行可遵循以下序列:请求者程序110→RBSTCALL111→调用处理程序125→RBSTRET121→请求者程序110→RBSTCALL112→请求者程序110→RBSTCALL113→调用处理程序125→RBSTRET121→请求者程序110。从而,每当控制被返回给请求者程序110时,请求者程序110的代码段可在下一次系统调用之前执行。
RBSTCALL指令的一实施例使用类似于中断和异常栈帧的格式将CS(代码选择器)、RIP(指令指针)和RGLAGS存储在内核栈上。使用该格式为嵌套执行中的方便重入铺平了道路。
如同前面提到的,RBSTCALL指令允许源自环0的环内调用以及源自环1、2或3的环间调用。类似地,RBSTRET指令允许环0代码返回到任何环(例如,环0、1、2或3)。RBSTCALL指令和RBSTRET指令中的每一个均在环过渡的情况下自动地用正确的选择器值加载段寄存器(例如,GS),由此消除了在过渡完成之前的错误能够导致在GS中用非监控状态执行监控程序模式的窗口。进一步,通过最小单元地还原目标栈选择器(例如,SS)和/或栈指针(例如,RSP),RBSTRET指令通过将其中内核模式错误处理程序能用无效SS和/或RSP执行的窗口而改善了可靠性。
RBSTCALL和RBSTRET指令的实施例对内核栈上的目标选择器(例如,CS和SS)的有效性执行健全检查(sanity check),并且还对目标RIP和RSP中的地址格式的有效性执行规范检查(canonical check),由此向OS警告潜在的损坏。RIP中的地址格式的规范检查是通过检测加载到RIP中的地址是否落入非规范地址范围而执行的。由于架构所提供的地址范围(例如,64位)大于所使用的地址范围(例如,48位),所以存在这一范围。从而,64位地址空间的一个区域未被使用。此未使用的区域允许未来的地址空间扩展。然而,此未使用的区域是非规范地址范围,而RIP中落入该范围的任何地址均是无效地址。规范地址检查可在加载RIP之后但是在该RIP中的地址被提交之前执行。规范地址检查消除了RIP中的地址格式的脆弱性,这种脆弱性可被恶意软件利用。在一些实施例中,也可对其他寄存器执行规范地址检查。
在一些实施例中,可通过将大部分地址和段确认去除并且对环过渡做出假设(例如,目标环为0)来将RBSTCALL和RBSTRET指令优化为快速版。例如,快速版不确认模型专用寄存器(MSR)中的值,因为MSR只能由OS内核加载。快速版用明显较小的成本实现了大部分的控制转移益处。
与RBSTCALL和RBSTRET指令的其他版本类似,快速版保留了最小单元特征,其中用正确的选择器值自动加载GS,由此消除了其中在转移完成之前的错误能够导致用非监控模式GS的监控模式执行的窗口。与RBSTCALL和RBSTRET指令的其他版本类似,快速版去除了可被恶意软件利用的与规范RIP有关的脆弱性。而且,与RBSTRET指令的其他版本类似,快速版最小单元地还原目标SS和/或RSP,通过消除其中内核模式错误处理程序能用无效SS和/或RSP执行的窗口改善了可靠性。RBSTCALL和RBSTRET指令可由如下所述的指令处理装置执行。
图2是指令处理装置215的一个实施例的框图,该指令处理装置具有执行单元240,该执行单元包括能用于执行指令(包括RBSTCALL/RBSTRET指令)的电路。在一些实施例中,指令处理装置215可以是处理器、多核处理器的处理器核、或者电子系统中的处理元件。
解码器230接收较高级机器指令或宏指令形式的进入指令,并且将所述指令解码以生成较低级的微操作、微代码进入点、微指令或其他较低级的指令或控制信号,它们反映了原始的较高级的指令和/或从原始的较高级指令导出。较低级指令或控制信号可通过较低级(例如,电路级或硬件级)操作来实现较高级指令的操作。解码器230可使用各种不同的机制来实现。合适机构的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机构等。
解码器230可接收针对高速缓存210、存储器220或其他源的进入指令。经解码的指令被发送到执行单元240。执行单元240可从解码器230接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了所接收的指令或者是从所接收的指令导出的。执行单元240从寄存器文件270、高速缓存210和/或存储器220接收数据输入并向它们生成数据输出。
在一个实施例中,寄存器文件270包括架构寄存器,架构寄存器也被称为寄存器。短语“架构寄存器”、“寄存器文件”、以及“寄存器”在本文中用于表示对软件和/或编程器(例如,软件可见的)和/或由宏指令指定来标识操作数(operand)的寄存器,除非另外予以规定或清楚明显可知。这些寄存器与给定微架构(例如,临时寄存器、重排序缓冲器、回退(retirement)寄存器等)中的其他非架构寄存器形成对比。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置215。应当理解,其他实施例可具有超过一个执行单元。例如,装置215可包括多个不同类型的执行单元,诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。指令处理装置或处理器的另外的实施例可具有多个核、逻辑处理器或执行引擎。稍后将参考图7-13提供指令处理装置215的多个实施例。
根据一个实施例,寄存器文件270包括能由RBSTCALL和RBSTRET指令使用的一组寄存器。这些寄存器中的一些寄存器可被用来存储包括指向段和指令的指针在内的系统状态。下面参考图3描述寄存器文件的示例。
图3示出了支持本文描述的指令的底层寄存器架构300的一个实施例。寄存器架构300基于酷睿处理器,该处理器实现包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、和SSE4.2指令的指令集,以及SIMD扩展的附加指令集,该附加指令集被称为高级矢量扩展(AVX)(AVX1、AVX2和AVX3)。然而,应理解,也可使用支持不同寄存器长度、不同寄存器类型和/或不同数量的寄存器的不同的寄存器架构。
在所示的实施例中,存在512位宽的32个矢量寄存器310;这些寄存器被称为zmm0至zmm31。低位16个zmm寄存器的低阶256位覆盖在寄存器ymm0-16上。低位16个zmm寄存器的低阶128位(ymm寄存器的低阶128位)覆盖在寄存器xmm0-15上。在所示实施例中,存在8个掩码寄存器320(k0到k7),每个掩码寄存器的长度为64位。在一替代实施例中,掩码寄存器320的宽度是16位。
在所示实施例中,寄存器架构300进一步包括16个64位通用(GP)寄存器330。在一实施例中,这些GP寄存器330沿循现有x86寻址模式使用以对存储器操作数寻址。寄存器架构300还包括6个16位段寄存器(CS:代码选择器、DS:数据选择器、SS:段选择器、ES:额外的、FS和GS)。该实施例还示出了RFLAGS寄存器360、RIP寄存器370以及模型特定寄存器(MSR)380。
该实施例还示出了标量浮点(FP)栈寄存器文件(x87栈)340,其上混杂有MMX打包整数平坦寄存器文件350。在所示实施例中,x87栈是用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作的8元素栈;而MMX寄存器用于对64位打包整数数据执行操作、以及保留操作数用于在MMX和xmm寄存器之间执行的一些操作。
替代实施例可使用更宽或更窄的寄存器。另外,替代实施例可使用更多、更少、或不同的寄存器文件和寄存器。
图4A示出根据一个实施例的RBSTCALL指令的第一个版本的示例。RBSTCALL指令将控制从请求者转移到OS内核。在一个实施例中,RBSTCALL指令包括用于检查该调用是否有效并被使能的代码块410;如果该代码块无效或未被使能,则生成错误(例如,一般保护(#GP错误)或无效操作码(#UD错误)。例如,如果请求者不在64位代码段中,或者64位模式未被使能,或者RBSTCALL和RBSTRET指令未被使能,则可生成错误。在一个实施例中,当所述寄存器之一中的一个位被设置时,RBSTCALL和RBSTRET指令被使能。
RBSTCALL指令可被特权等级是0(对于环内调用)或非0(对于环间调用)的请求者调用。对于环内调用和环间调用二者,执行RBSTCALL指令的处理器在代码块420和430中验证地址符合度(例如,对于RIP非规范地址)。在一个实施例中,执行RBSTCALL指令的处理器还在代码块430中验证段寄存器CS和SS是否包含有效地址。RBSTCALL指令进一步包括代码块425和435(分别用于环内调用和环间调用)以执行OS内核和请求者之间的控制栈交换的操作。本文中的控制栈是指由操作系统用来对执行保持跟踪的数据结构。这些数据结构存储在存储器中并且段寄存器CS、SS、GS以及指针RIP和RSP指向这些数据结构。因为环0数据结构(例如,与OS内核相关联的控制栈)与它们的环3对应项(例如,与用户模式程序相关联的控制栈)不同,这使得在传统SYSCALL/SYSRET指令之后立即使用单独的SWAPGS指令成为必要。RBSTCALL指令(类似地,RBSTRET指令)不需要任何独立的指令来在OS内核和请求者之间交换指向数据结构的指针。该交换操作在RBSTCALL/RBSTRET内作为单一最小单元指令执行。对于内部环调用,代码块435用正确的代码选择器值来加载该GS。从而,可以看出,在RBSTCALL指令内,在一个最小单元指令中用验证和控制栈实现控制转移。
图4B示出根据一个实施例的RBSTRET指令的第一个版本的示例。RBSTRET指令通过将控制从OS内核返回到请求者(即,RBSTCALL的请求者)来逆转RBSTCALL指令的操作。RBSTRET指令是特权指令,即,它仅能被从环0调用。在此实施例中,RBSTRET指令包括用于检查该调用是否有效并被使能的代码块440;如果该调用无效或未被使能,则生成错误(类似于图4A的代码块410)。执行RBSTRET指令的处理器在代码块450中验证地址符合度(例如,对于RIP和RSP非规范地址格式)。在一些实施例中,执行RBSTRET指令的处理器还在代码块450中验证段寄存器CS和SS是否包含有效地址。RBSTRET指令进一步包括用于执行OS内核和请求者之间的控制栈切换的操作的代码块460和470。在用正确的代码选择器值加载该GS的情况下,如果请求者的特权等级不是0(即,对于环间调用),则执行代码块470。从而,可以看出,在RBSTRET指令内,在一个最小单元指令中用验证和软件栈交换实现控制转移。
图5A和图5B分别示出根据一个实施例的RBSTCALL指令和RBSTRET的第二个版本的示例。RBSTCALL和RBSTRET指令的第二个版本是快速版,因为在第一个版本中执行的验证中的一些(例如,大部分的地址和段验证)被去除了。该快速版还对环过渡做出假设(例如,目标环是环0,加载到CS中的代码选择器是有效代码段等)。进一步,在该快速版中,假定通用寄存器RCX、R10、R11被用作输出寄存器。将输出保留在这些寄存器中可以改善指令的性能并且允许利用现有微代码中的一些来进行系统调用。在该快速版中,正确的值被加载到段寄存器GS、CS和SS中。可以看出,在快速版的RBSTCALL指令和RBSTRET指令的每一个中,控制转移均是用一个最小单元指令中的验证和控制栈交换来实现的。
图6A是根据一个实施例的用于执行控制转移指令(例如,RBSTCALL指令)的方法600的流程框图。方法600开始于:处理器从请求者接收将控制从该请求者的第一特权等级转移到OS内核的第二特权等级的系统调用指令(框611)。响应于该系统调用指令,处理器在一个最小单元过渡中在请求者和OS内核之间交换所述寄存器中的一个或多个所指向的数据结构(框612)。图6B是根据一个实施例的用于执行控制转移指令(例如,RBSTRET指令)的方法610的流程框图。方法610开始于:处理器从OS内核接收系统返回指令(框613)。响应于该系统返回指令,处理器在一个最小单元过渡中将控制从OS内核还原给该请求者(框614)。
在一个实施例中,第一特权等级与第二特权等级相同。在另一实施例中,第一特权等级处于非监控程序模式而第二特权等级处于监控程序模式。在一个实施例中,对系统调用指令做出响应的处理器要最小单元地用正确的值加载一个或多个段寄存器。在一个实施例中,对系统调用指令做出响应的处理器要最小单元地对一个或多个段寄存器执行有效性检查。在一个实施例中,对所述指令做出响应的处理器要最小单元地对要被加载到所述寄存器的一个或多个寄存器中的一个或多个目标指针执行地址符合度的规范检查。
在各实施例中,图6A-6B的方法可由通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,图6A-6B的方法可由图2的指令处理装置215、或类似的处理器、装置或系统(诸如图7-13中所示的实施例)执行。而且,图2的指令处理装置215以及图7-13中所示的处理器、装置或系统可执行与图6A-6B的方法的实施例相同、类似或不同的操作和方法的实施例。
在一些实施例中,图2的指令处理装置215可结合指令转换器操作,该指令转换器将来自源指令集的指令转换到目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或者以其他方式转换成由内核处理的一个或多个其他指令。指令转换器可以软件、硬件、固件、或者其组合实现。指令转换器可在处理器上、在处理器以外、或者部分在处理器上且部分在处理器以外。
图6C是根据一个实施例的与使用软件指令转换器的对比的框图。在所示的实施例中,指令转换器是软件指令转换器,但是替代地指令转换器可以软件、固件、硬件、或者其各种组合实现。图6C以高级语言602示出了程序,该程序可使用x86编译器604来编译以生成x86二进制代码606,该二进制代码可天然地由具有至少一个x86指令集核心的处理器626来执行。具有至少一个x86指令集核心626的处理器表示可通过兼容地执行或者以其他方式处理(1)因特尔x86指令集核心的指令集的实质部分或者(2)以在具有至少一个x86指令集核心的因特尔处理器上运行为目标的对象代码版本的应用或其他软件来执行与具有至少一个x86指令集核心的因特尔处理器基本相同的功能以实现与具有至少一个x86指令集核心的因特尔处理器基本相同的结果的任何处理器。x86编译器604表示可操作用于生成在具有或者没有附加链接处理的情况下可在具有至少一个x86指令集核心626的处理器上执行的x86二进制代码606(例如,对象代码)的编译器。类似地,图6C以高级语言602示出了程序,该程序可使用替代指令集编译器608来编译以生成替代指令集二进制代码620,该替代指令集二进制代码620可由不具有至少一个x86指令集核心的处理器624(诸如,具有可执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的处理器)来原生地执行。指令转换器622用于将x86二进制代码606转换成可由不具有x86指令集核心624的处理器在本机上执行的代码。该经转换的代码不可能与替代指令集二进制代码620相同,因为难以制作能够这样做的指令转换器;然而,经转换的代码将完成一般操作并且由来自替代指令集的指令构成。由此,指令转换器622表示通过仿真、模拟、或者任何其他处理允许处理器或者不具有x86指令集处理器或核心的其他电子设备执行x86二进制代码606的软件、固件、硬件、或者其组合。
示例性核心架构
有序和无序核心方框图
图7A是示出根据一个实施例的示例性有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图7B是示出根据一个实施例的有序流水线以及示例性寄存器重命名的、无序发令/执行流水线的框图。图7A和7B中的实线框示出有序流水线和有序核心,而任选增加的虚线框示出寄存器重命名的、无序发令/执行流水线和核心。假设有序方面是无序方面的子集,将描述无序方面。
在图7A中,处理器流水线700包括取指级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也称为分派或发令)级712、寄存器读取/存储器读取级714、执行级716、回写/存储器写级718、异常处理级722、以及提交级724。
图7B示出处理器核心790,该核心790包括耦合到执行引擎单元750的前端单元730,并且两者均耦合到存储器单元770。核心790可以是缩减的指令集计算(RISC)核心、复杂的指令集计算(CISC)核心、超长指令字(VLIW)核心、或者混合或替代核心类型。作为另一选项,核心790可以是专用核心,诸如举例而言,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元734耦合到指令翻译后备缓冲器(TLB)736,该指令TLB736耦合到指令提取单元738,该指令提取单元738耦合到解码单元740。解码单元740(或解码器)可对指令进行解码,并且生成一个或多个微操作、微代码输入点、微指令、其他指令、或者从原始指令解码、或以其他方式反映原始指令、或从原始指令派生的其他控制信号作为输出。解码单元740可使用各种不同的机构来实现。合适机构的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心790包括微代码ROM或者存储用于特定微指令的微代码(例如,在解码单元740中或者在前端单元730内)的其他介质。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括耦合到回退单元752的重命名/分配器单元754、以及一组一个或多个调度器单元756。调度器单元756表示任何数量的不同调度器,包括:预约站、中央指令窗口等等。调度器单元756耦合至物理寄存器文件单元758。每一物理寄存器文件单元758表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如,作为要执行的下一指令的地址的指令指示符)等。在一个实施例中,物理寄存器文件单元758包括矢量寄存器单元、写掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可提供架构矢量寄存器,矢量掩码寄存器、以及通用寄存器。物理寄存器文件单元758由回退单元754重叠,以示出其中可实现寄存器重命名和无序执行(例如,使用重排序缓冲器和回退寄存器文件;使用特征文件、历史缓冲器、以及回退寄存器文件;使用寄存器映射和寄存器池等)的各种方式。回退单元754和物理寄存器文件单元758耦合到执行集群760。执行集群760包括一组一个或多个执行单元762以及一组一个或多个存储器存取单元764。执行单元762可执行各种操作(例如,位移、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)执行。尽管一些实施例可包括专属于专用功能或功能集的大量执行单元,但是其他实施例可包括仅一个执行单元或者全部都执行所有功能的多个执行单元。调度器单元756、物理寄存器文件单元758、以及执行集群760被示为可能是复数,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器存取流水线-并且在单独的寄存器存取流水线的情况下,实现其中仅该流水线的执行集群具有存储器存取单元764的特定实施例)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发出/执行,而其他流水线可以是有序发出/执行。
一组存储器存取单元764耦合到存储器单元770,该存储器单元770包括耦合到数据高速缓存单元774的数据TLB单元772,该数据高速缓存单元774耦合到第二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一种或多种其他级别的高速缓存,并且最终耦合到主存储器。
作为示例,示例性机床电器重命名、无序发出/执行核心架构可如下地实现流水线700:1)指令提取738执行提取和长度解码级702和704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度级712;5)物理寄存器文件单元758和存储器单元770执行寄存器读取/存储器读取级714;执行集群760执行执行级716;6)存储器单元770和物理寄存器文件单元758执行回写/存储器撰写级718;7)各个单元可在异常处理级722中体现;以及8)回退单元754和物理寄存器文件单元758执行提交级724。
核心790可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维耳市MIPS Technologies的MIPS指令集、加利福尼亚州森尼维耳市的ARM holding的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核心790包括逻辑以支持打包数据指令集扩展(例如,SSE、AVX1、AVX2等),由此允许许多多媒体应用所使用的操作使用打包数据来执行。
应当理解,该核心可支持多线程(执行并行的两组或两组以上的操作或线程),并且可以包括分时多线程、同时多线程(其中单一物理核心为每一线程提供物理核心是同时多线程的逻辑核心)、或者其组合(例如,分时提取和解码以及此后诸如在技术中的同时多线程)的各种方式这样做。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元734/774以及共享的L2高速缓存单元776,但是替代实施例可具有用于指令和数据两者的单一内部高速缓存,诸如举例而言,第一级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和外部高速缓存的组合,该外部高速缓存在核心和/或处理器外部。替代地,所有高速缓存可在核心和/或处理器外部。
专用示例性有序核心架构
图8A-B示出更特定的示例性有序核架构的框图,其核可以是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口、以及其他存储器I/O逻辑进行通信。
图8A是根据一个实施例的连接到片上互联网络802且具有第二级(L2)高速缓存804的本地子集的单一处理器核心的方框图。在一个实施例中,指令解码器800支持具有打包数据指令集扩展的x86指令集。L1高速缓存806允许对高速缓存存储器进行低延迟存取而进入标量和矢量单元。尽管在一个实施例中(为了简化设计)标量单元808和矢量单元810使用分离的寄存器集合(分别是标量寄存器812和矢量寄存器814)并且在两者之间传输的数据被写入存储器且随后从第一级(L1)高速缓存806读回,但是替代实施例可使用不同的方法(例如,使用单一寄存器集合或者包括允许数据在不写入和读回的情况下在两个寄存器文件之间传输的通信通道)。
L2高速缓存804的本地子集是分成分离的本地子集(每一处理器核心一个本地子集)的全局L2高速缓存的一部分。每一处理器核心具有到L2高速缓存804的其自己的本地子集的直接存取通道。由处理器核心读取的数据被存储在其L2高速缓存子集804中,并且可与存取其自己的本地L2高速缓存子集的其他处理器核心并行地快速存取。由处理器核心写入的数据被存储在其自己的L2高速缓存子集804中,并且如果必要则从其他子集清除(flush)。环形网络确保共享数据的相干性。环形网络是双向的以允许在芯片内诸如处理器核心、L2高速缓存、以及其他逻辑块之类的代理相互通信。
图8B是根据本发明的实施例的图8A中的处理器核心的一部分的展开图。图8B包括L1高速缓存804的L1数据高速缓存806A部分、以及关于矢量单元810和矢量寄存器814的更多细节。具体地,矢量单元810是16宽矢量处理单元(VPU)(参见16宽ALU828),该矢量处理单元执行整数、单精度浮动和双精度浮动的指令中的一个或多个。VPU支持使用拌和单元820拌和寄存器输入、使用数字转换单元822A-B数字转换、以及使用存储器输入上的复制单元824复制。写掩码寄存器826允许断定所得矢量撰写。
具有集成存储器控制器和图形的处理器
图9是根据一个实施例的处理器900的框图,该处理器可具有一个以上的核,可具有集成的存储器控制器,且可具有集成的图形。图9的实线框示出了处理器900,处理器900具有单个核心902A、系统代理910、一组一个或多个总线控制器单元916,而可选附加的虚线框示出了替代的处理器900,具有多个核心902A-N、系统代理单元910中的一组一个或多个集成存储器控制器单元914以及专用逻辑908。
由此,处理器900的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核心)的专用逻辑908、以及作为一个或多个通用核心(例如,通用有序核心、通用无序核心、两者的组合)的核心902A-N的CPU;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核心的核心902A-N的协处理器;以及3)具有作为大量通用有序核心的核心902A-N的协处理器。由此,处理器900可以是通用处理器、协处理器、或专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核心(MIC)协处理器(包括30个或30个以上的核心)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器900可以是一个或多个基板的一部分,和/或在一个或多个基板上使用大量处理技术(诸如举例而言,BiCMOS、CMOS、或NMOS)中的任一种技术实现。
存储器等级(hierarchy)包括核心内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元906、以及耦合到一组集成存储器控制器单元914的外部存储器(未示出)。一组共享高速缓存单元906可包括一个或多个中级高速缓存(诸如第二级(L2)、第三级(L3)、第四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环形的互连单元912使集成图形逻辑908、一组共享高速缓存单元906、以及系统代理单元910/集成存储器控制器单元914互连,但是替代实施例可使用任意数量的公知技术来互连这些单元。在一个实施例中,在一个或多个高速缓存单元906与核心902A-N之间维持相干性。
在一些实施例中,核心902A-H中的一个或多个核心能够多线程。系统代理910包括这些组件配合和操作核心902A-N。这些系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括调整核心902A-N的功率状态必需的的逻辑和组件、以及集成图形逻辑908。显示单元用于驱动一个或多个外部连接的显示器。
核心902A-N在架构指令集方面可以是同质的或者异质的,即核心902A-N中的两个或两个以上核心可以能够执行相同的指令集,而其他核心可以能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的框图。在本领域中已知的用于膝上型个人计算机、台式个人计算机、手持个人计算机(PC)、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够结合处理器和/或其他执行逻辑的各种各样系统或电子设备通常是合适的。
现在参考图10,所示出的是根据一个实施例的系统1000的框图。系统1000可包括一个或多个处理器1010、1015,这些处理器耦合到控制器集线器1020。在一个实施例中,控制器集线器1020包括图形存储器控制器集线器(GMCH)1090和输入/输出集线器(IOH)1050(它们可在分离的芯片上),GMCH1090包括耦合到存储器1040和协处理器1045的存储器和图形控制器,IOH1050使输入/输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制中的一个或两个集成在处理器内(如本文所述),存储器1040和协处理器1045直接耦合到处理器1010和具有IOH1050的单个芯片中的控制器中枢1020。
附加的处理器1015的任选特性在图10中通过虚线来表示。每一处理器1010、1015可包括本文中所描述的处理器核心中的一个或多个,并且可以是处理器900的某种版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或者两者的组合。对于至少一个实施例,控制器集线器1020经由诸如前端总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1095与处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如举例而言,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器1020可包括集成图形加速器。
按照包括体系结构、微体系结构、热、功耗特征等等优点的度量谱,(多个)物理资源1010、1015之间存在各种差别。
在一个实施例中,处理器1010执行控制具有通用类型的数据处理操作的指令。协处理器指令可被嵌入这些指令内。处理器1010识别如具有应当由附连的协处理器1045执行的类型的这些协处理器指令。因此,处理器1010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发出到协处理器1045。协处理器1045接受和执行接收到的协处理器指令。
现在参考图11,所示出的是根据一个实施例的第一更具体示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个可以是一些版本的处理器900。在一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
处理器1170和1180分别被示为包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括其总线控制器单元点对点(P-P)接口1176和1178的一部分;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可使用P-P接口电路1178、1188经由点对点(P-P)接口1150交换信息。如图11所示,IMC1172和1182将处理器耦合到相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180可各自使用点对点接口电路1176、1194、1186、1198经由各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可任选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如举例而言,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可被包括在任一处理器中或者在两个处理器外部,但是经由P-P互连与处理器连接,由此如果处理器置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1190可经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线、或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线。也可使用替代实施例。
如图11所示,各种I/O设备1114可连同总线桥1118一起耦合到第一总线1116,总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者其他处理器之类的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信设备1127以及可以包括指令/代码和数据1130的存储单元1128(诸如盘驱动器或其它海量存储设备)。此外,音频I/O1124可耦合到第二总线1120。注意,其他架构是可能的。例如,代替图11的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图12,所示出的是根据一个实施例的第二更具体示例性系统1200的框图。图11和12中的类似元件使用类似附图标记,且在图12中省略了图11的某些方面以避免混淆图12的其它方面。
图12示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1182。因此,CL1172和1182包括集成存储器控制器单元且包括I/O控制逻辑。图12示出:不仅存储器1132、1134耦合至CL1172、1182,I/O设备1214也耦合至控制逻辑1172、1182。传统I/O设备1215耦合到芯片组1190。
现在参考图13,所示出的是根据一个实施例的SoC1300的框图。图9中的类似元件具有相似的附图标记。同样,虚线框是更多高级SoC上的任选的特征。在图13中,互连单元1302耦合到:包括一组一个或多个核心902A-N和共享高速缓存单元906的应用处理器1310、系统代理单元910、总线控制器单元916、集成存储器控制器单元914、可包括集成图形逻辑、图形处理器、音频处理器、以及视频处理器的一组或者一个或多个协处理器1320、静态随机存取存储器(SRAM)单元1330、直接存储器存取(DMA)单元1332、以及用于耦合到一个或多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文中所公开的机构的实施例可以硬件、软件、固件、或者这些实现方法的组合来实现。实施例可被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
诸如图11所示的代码1130之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(诸如举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以高级过程或面向对象编程语言实现,以与处理系统进行通信。如果期望,程序代码则还可以汇编或机器语言实现。实际上,本文中所描述的机构在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核心”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,这些非瞬态有形排列包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
因此,实施例还包括包含指令或者包含设计数据(诸如硬件描述语言(HDL))的非瞬态有形机器可读介质,该设计数据定义本文中所描述的结构、电路、装置、处理器、和/或系统特征。这些实施例还可被称为程序产品。
虽然已经描述了特定示例实施例,并将其示出在附图中,可以理解到,这些实施例仅仅是示例性的且不是限制性的,并且不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其他修改方式。在本技术领域中,因为发展很快且未来的进步未曾可知,本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附的权利要求书的范围。
Claims (20)
1.一种指令处理装置,包括:
用于存储指向存储器中的数据结构的指针的多个寄存器,所述数据结构对应于由操作系统用来对执行保持跟踪的控制栈;以及
解码器,用于从请求者接收将控制从所述请求者的第一特权等级转移到操作系统内核的第二特权等级的系统调用指令;以及
耦合于所述寄存器的执行单元,所述执行单元用于:响应于所述系统调用指令,在一个最小单元过渡中在所述请求者和所述操作系统内核之间交换应由所述寄存器的所述指针所指向的数据结构。
2.如权利要求1所述的装置,其特征在于,所述解码器用于从所述操作系统内核接收系统返回指令,并且所述执行单元用于响应于所述系统返回指令而在一个最小单元过渡中将控制从所述操作系统内核还原到所述请求者。
3.如权利要求1所述的装置,其特征在于,所述第一特权等级与所述第二特权等级相同。
4.如权利要求1所述的装置,其特征在于,所述第一特权等级处于非监控程序模式而第二特权等级处于监控程序模式。
5.如权利要求1所述的装置,其特征在于,对所述指令做出响应的所述执行单元用于最小单元地用正确的值加载一个或多个段寄存器。
6.如权利要求1所述的装置,其特征在于,对所述指令做出响应的所述执行单元用于最小单元地对一个或多个段寄存器执行有效性检查。
7.如权利要求1所述的装置,其特征在于,对所述指令做出响应的所述执行单元用于最小单元地对要被加载到所述寄存器的一个或多个寄存器中的一个或多个目标指针执行地址符合度的规范检查。
8.一种用于处理指令的方法,包括:
从请求者接收将控制从所述请求者的第一特权等级转移到操作系统内核的第二特权等级的系统调用指令;以及
响应于所述系统调用指令,在一个最小单元过渡中在所述请求者和所述操作系统内核之间交换存储在存储器中且被寄存器指向的数据结构,所述数据结构对应于由操作系统用来对执行保持跟踪的控制栈。
9.如权利要求8所述的方法,其中,还包括:
从所述操作系统内核接收系统返回指令;以及
响应于所述系统返回指令,在一个最小单元过渡中将控制从所述操作系统内核还原到所述请求者。
10.如权利要求8所述的方法,其特征在于,所述第一特权等级与所述第二特权等级相同。
11.如权利要求8所述的方法,其特征在于,所述第一特权等级处于非监控程序模式而第二特权等级处于监控程序模式。
12.如权利要求8所述的方法,其特征在于,还包括:
最小单元地用正确的值加载一个或多个段寄存器。
13.如权利要求8所述的方法,其特征在于,还包括:
最小单元地对一个或多个段寄存器执行有效性检查。
14.如权利要求8所述的方法,其特征在于,还包括:
最小单元地对要被加载到所述寄存器的一个或多个寄存器中的一个或多个目标指针执行地址符合度的规范检查。
15.一种计算机系统,包括:
存储器;以及
耦合于所述存储器的处理器,所述处理器包括:
用于存储指向存储器中的数据结构的指针的多个寄存器,所述数据结构对应于由操作系统用来对执行保持跟踪的控制栈;以及
解码器,用于从请求者接收将控制从所述请求者的第一特权等级转移到操作系统内核的第二特权等级的系统调用指令;以及
耦合于所述寄存器的执行单元,所述执行单元用于响应于所述系统调用指令,在一个最小单元过渡中在所述请求者和所述操作系统内核之间交换应由所述寄存器的所述指针所指向的数据结构。
16.如权利要求15所述的系统,其特征在于,所述解码器用于从所述操作系统内核接收系统返回指令,并且所述执行单元用于响应于所述系统返回指令而在一个最小单元过渡中将控制从所述操作系统内核还原到所述请求者。
17.如权利要求15所述的系统,其特征在于,所述第一特权等级与所述第二特权等级相同。
18.如权利要求15所述的系统,其特征在于,所述第一特权等级处于非监控程序模式而第二特权等级处于监控程序模式。
19.如权利要求15所述的系统,其特征在于,对所述指令做出响应的所述执行单元用于最小单元地用正确的值加载一个或多个段寄存器,以及最小单元地对一个或多个段寄存器执行有效性检查。
20.如权利要求15所述的系统,其特征在于,对所述指令做出响应的所述执行单元用于最小单元地对要被加载到所述寄存器的一个或多个寄存器中的一个或多个目标指针执行地址符合度的规范检查。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/837,878 | 2013-03-15 | ||
US13/837,878 US9207940B2 (en) | 2013-03-15 | 2013-03-15 | Robust and high performance instructions for system call |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050415A CN104050415A (zh) | 2014-09-17 |
CN104050415B true CN104050415B (zh) | 2017-10-13 |
Family
ID=50554831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410095695.6A Active CN104050415B (zh) | 2013-03-15 | 2014-03-14 | 用于系统调用的稳健且高性能的指令 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9207940B2 (zh) |
JP (1) | JP5985526B2 (zh) |
KR (2) | KR20140113557A (zh) |
CN (1) | CN104050415B (zh) |
DE (1) | DE102014003854A1 (zh) |
GB (1) | GB2514881B (zh) |
IN (1) | IN2014CH00978A (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6370098B2 (ja) * | 2014-05-16 | 2018-08-08 | 杉中 順子 | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 |
US10528345B2 (en) * | 2015-03-27 | 2020-01-07 | Intel Corporation | Instructions and logic to provide atomic range modification operations |
US10761877B2 (en) * | 2017-07-21 | 2020-09-01 | Intel Corporation | Apparatuses, methods, and systems for blockchain transaction acceleration |
CN108958798B (zh) * | 2018-06-15 | 2021-04-20 | 上海兆芯集成电路有限公司 | 指令翻译电路、处理器电路及其执行方法 |
US11366663B2 (en) * | 2018-11-09 | 2022-06-21 | Intel Corporation | Systems and methods for performing 16-bit floating-point vector dot product instructions |
US20200409711A1 (en) * | 2019-06-29 | 2020-12-31 | Intel Corporation | Processor instruction support for mitigating controlled-channel and cache-based side-channel attacks |
CN111679857B (zh) * | 2020-06-15 | 2024-01-23 | 上海兆芯集成电路股份有限公司 | 高效能复杂指令译码的微处理器 |
US20240028336A1 (en) * | 2022-07-21 | 2024-01-25 | Vmware, Inc. | Techniques for reducing cpu privilege boundary crossings |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN200941211Y (zh) * | 2006-08-23 | 2007-08-29 | 北京同方微电子有限公司 | 用于密码学运算的微处理器内核 |
CN101131719A (zh) * | 2006-08-23 | 2008-02-27 | 北京同方微电子有限公司 | 一种用于密码学运算的微处理器内核 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62286155A (ja) * | 1986-06-05 | 1987-12-12 | Sharp Corp | マルチcpu制御方式 |
JPH03163630A (ja) * | 1989-11-21 | 1991-07-15 | Mitsubishi Electric Corp | プロセッサのスタック制御方法 |
US6901505B2 (en) * | 2001-08-09 | 2005-05-31 | Advanced Micro Devices, Inc. | Instruction causing swap of base address from segment register with address from another register |
US20030226014A1 (en) * | 2002-05-31 | 2003-12-04 | Schmidt Rodney W. | Trusted client utilizing security kernel under secure execution mode |
US8607235B2 (en) * | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
JP2008102847A (ja) * | 2006-10-20 | 2008-05-01 | Nec Corp | マルチスレッドプログラム処理方法及び装置 |
US8578483B2 (en) * | 2008-07-31 | 2013-11-05 | Carnegie Mellon University | Systems and methods for preventing unauthorized modification of an operating system |
US8312468B2 (en) * | 2009-06-09 | 2012-11-13 | Open Kernel Labs | Methods and apparatus for fast context switching in a virtualized system |
US8612711B1 (en) * | 2009-09-21 | 2013-12-17 | Tilera Corporation | Memory-mapped data transfers |
-
2013
- 2013-03-15 US US13/837,878 patent/US9207940B2/en active Active
-
2014
- 2014-02-24 JP JP2014032523A patent/JP5985526B2/ja active Active
- 2014-02-26 IN IN978CH2014 patent/IN2014CH00978A/en unknown
- 2014-03-11 GB GB1404223.8A patent/GB2514881B/en not_active Expired - Fee Related
- 2014-03-14 CN CN201410095695.6A patent/CN104050415B/zh active Active
- 2014-03-14 KR KR1020140030547A patent/KR20140113557A/ko active Application Filing
- 2014-03-17 DE DE102014003854.8A patent/DE102014003854A1/de active Pending
-
2015
- 2015-12-08 US US14/962,883 patent/US20160092227A1/en not_active Abandoned
-
2016
- 2016-06-09 KR KR1020160071646A patent/KR101780303B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN200941211Y (zh) * | 2006-08-23 | 2007-08-29 | 北京同方微电子有限公司 | 用于密码学运算的微处理器内核 |
CN101131719A (zh) * | 2006-08-23 | 2008-02-27 | 北京同方微电子有限公司 | 一种用于密码学运算的微处理器内核 |
Also Published As
Publication number | Publication date |
---|---|
JP5985526B2 (ja) | 2016-09-06 |
GB2514881A (en) | 2014-12-10 |
JP2014182799A (ja) | 2014-09-29 |
KR101780303B1 (ko) | 2017-09-21 |
US20140281437A1 (en) | 2014-09-18 |
IN2014CH00978A (zh) | 2015-05-08 |
US9207940B2 (en) | 2015-12-08 |
DE102014003854A1 (de) | 2014-09-18 |
CN104050415A (zh) | 2014-09-17 |
GB201404223D0 (en) | 2014-04-23 |
US20160092227A1 (en) | 2016-03-31 |
GB2514881B (en) | 2015-09-30 |
KR20160072085A (ko) | 2016-06-22 |
KR20140113557A (ko) | 2014-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
CN104603766B (zh) | 经加速的通道间的向量归约指令 | |
CN104915181B (zh) | 用于条件存储器错误帮助抑制的方法、处理器和处理系统 | |
CN104335183B (zh) | 用于测试事务性执行状态的方法、装置和系统 | |
CN103959236B (zh) | 用于提供向量横向多数表决功能的处理器、设备和处理系统 | |
CN104603746B (zh) | 由读和写掩码控制的向量移动指令 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN107209722A (zh) | 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑 | |
CN104603745A (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
CN104951296A (zh) | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 | |
CN104919432B (zh) | 用于将多个位向左移并将多个1拉入较低有效位的指令 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
TWI715686B (zh) | 用於容錯及錯誤偵測之系統、方法和裝置 | |
CN108369509A (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN109032609A (zh) | 用于实现页级自动二进制转换的硬件剖析机制 | |
CN104050012A (zh) | 指令模拟处理器、方法和系统 | |
CN104049953A (zh) | 用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令 | |
CN104025027B (zh) | 结构访问处理器、方法、系统和指令 | |
CN104049948A (zh) | 指令仿真处理器、方法和系统 | |
CN108292232A (zh) | 用于加载索引和分散操作的指令和逻辑 | |
TW201732581A (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 |