首页> 中国专利> 来自过程指令的返回-目标限制性返回、处理器、方法及系统

来自过程指令的返回-目标限制性返回、处理器、方法及系统

摘要

处理器包括解码来自过程(RTR返回)指令的返回目标限制性的返回的解码单元。返回目标限制单元响应于RTR返回指令以判断是否限制由RTR返回指令作出向对应于RTR返回指令的返回地址处的指令的控制流程转移的企图。判断基于返回地址处的指令的类型与RTR返回指令的兼容性,并基于RTR返回指令的第一返回目标限制性的信息(RTR信息)的与返回地址处的指令的第二RTR信息的兼容性。控制流程转移单元响应于RTR返回指令,当返回目标限制单元确定不限制该企图时,将控制流程转移到返回地址处的指令。

著录项

  • 公开/公告号CN104951697A

    专利类型发明专利

  • 公开/公告日2015-09-30

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201510091513.2

  • 发明设计人 P·卡普瑞奥利;

    申请日2015-02-28

  • 分类号G06F21/56(20130101);G06F9/455(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人张东梅

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 11:09:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-03

    授权

    授权

  • 2015-11-04

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20150228

    实质审查的生效

  • 2015-09-30

    公开

    公开

说明书

背景技术

技术领域

本文所述的各实施例一般涉及处理器。尤其地,本文所述的各实施例 一般涉及执行返回指令的处理器。

背景信息

面向返回的编程(ROP)是攻击者可以用来获得对计算机系统或其他 电子设备的控制的计算机安全性利用技术。在ROP中,攻击者可以获得对 栈的控制,以便劫持程序控制流。

对调用栈的控制常常通过缓冲器溢出利用或攻击来实现。在缓冲器溢 出中,在将数据存储到存储器中之前不充分执行边界检查的函数可能接受 比能够适当地存储的数据更多的数据。例如,攻击者可能向网页浏览器发 送比网页浏览器能够适当地存储的数据更多的数据。如果数据正在被存储 在栈上,则某些数据可能超出分配给该函数的变量的存储空间并盖写返回 地址。返回地址是由调用过程指令存储在栈上的地址,该地址旨在用于在 被调过程完成之后将控制流程重新定向回正在调用的函数。然而,在缓冲 器溢出攻击或利用中,返回地址可能被不同的返回地址盖写。这可能会使 攻击者将控制流程转向不同的返回地址,从不同的返回地址开始执行代码, 并执行潜在地不希望的和/或恶意的动作。

在ROP攻击中,攻击者可能将所谓的“小工具(gadgets)”的序列链 接在一起。每一小工具都可能表示一组一个或几个指令,接下来是来自过 程指令的返回。攻击者可能扫描或检查代码的各种可执行的存储器区域, 以便定位或标识所希望的小工具。代码的这样的可执行的存储器区域的示 例包括,例如,应用、共享的用户级别库、驱动程序、系统级别代码以及 系统级别库。作为示例,攻击者可能扫描对应于来自过程(RET)指令的 返回的操作码0xC3,如64和IA-32架构软件开发人员手册(卷2, 指令集引用,A-Z,指令编号325383-041US,2011年12月)所描述。在标 识每一操作码之后,攻击者可能查看一下,前面的指令是否可用作小工具。 作为示例,攻击者可标识弹出栈指令,接下来是返回指令,作为第一小工 具,寄存器到寄存器移动指令,接下来是返回指令,作为第二小工具,依 次类推。在某些情况下,攻击者可能能够标识足够多的小工具,以构成所 谓的图灵完整的小工具目录,该目录可以允许攻击者执行各种或潜在地几 乎任何所需的恶意动作。

图1是示例三个小工具链100的框图。链包括第一小工具101,该第 一小工具101包括弹(pop)eax指令102和来自过程(RET)指令的第一 返回103。第一小工具链接到第二小工具104。第二小工具包括弹(pop)ecx 指令105和来自过程指令的第二返回106。第一和第二小工具将数据从栈弹 出到eax和ecx寄存器中。第二小工具链接到第三小工具107。第三小工具 包括mov[ecx],eax指令108和来自过程指令的第三返回109。第三小工 具将寄存器eax中的值存储到由寄存器ecx指出的存储器位置。小工具可能 位于潜在地不同类型的代码110中,诸如应用、库、驱动程序、操作系统 等等。这只是小工具链的一个简单说明性示例。

一个粗略但是说明性的类比是将ROP的小工具视为在某种程度上类似 于从不同的杂志或报纸剪裁出单个字母并用于拼写勒索赎金信。正如单个 字母被从不同的杂志或报纸中剪掉并串联地排列,以清楚写出勒索赎金信, 潜在地在不同的代码块中标识的单个小工具(例如,每一小工具都包括一 个或几个指令,接下来是返回),并链接在一起,以创建带有不同的功能 的新的代码。小工具的图灵完整功能在某种程度上可能类似于具有清楚写 出任何所需的消息所需的全部字母A到Z,根据类比,它们可以被用来实 现几乎任何功能。

最初,缓冲器溢出攻击可以被用来劫持栈上的返回地址,并由此劫持 控制流程。第一小工具的第一指令的地址可能存储在栈上,以使控制流程 转向第一小工具。并非返回到调用过程(利用调用过程指令),控制流程 可以转移到第一小工具的第一指令。接下来,链中的第二小工具的第一指 令的返回地址可能被存储在栈上。第一小工具的返回指令可能使控制流程 转向第二小工具。如此,一系列小工具的返回地址可能按顺序存储在栈上, 并通过链接的小工具的返回指令跳转。通过按特定顺序将小工具链接在一 起,攻击者可能能够从预先存在的代码创建新的程序功能。攻击者可能潜 在地将此用于不希望的或有害的目的,诸如窃取机密信息,干扰或攻击其 他应用,发送电子邮件,发送文本消息,张贴推特,利用内核漏洞,等等。

附图说明

可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。 在附图中:

图1是示例三个小工具链的框图。

图2是处理器的实施例的框图。

图3是可操作以执行来自过程指令的返回-目标限制性的返回的实施例 的处理器的实施例的框图。

图4是示出了来自过程指令和返回目标指令的返回-目标限制性的返回 的操作的实施例的框图。

图5是执行来自过程指令的返回目标限制性的返回的实施例的方法的 实施例的方框流程图。

图6是分别存储了第一类型的代码和第二不同类型的代码(具有指出 不同的可准许或允许的RTR信息的RTR返回指令)的机器可读的存储介 质的实施例的框图。

图7是分析代码的方法的第一实施例的方框流程图。

图8是分析代码的方法的第二实施例的方框流程图。

图9A是示出了有序流水线的实施例和寄存器重命名无序发布/执行流 水线的的实施例的框图。

图9B是示出了处理器核的实施例的框图,包括耦合到执行引擎单元的 前端单元,两者都耦合到存储器单元。

图10A是连接到片上互联网络且具有第二级(L2)缓存的本地子集的 单一处理器核的实施例方框图。

图10B是图10A的处理器核的一部分的展开图的实施例的框图。

图11是处理器的一个实施例的框图,该处理器可具有一个以上的核, 可具有集成的存储器控制器,且可具有集成的图形。

图12是计算机架构的第一实施例的框图;

图13是计算机架构的第二实施例的框图;

图14是计算机架构的第三实施例的框图;

图15是片上系统架构的实施例的框图。

图16是根据本发明的各实施例的使用软件指令转换器将源指令集中 的二进制指令转换成目标指令集中的二进制指令的框图。

具体实施方式

本文中公开的是来自过程指令和返回目标指令的返回-目标限制性的 返回,用于执行该指令的处理器,在处理或执行该指令时处理器执行的方 法,以及合并一个或多个处理器以处理或执行该指令的系统。在以下描述 中,阐述多个特定细节(例如,特定指令操作、返回-目标限制性的信息的 类型、处理器配置、微架构细节、操作序列等)。然而,在没有这些具体 细节的情况下,也可实践实施例。在其他实例中,未详细示出公知电路、 结构和技术,以避免混淆对本描述的理解。

图2是处理器210的实施例的框图。处理器具有指令集212。指令集 包括处理器的本机指令。指令集中的指令表示提供给处理器以供执行的宏 指令、汇编语言指令或机器级指令,其与从指令集的指令解码的微指令、 微操作或指令或控制信号相反。

如图所示,在某些实施例中,指令集可以包括来自过程(返回)指令 214的返回-目标限制性的(RTR)返回。在某些实施例中,RTR返回指令 可以具有、可以指出返回-目标限制性的(RTR)信息216,或可以以别的 方式与返回-目标限制性的(RTR)信息216相关联。如进一步所示出的, 在某些实施例中,指令集可以包括返回目标指令218。在某些实施例中,返 回目标指令218可以具有、可以指出返回-目标限制性的(RTR)信息220, 或可以以别的方式与返回-目标限制性的(RTR)信息220相关联。在某些 实施例中,RTR返回指令和返回目标指令可以表示旨在一起使用的一对指 令,以有条件地约束或限制尝试的返回控制流程转移(例如,基于RTR信 息)。

处理器还包括返回目标限制单元222。返回目标限制单元可以以硬件、 固件、软件或其组合(例如,潜在地与某种固件和/或软件相结合的硬件) 来实现。在某些实施例中,RTR返回指令可操作用于导致返回目标限制单 元和/或处理器相对于RTR返回指令被允许将控制流程返回到哪些返回目 标(例如,哪些指令)是限制性的。在某些实施例中,RTR返回指令可操 作用于导致这样的限制使用和/或基于返回目标地址处的指令的类型。例如, 在某些实施例中,如果返回目标地址处的指令与返回目标指令218是相同 类型(例如,具有相同操作码),则向返回目标地址处的的指令的企图的 返回控制流程转移可以被允许,否则,被限制或阻止。返回目标指令218 可以表示主要被设计为或打算充当对于RTR返回指令的允许的或合法的返 回目标的标记的指令的类型。在某些实施例中,RTR返回指令可操作用于 导致这样的限制使用和/或基于RTR返回指令的RTR信息216和返回目标 指令的RTR信息220。例如,在某些实施例中,如果两组RTR信息216, 220相等、匹配或以别的方式兼容,则向返回目标处的指令的企图的返回控 制流程转移可以被允许。在一个特定示例实施例中,每一组RTR信息都可 以包括值(例如,整数值),两个值必须相等以便兼容。如果两组RTR信 息不兼容,那么,可以限制或阻止企图的返回控制流程转移。在某些实施 例中,可以通过指令的立即数(immediate)来提供RTR信息,虽然本发明 的范围不受限制。

有利地,RTR返回指令214和返回目标指令218可以帮助有条件地限 制,或提供对返回控制流程转移的更大的控制。作为一个潜在的优点,这 可以帮助防止面向返回的编程(ROP)攻击,或至少使启动它们变得难得 多。一方面,ROP攻击一般需要依赖于重复地执行向各种链接的小工具的 第一指令的返回控制流程转移的能力(例如,它们需要能够将这些小工具 的第一指令的目标地址放置在栈上)。然而,在某些实施例中,如果企图 的返回控制流程转移将指向与特定返回目标指令218不同类型(例如,不 同的操作码)的指令(例如,弹出指令、mov指令等等),那么,处理器 可以限制或防止返回控制流程转移。这单独地可能倾向于使得攻击者能够 发现通过意外事件存在的有用的小工具难得多,因为,除发现一个或多个 有用的指令接下来是返回指令之外,一个或多个有用的指令还需要前面有 返回目标指令218。这单独地可能使得攻击者能够向最初不打算返回到的指 令返回更难。此外,在某些实施例中,如果企图的返回控制流程转移将指 向带有不匹配的或以别的方式不兼容的RTR信息的指令,那么,还可以限 制或防止这样的返回控制流程转移。这还可以使得攻击者能够向最初不打 算返回到的指令返回更难,因为返回目标指令218将需要具有匹配的或兼 容的RTR信息。

图3是可操作以执行来自过程(返回)指令314的返回-目标限制性 (RTR)的返回的实施例的处理器310的实施例的框图。在一些实施例中, 处理器可以是通用处理器(例如,在台式、膝上型或其它计算机中使用的 类型的通用微处理器)。替换地,处理器可以是专用处理器。合适的专用 处理器的示例包括,但不仅限于,网络处理器、通信处理器、密码处理器、 图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控 制器(例如,微控制器)。处理器可以是各种复杂指令集计算(CISC)处 理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处 理器中的任何一种,其各种混合型,或其他类型的处理器,或具有这样的 不同的处理器(例如,在不同的核中)的组合。

在操作过程中,处理器可以接收RTR返回指令314的实施例。例如, 可从指令获取单元、指令队列等接收RTR返回指令。RTR返回指令可表示宏 指令、汇编语言指令、机器代码指令、或处理器的指令集的指令或控制信 号。在某些实施例中,RTR返回指令可以具有,可以指出,或可以以别的 方式与返回-目标限制性的(RTR)信息相关联。在某些实施例中,RTR信 息可以包括与RTR返回指令相关联的一个或多个值。在某些实施例中,RTR 信息可以包括RTR返回指令的立即数中的值。RTR信息可以与指令相关联 的可能的方式的其他示例包括,但不仅限于,RTR信息处于指令的后缀中, 在指令之后的一个或多个字节中,在由指令指出的寄存器中提供,等等。

再次参考图3,处理器包括解码单元或解码器330。解码单元可以接收 和解码相对较高级别的RTR返回指令。解码单元可以输出一个或多个微指 令、微操作、微代码入口点、解码的指令或控制信号,或反映、表示相对 较高级别的RTR返回指令和/或从相对较高级别的RTR返回指令导出的其 他相对较低级别的指令或控制信号。一个或多个较低级指令或控制信号可 通过一个或多个较低级(例如,电路级或硬件级)操作来实现较高级指令。 在某些实施例中,解码单元可以包括接收指令的一个或多个输入结构(例 如,端口、互连、接口)、与输入结构耦合以识别和解码指令的指令识别 和解码逻辑,以及与指令识别和解码逻辑耦合以输出一个或多个对应的较 低级别的指令或控制信号的一个或多个输出结构(例如,端口、互连、接 口)。解码单元可以使用各种不同的机制来实现,包括但不限于,微代码 只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和本 领域已知的用于实现解码单元的其他机制。

在某些实施例中,并非RTR返回指令314被直接提供到解码单元330, 可以可任选地使用指令仿真器、转换器、变形器、解释器,或其他指令转 换模块(未示出)。各种类型的指令转换模块在本领域中是已知的,并且 可在软件、硬件、固件、或者其组合中实现。在某些实施例中,指令转换 模块可以位于处理器外面,诸如,例如,在单独的管芯上和/或在存储器中 (例如,作为静态、动态,运行时仿真模块)。作为示例,指令转换模块 可以接收RTR返回指令314(可以是第一指令集的),并可以仿真,转换、 变形、解释,或以别的方式将RTR返回指令转换为一个或多个对应的或导 出的中间指令或控制信号(可以是不同的第二指令集的)。可以将第二指 令集的一个或多个中间指令或控制信号提供到解码单元,该解码单元可以 将它们解码为可以由处理器的本机硬件或逻辑执行的一个或多个较低级别 的指令或控制信号。

再次参考图3,存储器350与处理器310耦合。虽然在所示实施例中 示出了存储器,但是,其他实施例涉及不与这样的存储器耦合的单独的处 理器(例如,不部署在一个系统中)。在操作过程中,存储器可以存储栈 352。栈可以表示可操作以存储数据的栈类型的数据结构。栈的一个常见的 用途是跟踪每一被调过程(例如,每一活跃的子例程)在它完成执行之后 应该将控制返回到的返回地址或点。如图所示,栈可以存储对应于RTR返 回指令314的返回地址354。作为示例,利用RTR返回指令调用了过程的 对应的调用过程指令,可以将返回地址354存储到以前的栈。RTR返回指 令可以企图从栈弹出或以别的方式检索返回地址354,并将控制转移到返回 地址。存储器还可以存储具有由栈上的返回地址354指出的相关联的返回 地址358的代码356。代码具有指令,在所示示例中,为位于返回地址358 的返回目标指令318。

再次参考图3,返回目标限制单元322与解码单元330耦合,并在使 用过程中,在部署中,将与存储器350耦合,或以别的方式与存储器350 进行通信。处理器和/或返回目标限制单元响应于RTR返回指令314和/或 作为其结果(例如,响应于从其中的一个或多个指令或控制信号)可操作, 以便相对于RTR返回指令314被允许将控制流程返回到哪些特定返回目标 (例如,指令)是限制性的。在某些实施例中,返回目标限制单元322可 以响应于RTR返回指令314可操作,以基于返回目标指令的类型和/或返回 目标指令的其他非操作码信息与RTR返回指令兼容,判断是否要限制向位 于返回地址358处的RTR返回指令314的返回目标指令(例如,在所示示 例中,返回目标指令318)的控制流程转移。

在某些实施例中,返回目标限制单元322可以包括与解码单元耦合, 并且(在使用中,在部署中)要与存储器350耦合,或以别的方式与存储 器350进行通信的第一判断单元332。第一判断单元可以响应于RTR返回 指令314,判断返回地址358处的指令(例如,返回目标指令318)是否是 与RTR返回指令314兼容的类型。如图所示,返回地址358处的指令的类 型321的指示(例如,指令是或不是返回目标指令318的操作码或指示) 可以被提供给返回目标限制单元322。在某些实施例中,只有返回目标指令 318可以是与RTR返回指令314兼容的类型(例如,具有操作码),而其 他类型的指令(例如,指令集的不同的操作码)可能不兼容。可另选地, 几种不同类型的指令(例如,几个不同的操作码),常常不超过大约五种 不同类型的指令,可能可任选地与RTR指令兼容,而一般而言更大数量的 不同类型(例如,指令集的更大数量的不同的剩余操作码)可能不兼容。

在某些实施例中,指令318的这样的兼容的类型可能表示计划或设计 成只用于或主要用于与RTR返回指令314相结合的指令的专用的返回目标 标志类型,以标记对于RTR返回指令的潜在地合法的或允许的返回目标位 置。一般而言,返回目标指令318可能没有算术、逻辑,存储器访问,或 其他功能,虽然如果需要,对于特定实现,它们能够。在某些实施例中, 返回目标指令318可以是这样的类型,除了检查它们的类型并提供它们的 RTR信息以外,可以作为空操作(NOP)执行。在某些实施例中,这样的 兼容的指令的存在可能是向位置返回的必要条件,但不是充分条件。如果 这样的兼容的指令不位于返回地址358处,那么,返回目标限制单元322 和/或处理器可以限制或不允许向返回地址358的企图的返回。例如,返回 目标限制单元和/或处理器可以发出异常360,诸如,例如,控制保护错误。

在某些实施例中,返回目标限制单元322可以包括与解码单元耦合, 并且(在使用中,在部署中)要与存储器350耦合,或以别的方式与存储 器350进行通信的第二判断单元334。第二判断单元可以响应于RTR返回 指令314,判断返回地址358处的指令(例如,返回目标指令318)的(由 其指出的,或以别的方式与其相关联的)RTR信息是否与RTR返回指令 314的(由其指出的,或以别的方式与其相关联的)RTR信息兼容。如图 所示,返回地址358处的指令的RTR信息320可以被提供给返回目标限制 单元322,RTR返回指令的RTR信息316可以被提供给返回目标限制单元 322。

在不同的实施例中,两组RTR信息可能以不同的方式兼容。例如,在 某些实施例中,两组RTR信息当且仅当它们相等或以别的方式匹配时兼容。 例如,每一组RTR信息都可能潜在地包括一个值,并且,两个值当且仅当 它们相等时可能兼容或匹配。可另选地,两组RTR信息可以以特定实现所 需的其他方式匹配或兼容。例如,两组RTR信息可以通过函数(例如,散 列函数、校验和函数、逻辑AND、OR、NOT、XOR,或其他逻辑运算或 函数等等),彼此匹配和/或兼容。在某些实施例中,如果两组RTR信息不 兼容,那么,返回目标限制单元322和/或处理器可以限制或不允许向返回 地址358的企图的返回。例如,返回目标限制单元322和/或处理器可以发 出异常360,诸如,例如,控制保护错误。

在其他实施例中,可以将来自指令的RTR信息与其他信息组合,虽然 这不是必需的。这样的其他信息的示例包括,但不仅限于,处理器标识类 型信息(例如,来自处理器标识寄存器)、设备特定的信息(例如,型号 或序列号)、平台特定的信息、操作系统特许信息,加密密钥的一部分(例 如,第一字节)或全部等等。例如,可以将来自指令的立即数附加到这样 的信息,与其散列、XOR,或以别的方式与其相结合。这可以帮助增强安 全性,因为黑客通常不能轻松地知道这样的信息。如果比较的一侧(例如, 返回)将立即数与这样的额外的信息组合,而另一侧(例如,返回目标) 只使用立即数,那么,将对于特定设备自定义软件(例如,设备特定的信 息)。消费者可以从知道这样的信息的可信赖的来源获取软件。一个设备 的软件可能不能在另一设备上运行。

如果返回地址处的指令的类型是兼容的,并且如果两组RTR信息是兼 容的,那么,返回目标限制单元和/或处理器可以确定不限制和/或允许向返 回地址358处的企图的返回目标的控制流程转移。例如,返回目标限制单 元322可以向控制流程转移单元338提供允许信号336。除控制流程转移随 由返回目标限制单元的判断或授权(例如,允许信号336)而定之外,控制 流程转移单元基本上可以是常规的。例如,控制流程转移单元可以包括跳 转执行单元,或适合于实现来自过程控制转移操作的返回的其他类型的单 元或逻辑。代表性地,控制流程转移单元可以在指令指针寄存器340中存 储返回地址358,作为返回地址342。在可任选地使用分段的存储器(不是 必需的)的各实施例中,如果返回地址处的指令位于不同的段中(例如, 在段之间的控制转移的情况下),控制流程转移单元可以将返回目标指令 318的段346存储在段选择器寄存器344中。

为进一步说明某些概念,考虑一对RTR返回和返回目标指令的详细示 例实施例。RTR返回指令的一个特定实施例是具有在指令的立即数(例如, 2比特、4比特、8比特或16比特立即数)中所提供的常数K(例如,整数) 的RETK指令。一般而言,常数的可能的值的数量越大,对恶意攻击的保 护越大。作为示例,8比特立即数能够提供从0到255的值。返回目标指令 的一个特定实施例是在立即数中具有常数K的ENDRETK指令。ENDRETK 指令标记结束返回点或潜在地RETK指令的可允许的返回目标。使两个指 令的立即数具有相同大小是方便的,虽然这不是必需的,只要值可以相等。 为了使控制流程转移被返回目标限制单元322和/或处理器允许,可能需要 发现企图的返回目标地址处的ENDRETK指令的存在以及两个指令中的两 个常数K的相等性。例如,RET17指令可以只被允许返回到ENDRET17 指令,但不允许返回到ENDRET16指令或任何其他非ENDRET17指令。同 样,RET232指令可以只被允许返回到ENDRET232指令,但不允许返回到 ENDRET17指令或任何其他非ENDRET232指令。如果RET232指令试图 返回到弹出栈指令、加法指令、ENDRET231指令,或ENDRET232指令之 外的任何其他指令,那么,可以限制或防止企图的返回,并可以引发异常 (例如,控制保护错误)。应该理解,这只是一个说明性示例,本发明的 范围不仅限于此特定示例。

返回目标限制单元322和/或处理器可以包括特定逻辑(例如,晶体管、 集成电路,或潜在地与固件(例如,存储在非易失性存储器中的指令)和/ 或软件(例如,存储在存储器中的较高级别的指令)相结合的其他硬件), 该逻辑可操作,以执行RTR返回指令和/或响应于和/或作为RTR返回指令 的结果,判断是否限制向返回目标的返回。

有利地,RTR返回指令和返回目标指令可以帮助有条件地限制,或提 供对返回控制流程转移的更大的控制。作为一个潜在的优点,这可以帮助 防止面向返回的编程(ROP)攻击,或至少使启动它们变得难得多。一方 面,ROP攻击一般需要依赖于重复地执行向各种链接的小工具的第一指令 的返回控制流程转移的能力。然而,在某些实施例中,如果企图的返回控 制流程转移将指向与特定返回目标指令318不同类型(例如,不同的操作 码)的指令,那么,可以限制或防止这样的返回控制流程转移。此外,在 某些实施例中,如果企图的返回控制流程转移将指向带有不匹配的或以别 的方式不兼容的RTR信息的指令,那么,可以限制或防止这样的返回控制 流程转移。总的说来,这可以倾向于使得攻击者企图向最初未计划返回到 的位置返回更难。使用特定返回目标指令,以及兼容的RTR信息组,可以 帮助固定代码中的允许的返回路径,以便任意地返回到攻击者所希望的返 回目标一般而言不大可能。当创建程序时,返回目标指令的位置以及兼容 的RTR信息对指出全部计划的返回目标。一般不能轻松地发现不同的返回 目标,因为返回目标指令常常将不会存在于所希望的位置和/或将不会具有 兼容的RTR信息。这可以倾向于使通过意外事件存在的小工具的数量很少。

图4是示出了返回目标限制单元422的实施例对RTR返回指令414的 实施例和返回目标指令418的实施例的使用的框图。调用过程495具有指 出目标地址499和返回地址458的调用过程指令496。目标地址499是针对 正在返回的过程498中的第一指令401的。如在(1)所示,调用过程指令 导致处理器将初始目标地址存储在指令指针寄存器440中,并将正在返回 的过程498的初始段存储到段选择器寄存器中。返回地址454还可以存储 在对应于返回地址458的栈452上。然后,控制流程跳转或转移到正在返 回的过程498。如在(2)所示,可以执行目标地址498处的指令401,然 后,可以执行导致RTR返回指令414的一个或多个其他指令。当执行RTR 返回指令414时,返回目标限制单元422可以接收RTR返回指令的RTR 信息416,以及由RTR返回指令指出的栈452上的返回地址454处的暗示 的返回目标指令418的RTR信息420。返回目标指令的类型421的标志还 可以被提供到返回目标限制单元422。作为(3),返回目标限制单元可以 判断是否允许或限制向返回目标指令418的企图的控制流程转移,如本文 其它位置所描述的。如果判断是不限制,那么,如在(4A)所示,它可以 将返回地址454存储到指令指针寄存器440中,并可以将调用过程446的 段存储在段选择器寄存器444中(在段之间的转移的情况下)。如果判断 是限制,那么,如在(4B)所示,它可以引发异常460。然后,可以跳转 或转移到返回目标指令418。如在(5)所示,返回目标指令可以潜在地作 为NOP执行,然后,继续执行后续指令497。

图5是执行来自过程(RTR返回)指令的返回目标限制性的返回的实 施例的方法570的实施例的方框流程图。在各实施例中,方法可以由处理 器、指令处理设备或其他数字逻辑设备来执行。在一些实施例中,图5的 操作和/或方法可由图2-3中的任何一个的处理器执行和/或在图2-3中的任 何一个的处理器中执行。本文中所描述的用于图2-3中的任何一个的处理 器的组件、特征、以及具体的任选细节还任选地应用于图5的操作和/或方 法。替换地,图5的操作和/或方法可由类似的或完全不同的处理器或装置 执行,和/或在类似的或完全不同的处理器或装置内执行。此外,图2-3中 的任何一个的处理器可以执行与图5的那些相同、类似,或不同的操作和/ 或方法。

该方法包括在框571接收RTR返回指令。在各个方面,该指令可在处 理器、指令处理装置或者其一部分(例如,指令获取单元、解码单元、总 线接口单元等)处接收。在各个方面,该指令可从管芯外的源(例如,从 存储器、互连等)或者从管芯上的源(例如,从指令缓存、指令队列等) 接收。在某些实施例中,来自过程指令的返回目标限制性的返回可以具有, 可以指出,或可以以别的方式对应于RTR信息或与RTR信息相关联。

在框572x,可以作出返回地址处的指令的类型与RTR返回指令兼容的 判断。如果类型被确定为兼容(即,在框572,判断是“是”),则方法可 以前进到框573。在某些实施例中,为了发现类型是兼容的,返回地址处的 指令应该是返回目标指令,如本文的其它位置所描述的。

在框573,可以作出由RTR返回指令指出的第一RTR信息是否与由返 回地址处的指令指出的第二RTR信息兼容的判断。可以如本文的其它位置 所描述的那样作出此判断。如果RTR信息的组被确定为兼容(即,在框573, 判断是“是”),则方法可以前进到框574。

在框574,方法可以允许由RTR返回指令作出向对应于RTR返回指令 的返回地址处的指令的控制流程转移的企图。相反,如果任一类型被判断 为不兼容(即,在框572中,判断是“否”),或如果RTR信息的组被判 断不兼容(即,在框573,判断是“否”),那么,方法可以前进到框575。 在框575,方法可以限制由RTR返回指令作出向对应于RTR返回指令的返 回地址处的指令的控制流程转移的企图。

此处所公开的RTR返回指令和/或RTR信息的另一潜在的优点是,它 们可以帮助促进和/或改善对代码的遭受攻击(例如,ROP攻击)的风险的 分析或检查。常常在代码被允许使用之前通过分析来检查、审查并验证代 码。例如,这常常对于数字分发平台发生。作为一个示例,应用商店(App  Store)是针对iOS上的移动应用的数字分发平台,该平台允许用户浏览并 下载利用苹果的iOS软件开发工具包(SDK)开发的应用。另一示例是Mac  App Store,其具有针对Mac计算机设计的供下载的应用。应用发布者可以 向这样的数字分发平台提交应用,以供销售或从数字分发平台或商店下载。 通常,作为该过程的一部分,在应用被允许购买或下载之前,可以检查、 审查并验证应用。

在这样的检查过程中执行的分析的一种常见的类型是静态分析(例如, 静态二进制评估技术)。然而,这些技术的一个缺点是,它们常常不完全 适合于检测ROP类型的攻击。在文章“Jekyll on iOS:When Benign Apps  Become Evil”(2013年8月第22届USENIX安全讨论会)中提供了有关 此主题的进一步的背景讨论。一个顾虑是,攻击者可能编写被设计为执行 攻击而在静态分析过程中潜在地逃避检测的恶意应用。例如,攻击者可能 创建具有难以通过静态分析检测到的的隐藏的小工具的表面上正常的代码 (例如,应用)。作为一个特定示例,应用开发人员可能编写要通过App Store 分发的表面上正常的视频游戏,但是,在应用中包括了ROP攻击的隐藏的 小工具。攻击者可能向App Store或其他数字分发平台提交视频游戏或其他 应用供审查和验证。可以执行静态分析,包括根据应用的计划的流程,跟 踪调用和返回路径。然而,静态分析可能不能设想或预期只在运行时过程 中根据攻击者运行时命令遵循的不同的恶意返回路径。回想一下,在ROP 攻击中,通过动态地通过将返回地址放在栈上,对控制流程转移进行控制, 在运行时确定返回路径。结果,隐藏的小工具可能能够在静态分析过程中 逃避检测。应用可能通过应用检查和审查过程,并可能被置于App商店上 供购买和/或下载。当视频游戏或其他应用安装在智能电话、平板计算机或 其他计算机系统上时,攻击者可能启动攻击。攻击者可能引入恶意控制流 程,并按特定顺序组装小工具以执行恶意操作。

有利地,此处所公开的RTR返回指令和/或RTR信息可以帮助促进和/ 或改善对代码的分析,以发现恶意的意图和/或隐藏的小工具。一方面,RTR 返回和返回目标指令的对和/或兼容的RTR信息的对可能使可能的控制流 程返回路径更静态或固定。在运行时,可以限制控制流程返回路径去攻击 者选择的任何地方,而宁可说是可能仅限于与这些指令对和兼容的RTR信 息对一致的或兼容的控制流程返回路径。返回目标指令的位置以及兼容的 RTR信息组指出全部可能的/准许的返回目标。可以跳转到也具有带有兼容 的RTR信息的兼容的返回目标指令的多个不同的可能的返回位置(例如, 通过意外事件等等),虽然应该更加容易预期或预见这些不同的返回路径, 并且它们在数目上一般应该较少。这可能使得通过分析(例如,静态分析 技术)跟踪可能的返回路径更为容易,这可以帮助检测恶意代码。这还可 以帮助应用开发人员制作能够执行ROP攻击或其他恶意攻击同时能够在分 析过程中逃避检测的应用难得多。

图6是分别存储或以别的方式提供第一类型的代码682和不同的第二 类型的代码684(具有指出不同的可允许的RTR信息的RTR返回指令683, 685)的机器可读取的介质680(例如,机器可读的存储介质)的实施例的 框图。在某些实施例中,第一类型的代码可以是用户级别的代码和/或无特 权级别的代码,而第二类型的代码可以是系统级别的代码和/或有特权级别 的代码。在其他实施例中,可以使用其他不同类型的代码,诸如,例如, 库代码与非库代码,设备驱动程序代码与非驱动程序代码、操作系统代码 与非操作系统代码,用户级别的代码与非用户级别的代码,或其各种组合。

第一类型的代码具有指出对于第一类型的代码682允许,但是对于第 二不同类型的代码684不允许的RTR信息的RTR返回指令683。在某些实 施例中,对于第一类型的代码(例如,用户级别的代码)允许的RTR信息 可能对于多个其他类型的代码(例如,操作系统代码,设备驱动程序代码 等等)不被允许。类似地,不同的第二类型的代码具有指出对于第二类型 的代码684允许或准许的,但是,对于第一类型代码682不允许的RTR信 息的RTR返回指令685。在某些实施例中,对于第二类型的代码(例如, 操作系统代码)允许的RTR信息可能对于多个其他类型的代码(例如,用 户级别的代码,设备驱动程序代码等等)不被允许。

在某些实施例中,不同的允许的RTR信息可以用于不同级别的特权或 安全性。例如,第一类型的代码682(例如,用户级别和/或无特权级别的 代码)的RTR返回指令683的RTR信息可以仅限于一组可允许或准许的 值,这些值相对于第二类型的代码684(例如,系统级别和/或有特权级别 的代码)的RTR返回指令685的RTR信息的可允许或准许的值是互相排 斥的。例如,不相重叠的值的范围可以用于这两种不同类型的代码。作为 一个特定说明性示例,整数值0-127可以可任选地用于第一类型的代码682 的RTR信息,而整数值128-255可以可任选地用于第二类型的代码684的 RTR信息。

另外,如果需要的话,两个以上(例如,三个、四个、五个或更多) 不同类型的代码可以可任选地具有允许的RTR信息的不同的互相排斥的组 (例如,整数范围)。例如,在一个特定示例实施例中,可以可任选地使 用RTR指令的允许的RTR信息的六个不同的互相排斥组(例如,整数范 围)。例如,第一范围的整数值可以用于用户应用的RTR指令,不同的第 二范围的值可以用于用户库的RTR指令,不同的第三范围的值可以用于系 统应用的RTR指令,不同的第四范围的值可以用于系统库的RTR指令, 不同的第五范围的值可以用于设备驱动程序的RTR指令,以及不同第六范 围的值可以用于操作系统内核的RTR指令。应当理解这只是一个说明性示 例,而不是必需的。

注意,在此实施例中,允许的RTR信息被指定到RTR返回指令(和/ 或针对RTR返回指令管理),而不是返回目标指令。作为示例,用户级别 应用可能不被允许包含带有对于用户级别应用不允许的RTR信息(例如, 值)(例如,为操作系统预留的)的RTR返回指令。然而,用户级别的代 码可以被允许具有带有与为操作系统预留的RTR信息相等,匹配,或互补 的RTR信息(例如,值)的返回目标指令(例如,ENDRETK指令)。如 此,用户级别应用可以调用操作系统过程,该操作系统过程具有带有为操 作系统预留的RTR信息的RTR返回指令,返回可以被允许回到具有带有 互补的RTR信息的返回目标指令的用户级别的应用。

图7是分析代码的方法786的实施例的流程框图。可以使用代码分析 来判断代码是否满足管理对于RTR返回指令的什么RTR信息是可允许的 策略或规则。在某些实施例中,该方法可以由代码分析系统来执行。例如, 在某些实施例中,代码分析系统可以是执行分析以验证应用开发人员具有 根据规则或策略分配的RTR信息的应用商店(例如,App Store)或其他数 字分发平台的模块。作为另一个示例,代码分析系统可以包括一个或多个 操作系统、虚拟机模块,或其他有特权级别的软件模块。在再一个示例中, 诸如微代码和/或硬件之类的处理器的逻辑可以执行该方法。

该方法包括在框787接收第一类型的代码。例如,代码接收模块可以 接收代码。该方法包括,在框788,判断第一类型的代码的RTR返回指令 是否只指出允许用于第一类型的代码,但不允许用于一个或多个其他类型 的代码的RTR信息。代码的类型可以是前面所提及的那些中的任何一种。 这可以包括使用前面所提及的RTR信息的互相排斥的组或范围中的任何一 种。如果判断是“否”,则方法前进到框789,在那里,RTR信息被判断 不满足策略或规则。否则,如果判断是“是”,则方法前进到框790,在那 里,RTR信息被确定为满足策略或规则。作为一个示例,响应于框789, 数字分发平台模块可以决定不验证代码,除非RTR信息被修改以满足规则 或策略。作为另一个示例,响应于框789,操作系统模块可以确定不允许代 码运行。

图8是分析代码的方法891的另一实施例的方框流程图。在某些实施 例中,该方法可以由代码分析系统来执行。例如,在某些实施例中,代码 分析系统可以是应用商店(例如,App Store)或其他数字分发平台的模块。 作为另一个示例,代码分析系统可以包括一个或多个有特权级别的软件模 块。

该方法包括,在框892,接收代码。例如,代码接收模块可以接收代 码。该方法可任选地包括在框893,接收指出RTR返回和返回目标指令的 预期的互补对的元数据。在某些实施例中,代码分析系统可以要求标识具 有匹配的或兼容的RTR信息的RTR返回和返回目标指令的预期的互补对。 例如,当应用或代码被提交供考虑和检查和/或在被批准之前,应用商店(例 如,App Store)或其他数字分发平台的代码分析系统可能要求这样的标识。 应用开发人员可能需要与应用或代码一起提交指出RTR返回和返回目标指 令的这些预期的互补对的元数据。作为另一个示例,在应用调用时,一个 或多个有特权级别软件模块可能要求这样的元数据或标识。这样的信息也 可以被用来改善分析,以发现潜在的攻击。

该方法包括,在框894,改变至少一对预期的互补的RTR返回和返回 目标指令的RTR信息,而允许RTR信息保持互补。在某些实施例中,代 码分析系统或模块可以使用指示或元数据来向预期的兼容的RTR返回和返 回目标指令的对中的至少一对、有选择地向某些,大部分,或全部分配新 的或不同的RTR信息(例如,值)。例如,可以更改RTR返回指令和其 标识的返回目标指令的RTR信息,以便它们保持兼容,但是具有与之前不 同的RTR信息。作为示例,RET17/ENDRET17对可以被更改为 RET233/ENDRET233对。

在不同的实施例中,这可以按不同的方式来完成。一方面,系统或模 块可以检查在全部RTR信息的组之间有足够级别的相异性或熵(例如,RTR 信息的不同的对与相同对的比率至少满足阈值)。作为一个极端示例,如 果代码对于所有RTR返回和返回目标指令对使用相同RTR信息,那么, 可以缩小检查RTR信息兼容性的值。如果系统或模块检测到有太多的带有 相同RTR信息的兼容的指令的预期的对(例如,高于阈值),则可以确定 更改某些RTR信息,以减少处理器将允许的不同的可能的返回目标控制转 移的数量。元数据可以用于此用途。此可以帮助删除某些隐藏的小工具。 这可以由数字分发平台、操作系统模块等等的系统或模块来完成。

在另一方面,可以可任选地更改预期的兼容的指令对中的某些、大多 数或全部的RTR信息(例如,伪随机地、根据替换算法,等等),不管是 否检查相异性。这可以帮助混合或搅乱对于不同的对的RTR信息,可以帮 助防止具有相同兼容的RTR信息的隐藏的小工具。例如,在一个特定实施 例中,有特权级别的软件模块(例如,操作系统模块、虚拟机监视器模块, 等等)可以在应用或代码被调用或加载时,向指出的或预期的指令对中的 某些,大多数,或全部分配新的或不同的RTR信息。在另一特定实施例中, 在代码下载时(例如,当正在下载应用时),模块(例如,数字分发平台 或操作系统的)可以向指出的或预期的指令对中的某些,大多数,或全部 分配新的或不同的RTR信息。

对RTR信息施加附加约束的其他方式也是可以的。例如,在某些实施 例中,模块(例如,数字分发平台或有特权的软件模块的)可以施加规定 RTR信息的不同的组或唯一组将用于不同的RTR返回指令中的每一个以便 是可准许或可允许的策略或规则。例如,可以要求每一RTR返回指令具有 不同的值(例如,不同的整数或常数)。RTR信息量(例如,比特的数量) 可以足以提供所有这些不同的值。RTR信息的特定量取决于特定实现。

在某些实施例中,此处所公开的RTR返回指令和返回目标指令可以被 给予在旧式代码中未定义的和/或是非法的新的不同的操作码。换言之,在 RTR返回和返回目标指令被引入到指令集中之前,这些操作码可以不存在 于处理器的指令集中。

在其他实施例中,此处所公开的RTR返回指令和/或返回目标指令可以 被给予与旧式指令的那些和/或为旧式指令集定义的那些相同的操作码。这 可以允许这些指令在旧式硬件上运行。在一个实施例中,返回目标指令(例 如,RETK指令)可以被编码,如此,RTR信息(例如,K)是来自过程指 令(例如,RET指令)的现有的返回的立即数或后缀。例如,在Intel架构 中,来自过程指令的一个近返回是单字节指令C3。可以将RTR信息(例 如,K)附加到C3指令的末尾,以便指令将能够在旧式硬件上运行,因为 旧硬件会将C3解释为来自过程指令的旧式返回,并忽略随后的RTR信息 (例如,K)。旧式硬件可以将RTR信息(例如,K)视为可以被忽略或 至少不需要使用的后缀。相比之下,在新的硬件上,RTR信息(例如,K) 可以被处理器视为提供用于调节控制流程转移的RTR信息的立即数。现在 转向返回目标指令,在一个实施例中,返回目标指令(例如,ENDRETK 指令)可以被编码为旧式指令集中的空操作(NOP)的合法的或定义的实 例。如此,旧式硬件可能能够处理返回目标指令(例如,ENDRETK指令), 因为它只被视为NOP。相比之下,在新的硬件上,返回目标指令(例如, ENDRETK指令)可以被用来提供RTR信息,如本文其它位置所描述的。

在其他实施例中,旧式指令的操作码可以可任选地被赋予新的用途。 例如,这可以对于通常不用于现代环境中的和/或处于被弃用的过程中的旧 式指令来进行。作为一个示例,Intel架构中的RETn指令(例如,具有C2 或CA操作码)可以可任选地被赋予新的用途。RETn指令具有用于指定从 栈中弹出的字节的数量(例如,imm16字节)的16比特立即数(imm16)。 当前,RETn指令不被广泛地使用,并在被弃用的过程中,主要因为当前让 数据在寄存器中,而并非将它推到栈中,然后从栈中弹出它更常见。处理 器可以具有第一或旧式模式,在该模式下,RETn指令可以按常规方式解释 或实现,其中16比特立即数用于指出要从栈中弹出的字节的数量。处理器 还可以具有第二或新模式,在该模式下,RETn指令可以利用提供RTR信 息(例如,K值)的16比特立即数来解释或实现。

在某些实施例中,借助于来自系统软件的某些帮助,此处所公开的具 有新颖的返回目标指令的新的调用过程可能能够调用旧式过程(例如,旧 式共享的函数库的过程),并仍能够利用此处所公开的返回目标限制。例 如,可以有来自旧式过程中的过程指令(例如,带有C3操作码的旧式RET 指令)的旧式返回,来自过程指令的旧式返回之后的多个比特或一个或多 个字节可以被用作或解释为RTR信息(例如,K值)。通常,在旧式返回 指令(例如,C3RET指令)之后将有多个比特或一个或多个字节存在。例 如,可以按块(例如,4KB的)分配存储器。返回指令可以在这些块内的 某处。通常,在返回指令之后将有某些字节,除非返回指令正巧是块的最 后一个字节,并且不分配下一块。例如,如果应用在地址0x50000处分配 4KB,在地址0x51000分配另一4KB,并且返回指令处于地址50FFF处, 那么,下一字节处于0x5100,并且此下一字节可以被用作RTR信息。相反, 如果返回指令处于0x51FFF,并且0x52000处的存储器的块未分配,那么, 将不会有RTR信息的额外字节。即,在某些实施例中,在旧式过程(例如, 库)中在来自过程指令的旧式返回之后多个比特或一个或多个字节可以被 用作RTR信息。新的调用过程可以具有带有互补的RTR信息的新颖的返 回目标指令。

系统软件(在控制保护错误时被调用)可以处理某些情况。例如,系 统软件还可以处理旧式返回指令出现在代码空间的末尾处以及将存在于 RET之后的虚拟地址空间的字节不被映射到物理存储器的情况。系统软件 还可以处理库具有内部返回的情况,是旧式库正在丢失内部返回目标指令, 诸如,例如,通过查询白名单或使用其他逻辑。在某些实施例中,系统软 件(例如,操作系统)可以具有认识到旧过程正在被调用的策略,并可以 允许此处所公开的限制性的控制中的某些被忽略。

示例性核架构、处理器和计算机架构

处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样 的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的 高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同 处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在 用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/ 或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计 算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相 同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该 情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用 逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用 处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描 述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和无序核框图

图9A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重 命名的无序发布/执行流水线的框图。图9B是示出根据本发明的各实施例的要包括在 处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架 构核的框图。图9A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示 出寄存器重命名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情 况下,将描述无序方面。

在图9A中,处理器流水线900包括获取级902、长度解码级904、解码级906、 分配级908、重命名级910、调度(也被称为指派或发布)级912、寄存器读取/存储 器读取级914、执行级916、写回/存储器写入级918、异常处理级922、提交级924。

图9B示出了包括耦合到执行引擎单元950的前端单元930的处理器核990,且 执行引擎单元和前端单元两者都耦合到存储器单元970。核990可以是精简指令集计 算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代 核类型。作为又一选项,核990可以是专用核,诸如例如网络或通信核、压缩引擎、 协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。

前端单元930包括耦合到指令缓存单元934的分支预测单元932,该指令缓存单 元耦合到指令转换后备缓冲器(TLB)936,该指令转换后备缓冲器耦合到指令获取 单元938,指令获取单元耦合到解码单元940。解码单元940(或解码器)可解码指 令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出 的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。 解码单元940可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找 表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个 实施例中,核990包括(例如,在解码单元940中或否则在前端单元930内的)用于 存储某些宏指令的微代码的微代码ROM或其他介质。解码单元940耦合到执行引擎 单元950中的重命名/分配单元952。

执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元耦合至引 退单元954和一个或多个调度器单元956的集合。调度器单元956表示任何数目的不 同调度器,包括预留站、中央指令窗等。调度器单元956耦合到物理寄存器组单元 958。每个物理寄存器组单元958表示一个或多个物理寄存器组,其中不同的物理寄 存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩 浮点、矢量整数、矢量浮点、状态(例如,作为要执行的下一指令的地址的指令指针) 等。在一个实施例中,物理寄存器组单元958包括矢量寄存器单元、写掩码寄存器单 元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器、 和通用寄存器。物理寄存器组单元958与引退单元954重叠以示出可以用来实现寄存 器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用 将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退 单元954和物理寄存器组单元958耦合到执行群集960。执行群集960包括一个或多 个执行单元962的集合和一个或多个存储器访问单元964的集合。执行单元962可以 对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、矢量整型、矢量浮点) 执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于 特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一 个执行单元或多个执行单元。调度器单元956、物理寄存器组单元958和执行群集960 被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例 如,标量整型流水线、标量浮点/打包整型/打包浮点/矢量整型/矢量浮点流水线,和/ 或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流 水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集 具有存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况 下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序 发布/执行。

存储器访问单元964的集合耦合到存储器单元970,该存储器单元包括耦合到数 据缓存单元974的数据TLB单元972,其中数据缓存单元耦合到二级(L2)缓存单 元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单 元和存储数据单元,其中的每一个均耦合至存储器单元970中的数据TLB单元972。 指令缓存单元934还耦合到存储器单元970中的二级(L2)缓存单元976。L2缓存 单元976耦合到一个或多个其他级的缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线 900:1)指令获取938执行获取和长度解码级902和904;2)解码单元940执行解码 级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)调度器单元956 执行调度级912;5)物理寄存器组单元958和存储器单元970执行寄存器读取/存储 器读取级914;执行群集960执行执行级916;6)存储器单元970和物理寄存器组单 元958执行写回/存储器写入级918;7)各单元可牵涉到异常处理级922;以及8)引退 单元954和物理寄存器组单元958执行提交级924。

核990可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加 的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福 尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)), 其中包括本文中描述的各指令。在一个实施例中,核990包括支持打包数据指令集合 扩展(例如,AVX1、AVX2)的逻辑,由此允许被许多多媒体应用使用的操作将使 用打包数据来执行。

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合), 并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程 化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑 核)、或其组合(例如,时分获取和解码以及此后诸如用超线程化技术来同步 多线程化)。

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架 构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据缓存 单元934/974以及共享L2缓存单元976,但替代实施例可以具有用于指令和数据两 者的单个内部缓存,诸如例如一级(L1)内部缓存或多个级别的内部缓存。在一些实 施例中,该系统可包括内部缓存和在核和/或处理器外部的外部缓存的组合。或者, 所有缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图10A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻 辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高 带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它 必要的I/O逻辑通信。

图10A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1002 的连接及其二级(L2)缓存的本地子集1004的框图。在一个实施例中,指令解码器1000 支持具有紧缩数据指令集扩展的x86指令集。L1缓存1006允许对进入标量和矢量单 元中的缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单 元1008和矢量单元1010使用分开的寄存器集合(分别为标量寄存器1012和矢量寄存 器1014),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)缓存 1006读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合 或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。

L2缓存的本地子集1004是全局L2缓存的一部分,该全局L2缓存被划分成多 个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的 L2缓存1004的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2缓 存子集1004中,并且可以与其他处理器核访问其自己的本地L2缓存子集并行地被快 速访问。被处理器核写入的数据被存储在其自己的L2缓存子集1004中,并在必要的 情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允 许诸如处理器核、L2缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数 据路径为每个方向1012位宽。

图10B是根据本发明的实施例的图10A中的处理器核的一部分的展开图。图10B 包括L1缓存1004的L1数据缓存1006A部分,以及关于矢量单元1010和矢量寄存 器1014的更多细节。具体地说,矢量单元1010是16宽矢量处理单元(VPU)(见16 宽ALU 1028),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。 该VPU通过混合单元1020支持对寄存器输入的混合、通过数值转换单元1022A-B 支持数值转换、并通过复制单元1024支持对存储器输入的复制。写掩码寄存器1026 允许断言所得的矢量写入。

具有集成存储器控制器和图形器件的处理器

图11是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制 器、以及可能具有集成图形器件的处理器1100的框图。图11的实线框示出了处理器 1100,处理器1100具有单个核心1102A、系统代理1110、一组一个或多个总线控制 器单元1116,而可选附加的虚线框示出了替代的处理器1100,具有多个核心1102A-N、 系统代理单元1110中的一组一个或多个集成存储器控制器单元1114以及专用逻辑 1108。

因此,处理器1100的不同实现可包括:1)CPU,其中专用逻辑1108是集成图 形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102A-N是一个或 多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器, 其中核1102A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协 处理器,其中核1102A-N是多个通用有序核。因此,处理器1100可以是通用处理器、 协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU (通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多 核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1100 可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS 等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。

存储器层次结构包括在各核内的一个或多个级别的缓存、一个或多个共享缓存 单元1106的集合、以及耦合至集成存储器控制器单元1114的集合的外部存储器(未 示出)。该共享缓存单元1106的集合可以包括一个或多个中间级缓存,诸如二级(L2)、 三级(L3)、四级(L4)或其他级别的缓存、末级缓存(LLC)、和/或其组合。尽 管在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享缓存单元1106 的集合以及系统代理单元1110/集成存储器控制器单元1114互连,但替代实施例可使 用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个缓 存单元1106和核1102-A-N之间的一致性(coherency)。

在一些实施例中,核1102A-N中的一个或多个核能够多线程化。系统代理1110 包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单 元(PCU)和显示单元。PCU可以是或包括用于调整核1102A-N和集成图形逻辑1108 的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

核1102A-N在架构指令集方面可以是同构的或异构的;即,这些核1102A-N中 的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅 仅子集或不同的指令集。

示例性计算机架构

图12-15是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、 手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、 嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控 制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设 计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑 的多个系统和电子设备一般都是合适的。

现在参见图12,所示为根据本发明的一个实施例的系统1200的框图。系统1200 可以包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一 个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/ 输出中枢(IOH)1250(其可以在分开的芯片上);GMCH 1290包括存储器和图形 控制器,存储器1240和协处理器1245耦合到该存储器和图形控制器;IOH 1250将 输入/输出(I/O)设备1260耦合到GMCH 1290。或者,存储器和图形控制器中的一 个或两者可以被集成在处理器内(如本文中所描述的),存储器1240和协处理器1245 直接耦合到处理器1210以及控制器中枢1220,控制器中枢1220与IOH 1250处于单 个芯片中。

附加处理器1215的任选性质用虚线表示在图12中。每一处理器1210、1215可 包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。

存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM) 或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(FSB) 之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、 或者类似的连接1295与处理器1210、1215进行通信。

在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC处理 器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。 在一个实施例中,控制器中枢1220可以包括集成图形加速器。

在物理资源1210、1215之间可以存在包括架构、微架构、热、和功耗特征等的 一系列品质度量方面的各种差异。

在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。协处 理器指令可嵌入在这些指令中。处理器1210将这些协处理器指令识别为应当由附连 的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将 这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协 处理器1245接受并执行所接收的协处理器指令。

现在参考图13,所示为根据本发明的一实施例的更具体的第一示例性系统1300 的框图。如图13所示,多处理器系统1300是点对点互连系统,且包括经由点对点互 连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一 个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器1370和1380 分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中, 处理器1370和1380分别是处理器1210和协处理器1245。

处理器1370和1380被示为分别包括集成存储器控制器(IMC)单元1372和 1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376 和1378;类似地,第二处理器1380包括点对点接口1386和1388。处理器1370、1380 可以使用点对点(P-P)接口电路1378、1388经由P-P接口1350来交换信息。如图 13所示,IMC 1372和1382将各处理器耦合至相应的存储器,即存储器1332和存储 器1334,这些存储器可以是本地附连至相应的处理器的主存储器的部分。

处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398 的各个P-P接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由 高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专 用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处 理器、GPGPU、或嵌入式处理器等等。

共享缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外 部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可 将任一处理器或两个处理器的本地缓存信息存储在该共享缓存中。

芯片组1390可经由接口1396耦合至第一总线1316。在一个实施例中,第一总 线1316可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互 连总线之类的总线,但本发明的范围并不受此限制。

如图13所示,各种I/O设备1314可以连同总线桥1318耦合到第一总线1316, 总线桥将第一总线1316耦合至第二总线1320。在一个实施例中,诸如协处理器、高 吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理 器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1315 被耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚计数(LPC) 总线。各种设备可以被耦合至第二总线1320,在一个实施例中这些设备包括例如键 盘/鼠标1322、通信设备1327以及诸如可包括指令/代码和数据1330的盘驱动器或其 它大容量存储设备的存储单元1328。此外,音频I/O 1324可以被耦合至第二总线1320。 注意,其它架构是可能的。例如,代替图13的点对点架构,系统可实现多分支总线 或者其他此类架构。

现在参考图14,所示为根据本发明的实施例的更具体的第二示例性系统1400 的框图。图13和14中的类似元件使用类似附图标记,且在图13中省略了图13的某 些方面以避免混淆图14的其它方面。

图14示出处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”) 1372和1382。因此,CL 1372、1382包括集成存储器控制器单元并包括I/O控制逻辑。 图14示出:不仅存储器1332、1334耦合至CL 1372、1382,I/O设备1414也耦合至 控制逻辑1372、1382。传统I/O设备1415被耦合至芯片组1390。

现在参考图15,所示为根据本发明的一实施例的SoC 1500的框图。图11中的 类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图15 中,互连单元1502耦合至:应用处理器1510,该应用处理器包括一个或多个核202A-N 的集合以及共享缓存单元1106;系统代理单元1110;总线控制器单元1116;集成存 储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、 图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直 接存储器存取(DMA)单元1532;以及用于耦合至一个或多个外部显示器的显示单元 1540。在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处理 器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的 组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该 可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储 元件)、至少一个输入设备以及至少一个输出设备。

可将程序代码(诸如图13中示出的代码1330)应用于输入指令,以执行本文描 述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设 备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制 器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。

程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系 统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描 述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或 解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令 来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执 行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介 质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器 中。

这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品 的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、 光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器 件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储 器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、 电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于 存储电子指令的任何其它类型的介质。

因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令 或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、 处理器和/或系统特征。这些实施例也被称为程序产品。

仿真(包括二进制变换、代码变形等)

在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如, 指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、 变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转 换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理 器外、或者部分在处理器上且部分在处理器外。

图16是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进 制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是 软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合 来实现。图16示出可以使用x86编译器1604来编译利用高级语言1602的程序,以 生成可以由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码 1606。具有至少一个x86指令集核的处理器1616表示任何处理器,这些处理器能通 过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英 特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标 为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代 码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86 编译器1604表示用于生成x86二进制代码1606(例如,目标代码)的编译器,该二 进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器 1616上执行。类似地,图16示出可以使用替代的指令集编译器1608来编译利用高 级语言1602的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例 如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加 利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的 替代指令集二进制代码1610。指令转换器1612被用来将x86二进制代码1606转换 成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大 可能与替代性指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造; 然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转 换器1612通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核 的处理器或其它电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。

针对此处所描述的任一装置所描述的组件、特征、以及细节还可任选 地用于本文中所描述的可由这种装置和/或使用这种装置执行的任一方法 中。此处所描述的处理器中的任何一个都可以被包括在此处所公开的计算 机系统或其他系统中的任何一个中。在某些实施例中,指令可以具有此处 所公开的指令格式的特征或细节,虽然这不是必需的。

在该描述和权利要求中,使用了术语“耦合”和/或“连接”、及其派 生词。这些术语不旨在互为同义词。相反,在具体实施例中,“连接的”用 于指示两个或更多元件彼此直接物理或电接触。“耦合”可表示两个或更 多个元件彼此直接物理和/或电气接触。然而,“耦合的”也可表示两个或 更多个元件并未彼此直接接触,但是仍然彼此协作、彼此作用。例如,返 回目标限制单元可以通过一个或多个中间组件与解码单元耦合。在附图中, 箭头用于示出连接和耦合。

术语“和/或”可能已被使用。如本文中所使用的,术语“和/或”意指一 个或其他或两者(例如,A和/或B意指A或B或者A和B两者)。

在以上描述中,为了提供对实施例的透彻理解阐述了具体的细节。然 而,在没有这些具体细节中的部分的情况下,可实践其他实施例。本发明 的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在其 它实例中,以方框图形式而非以细节地示出了公知的电路、结构、设备和 操作以避免使说明书的理解变得晦涩。在认为适宜之处,附图标记或附图 标记的结尾部分在诸附图当中被重复以指示可选地具有类似特性或相同特 征的对应或类似的要素,除非以其他方式来指定或显而易见。

已描述了各种操作和方法。已经以流程图方式以相对基础的方式对一 些方法进行了描述,但这些操作可选择地被添加至这些方法和/或从这些方 法中移去。另外,尽管流程图示出根据各实施例的操作的特定顺序,但该 特定顺序是示例性的。替换实施例可以以不同方式执行这些操作、组合某 些操作、交错某些操作等。

特定操作可由硬件组件执行,或者可以机器可执行或电路可执行指令 体现,这些操作可用于使得和/或者导致机器、电路、或硬件组件(例如, 处理器、处理器的一部分、电路等)通过执行操作的指令来编程。这些操 作还可任选地由硬件和软件的组合执行。处理器、机器、电路、或硬件可 包括可操作用于执行和/或处理指令且响应于该指令存储结果的专用或特定 电路或者其他逻辑(例如,可能与固件和/或软件组合的硬件)。

某些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读 介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。 机器可读介质可提供指令或指令顺序或者在其上存储了指令或者令顺序, 该指令如果由机器执行和/或在由机器执行时可操作用于使机器执行和/或 导致机器执行本文中所公开的一种或多种操作、方法、或技术。机器可读 介质可存储或以别的方式提供本文中所公开的指令的一个或多个实施例。

在某些实施例中,机器可读介质可包括有形的和/或无形的机器可读存 储介质。例如,有形的和/或无形的机器可读存储介质可包括软盘、光存储 介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器 (ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电 可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM (SRAM)、动态RAM(DRAM)、闪存、相变化存储器、相变化数据存 储材料、非易失性存储器、非易失性数据存储设备、非瞬时存储器、或非 瞬时数据存储设备等。非瞬态机器可读存储介质不由瞬态传播的信号组成。

合适机器的示例包括但不限于,通用处理器、专用处理器、指令处理 装置、数字逻辑电路、集成电路等。合适的机器的其他示例包括其中包括 处理器、指令处理装置、数字逻辑电路或集成电路的计算设备和其他电子 设备。这样的计算设备和电子设备的示例包括但不限于台式机、膝上型计 算机、笔记本电脑、平板计算机、上网本、智能电话、蜂窝电话、服务器、 网络设备(例如,路由器和交换机)、移动网络设备(MID)、媒体播放 器、智能电视、迷你桌上型设备、机顶盒和视频游戏控制器。

例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个 实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实践 中,但是不一定需要这样。类似地,在该描述中,出于流线型化本公开和 辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实 施例、附图、及其描述中。然而,该公开方法不应被解释成反映本发明需 要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要 求反映的,发明性方面在于少于单一公开的实施例的所有特征。因此,所 附权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明 单独的实施例。

示例实施例

以下示例关于进一步的实施例。这些示例中的细节可以在一个或多个 实施例的任何地方被使用。

示例1是包括解码来自过程(RTR返回)指令的返回目标限制性的返 回的解码单元的处理器。处理器还包括与解码单元耦合的返回目标限制单 元,并响应于RTR返回指令,判断是否限制由RTR返回指令作出向对应 于RTR返回指令的返回地址处的指令的控制流程转移的企图。判断基于返 回地址处的指令的类型与RTR返回指令的兼容性,并基于RTR返回指令 的第一返回目标限制性的信息(RTR信息)的与返回地址处的指令的第二 RTR信息的兼容性。处理器还包括与返回目标限制单元和解码单元耦合的 控制流程转移单元,控制流程转移单元响应于RTR返回指令,当返回目标 限制单元确定不限制企图时,将控制流程转移到返回地址处的指令。

示例2包括示例1的处理器,其中,当对应于所述第一RTR信息的第 一值匹配对应于所述第二RTR信息的第二值时,所述返回目标限制单元将 确定不限制所述企图,当所述第一值不匹配所述第二值时,将确定限制所 述企图。

示例3包括示例2的处理器,其中,当所述第一值等于所述第二值时, 所述返回目标限制单元将确定不限制所述企图,当所述第一值不等于所述 第二值时,将确定限制所述企图。

示例4包括示例1的处理器,其中,当所述返回地址处的所述指令的 操作码不是对应于与所述RTR返回指令兼容的类型的全部指令的一组不超 过五个操作码中的一个时,所述返回目标限制单元将确定限制所述企图。 指令将用于标记RTR返回指令的潜在地允许的返回目标。

示例5包括示例1的处理器,其中,所述RTR返回指令具有提供所述 第一RTR信息的立即数,并且其中,所述返回地址处的所述指令具有提供 所述第二RTR信息的立即数。

示例6包括示例1到5中的任何一个的处理器,其中,当所述返回目 标限制单元确定不限制所述企图时,所述处理器将执行所述返回地址处的 所述指令作为空操作。

示例7包括示例1到5中的任何一个的处理器,其中,当所述返回目 标限制单元确定限制所述企图时,所述返回目标限制单元将导致异常、错 误以及中断中的一个。

示例8包括示例1的处理器,其中,所述解码单元将解码将具有与来 自存在于所述RTR返回指令之前的指令集中的过程指令的旧式返回相同的 立即数和操作码的所述RTR返回指令。来自过程指令的旧式返回最初导致 由所述立即数指出的若干个字节从栈弹出。处理器将使用第一RTR信息的 立即数。

示例9包括示例1的处理器,其中,所述解码单元将解码将具有与来 自存在于所述RTR返回指令之前的指令集中的过程指令的旧式返回相同的 立即数和操作码的所述RTR返回指令。处理器可任选地具有其中所述立即 数将对应于所述第一RTR信息的第一模式和所述立即数将被忽略的第二模 式。

示例10是包括接收来自过程(RTR返回)指令的返回目标限制性的返 回的处理器中的方法。响应于所述RTR返回指令,限制由所述RTR返回 指令作出向对应于所述RTR返回指令的返回地址处的指令的控制流程转移 的企图。限制基于返回地址处的指令的类型不与RTR返回指令兼容的判断, 以及由RTR返回指令指出的第一返回目标限制性的信息(RTR信息)不与 由返回地址处的指令指出的第二RTR信息兼容的判断中的至少一项。

示例11包括示例10的方法,其中,所述限制基于所述RTR返回指令 的所述RTR信息不等于所述返回地址处的所述指令的RTR信息的判断。

示例12包括示例10的方法,其中,所述限制基于所述返回地址处的 所述指令的操作码不是对应于与所述RTR返回指令兼容的类型的全部指令 的一组不超过五个操作码中的一个的判断。

示例13包括示例10的方法,其中,接收包括接收具有提供所述第一 RTR信息的立即数的所述RTR返回指令。

示例14是包括接收第一类型的代码的代码接收模块的代码分析系统。 代码分析模块与所述代码接收模块与耦合,以判断来自所述第一类型的所 述代码中的过程(RTR返回)指令的全部返回目标限制性的返回是否只指 出允许用于所述第一类型,但不允许一种或多种不同类型的代码的返回目 标限制性的信息(RTR信息)。

示例15包括示例14的代码分析系统,其中,所述第一类型包括无特 权的代码,所述一种或多种不同类型的代码包括有特权的代码。

示例16包括示例14的代码分析系统,其中,第一类型包括用户级别 应用,一种或多种不同类型的代码包括用户级别库代码、设备驱动程序代 码、系统级别库代码以及操作系统代码。

示例17包括示例14的代码分析系统,其中,所述代码分析模块将判 断所述第一类型的所述代码中的全部RTR返回指令是否只指出第一范围内 的RTR信息的值,其中,所述第一范围将与对应于所述一种或多种不同类 型的代码的一个或多个其他范围互相排斥。

示例18包括示例14到17中的任何一个的代码分析系统,其中,代码 分析模块包括数字分发平台的模块和操作系统模块。

示例19包括示例14到17中的任何一个的代码分析系统,其中,代码 分析模块包括操作系统模块。

示例20是包括接收代码的代码接收模块的代码分析系统。系统还包括 与所述代码接收模块耦合的代码分析模块,所述代码分析模块,对于至少 一对互补的来自过程(RTR返回)和返回目标指令的返回目标限制性的返 回,改变返回目标限制性的信息(RTR信息)。这是在使该对所述互补的 RTR返回和返回目标指令的所述RTR信息保持互补时进行的。

示例21包括示例20的代码分析系统,其中,代码接收模块进一步接 收指出所述代码中的多对互补的RTR返回和返回目标指令的元数据。代码 分析模块将改变每一对互补的RTR返回和返回目标指令的RTR信息,同 时使每一对互补的RTR返回和返回目标指令的RTR信息保持互补。

示例22包括示例20到21中的任何一个的代码分析系统,其中,代码 分析模块包括操作系统模块。

示例23包括示例20到21中的任何一个的代码分析系统,其中,代码 分析模块包括数字分发平台的模块。

示例24是处理指令的系统,该系统包括互连和与该互连耦合的处理 器。该处理器将接收来自过程(RTR返回)指令的返回目标限制性的返回。 处理器,响应于所述RTR返回指令,基于所述返回地址处的所述指令的类 型与所述RTR返回指令不兼容和所述RTR返回指令的第一返回目标限制 性的信息(RTR信息)与所述返回地址处的所述指令不兼容中的一项,确 定限制由所述RTR返回指令作出向对应于所述RTR返回指令的返回地址 处的指令的控制流程转移的企图。该系统还包括与所述互连耦合的动态随 机存取存储器(DRAM)。

示例25包括示例24的系统,其中,处理器将基于RTR返回指令的立 即数的值不等于所述返回地址处的所述指令的立即数的值,确定限制所述 企图。处理器,响应于确定限制企图,可以导致错误和异常中的一个。

示例26是一种包括非瞬态机器可读存储介质的制品。非瞬态机器可读 存储介质存储指令。指令,在由机器执行时,将导致机器执行下列各项操 作:包括检查来自第一类型的代码中的过程(RTR返回)指令的所有返回 目标限制性的返回的返回目标限制性的信息(RTR信息)。还判断第一类 型的代码中的RTR返回指令是否只指出允许用于第一类型的代码但不允许 用于一种或多种不同类型的代码的RTR信息。

示例27包括示例26的制品,其中,指令将导致机器判断第一类型的 代码中的RTR指令是否只指出允许用于第一类型的代码,但不允许用于一 种或多种不同类型的代码的第一范围内的值。

示例28是可操作以执行示例10-13中的任何一个的方法的处理器或其 他设备。

示例29是一种包括用于执行示例10-13中的任一个的方法的装置的处 理器或其他设备。

示例30是包括用于执行示例10-13中的任何一个的方法的模块、单 元、逻辑、电路、装置,或其任何组合的处理器或其他设备。

示例31是包括机器可读取的介质(可任选地是非瞬时的机器可读的存 储介质)的制品,所述存储介质可任选地存储或以别的方式提供指令,所 述指令,在由处理器、计算机系统,或其他机器执行时,可操作,以导致 机器执行示例10-13中的任何一个的方法。

示例32是一种计算机系统或其他电子设备,包括互连;与互连耦合的 处理器;以及从动态随机存取存储器(DRAM)、图形芯片、无线通信芯 片、相变存储器,以及视频摄像机中选择的与互连耦合的至少一个组件, 计算机系统或其他电子设备可操作,以执行示例10-13中的任何一个的方 法。

示例33是可操作以执行如此处所描述的一个或多个操作或任何方法 的处理器或其他设备。

示例34是包括用于执行如此处所描述的一个或多个操作或任何方法 的装置的处理器或其他设备。

示例35是用于执行如此处所描述的指令中的任何一个的处理器或其 他设备。

示例36是包括用于执行如此处所描述的指令中的任何一个的装置的处理器 或其他设备。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号