当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于高效地管理和处理影子栈的装置和方法制造方法及图纸

技术编号:30425361 阅读:26 留言:0更新日期:2021-10-24 16:57
本申请公开了用于高效地管理和处理影子栈的装置和方法。处理器的一个实施例包括:多个寄存器,用于存储多个影子栈指针(SSP),每个SSP与不同事件优先级相关联;事件处理电路,用于响应于接收到与第一事件优先级等级相关联的第一事件,从多个寄存器中的第一寄存器选择多个SSP中的第一SSP,第一SSP能用于标识第一影子栈的顶部;验证和利用检查电路,用于确定第一SSP是否先前已经被验证,其中如果第一SSP先前还未被验证,则发起原子操作的集合以验证第一SSP并且确认第一SSP不在使用中,原子操作的集合使用锁定操作来锁定数据,直到原子操作的集合完成,并且其中如果第一SSP先前已经被验证,则重新验证第一SSP并且确认第一SSP不在使用中而无需使用锁定操作。使用中而无需使用锁定操作。使用中而无需使用锁定操作。

【技术实现步骤摘要】
用于高效地管理和处理影子栈的装置和方法

技术介绍


[0001]本专利技术的实施例总体上关于计算机处理器领域。更具体地,实施例关于用于高效地管理和处理影子栈的装置和方法。

技术介绍

[0002]面向返回编程(ROP)利用是越来越常见形式的恶意的软件(恶意软件),它可以规避将存储器的位置标记为不可执行的某些防御措施。ROP利用通过将大量现有的可执行代码段(称为小工具)串联在一起来工作,这些代码段中的每一个都以“返回”指令结束。每个ROP小工具通常都很短,并且通常不对应于可执行代码中的现有过程或甚至现有指令边界。攻击者构建恶意栈,包括指向所需的一系列小工具的一系列返回地址。通过使计算机的处理器使用恶意栈代替合法的系统栈执行软件来执行ROP利用。例如,恶意栈可以通过粉碎栈、使用缓冲器溢出利用、枢转到新的栈、或以其他方式破坏系统栈来引入。
[0003]可以通过与普通系统栈(也称为“传统栈”)并行地维护“影子栈”来防止某些ROP利用。影子栈在普通软件无法访问的存储器中维护传统栈的副本,并且可用于确定传统栈是否已经被恶意软件篡改。影子栈可以使用二进制插桩来实现,这对某些用途会带来显著的性能降低。
[0004]其他措施可用于帮助防止ROP利用。例如,可将“金丝雀”值在返回地址附近插入栈中,并且可以监视它们的变化。作为另一示例,“控制传输终止指令”可以被插入到二进制文件中,以专门标识合法的返回目标。然而,此类措施可能需要重新编译或以其他方式修改客户机软件。此外,某些处理器架构可能提供某些软件无法访问的调用栈。例如,某些微控制器可以维护对软件不可访问的调用栈。作为另一示例,某些处理器架构可以将调用栈信息维护在与诸如自动变量之类的其他栈值分开的存储器区域中。
附图说明
[0005]结合以下附图,从以下具体实施方式可获得对本专利技术更好的理解,其中:
[0006]图1A和1B是图示根据本专利技术的实施例的通用向量友好指令格式及其指令模板的框图;
[0007]图2A

图2C是图示根据本专利技术的实施例的示例性VEX指令格式的框图;
[0008]图3是根据本专利技术的一个实施例的寄存器架构的框图;以及
[0009]图4A是图示根据本专利技术的实施例的示例性有序取出、解码、引退流水线以及示例性寄存器重命名的乱序发布/执行流水线两者的框图;
[0010]图4B是图示根据本专利技术的实施例的要包括在处理器中的有序取出、解码、引退核的示例性实施例和示例性寄存器重命名的乱序发布/执行架构核的框图;
[0011]图5A是单个处理器核以及它与管芯上互连网络的连接的框图;
[0012]图5B图示根据本专利技术的实施例的图5A中的处理器核的部分的展开图;
[0013]图6是根据本专利技术的实施例的具有集成存储器控制器和图形器件的单核处理器和多核处理器的框图;
[0014]图7图示根据本专利技术的一个实施例的系统的框图;
[0015]图8图示根据本专利技术的实施例的第二系统的框图;
[0016]图9图示根据本专利技术的实施例的第三系统的框图;
[0017]图10图示根据本专利技术的实施例的芯片上系统(SoC)的框图;
[0018]图11图示根据本专利技术的实施例的、对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图;
[0019]图12图示根据一个实施例的具有影子栈的处理设备;
[0020]图13图示根据一个实施例的影子栈指针管理;
[0021]图14图示基于中断处理SSP的一个实施例;
[0022]图15图示根据一个实施例的与影子栈指针管理相关联的附加细节;
[0023]图16图示其中使用原子操作或非原子操作来选择和验证SSP的实施例;
[0024]图17图示验证/证实操作的一个实施例;
[0025]图18图示根据本专利技术的一个实施例的方法;以及
[0026]图19图示用于在原子和非原子验证与忙碌检查操作之间选择的方法的附加细节。
具体实施方式
[0027]在下面的描述中,出于解释的目的,阐述了众多具体细节以便提供对下文所描述的本专利技术的实施例的透彻理解。然而,对本领域技术人员将显而易见的是,可在没有这些具体细节中的一些细节的情况下实施本专利技术的实施例。在其他实例中,公知的结构和设备以框图形式示出,以避免使本专利技术的实施例的基本原理变得模糊。示例性处理器架构、指令格式和数据类型
[0028]指令集包括一个或多个指令格式。给定指令格式定义各种字段(位的数量、位的位置)以指定将要执行的操作(操作码)以及将对其执行该操作的操作数,等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的位的位置,因为较少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。由此,ISA的每一条指令使用给定的指令格式(并且如果经定义,则按照该指令格式的指令模板中的给定的一个指令模板)来表达,并包括用于指定操作和操作数的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格式包括用于指定该操作码的操作码字段和用于选择操作数(源1/目的地以及源2)的操作数字段;并且该ADD指令在指令流中出现将使得在操作数字段中具有选择特定操作数的特定的内容。
[0029]本文中所描述的(多条)指令的实施例可被具体化为不同格式。另外,下文详细描述示例性系统、架构和流水线。(多条)指令的实施例可在此类系统、架构和流水线上执行,但是不限于详述的那些系统、架构和流水线。
[0030]通用向量友好指令格式
[0031]向量友好指令格式是适于向量指令(例如,存在专用于向量操作的特定字段)的指
令格式。尽管描述了其中通过向量友好指令格式支持向量和标量操作两者的实施例,但是替代实施例仅使用通过向量友好指令格式的向量操作。
[0032]图1A

图1B是图示根据本专利技术的实施例的通用向量友好指令格式及其指令模板的框图。图1A是图示根据本专利技术的实施例的通用向量友好指令格式及其A类指令模板的框图;而图1B是图示根据本专利技术的实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式100定义A类和B类指令模板,这两者都包括无存储器访问105的指令模板和存储器访问120的指令模板。在向量友好指令格式的上下文中的术语“通用”是指不束缚于任何特定指令集的指令格式。
[0033]尽管将描述其中向量友好指令格式支持以下情况的本专利技术的实施例:64字节向量操作数长度(或尺寸)与32位(4字节)或64位(8字节)数据元素宽度(或尺寸)(并且由此,64字节向量由16个双字尺寸的元素组成,或者替代地由8个四字尺寸的元素组成);64字节向量操作数长度(或尺寸)与16位(2字节)或8位(1字节)数据元素宽度(或尺寸);32字节本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种处理器,包括:多个寄存器,用于存储多个影子栈指针SSP,每个SSP与不同事件优先级相关联;事件处理电路,用于响应于接收到与第一事件优先级等级相关联的第一事件,从所述多个寄存器中的第一寄存器选择所述多个SSP中的第一SSP,所述第一SSP能用于标识第一影子栈的顶部;验证和利用检查电路,用于确定所述第一SSP是否先前已经被验证,其中如果所述第一SSP先前还未被验证,则发起原子操作的集合以验证所述第一SSP并且确认所述第一SSP不在使用中,所述原子操作的集合使用锁定操作来锁定数据,直到所述原子操作的集合完成,以及其中如果所述第一SSP先前已经被验证,则重新验证所述第一SSP并且确认所述第一SSP不在使用中而无需使用所述锁定操作。2.如权利要求1所述的处理器,其中,所述多个SSP包括多个管理程序SSP,所述多个管理程序SSP包括所述第一SSP,所述多个管理程序SSP用于指向与管理程序特权等级相关联的对应多个管理程序影子栈。3.如权利要求2所述的处理器,其中,所述多个SSP进一步包括至少一个用户级SSP,所述至少一个用户级SSP用于指向与用户特权等级相关联的用户级影子栈。4.如权利要求1至3中任一项所述的处理器,其中,所述第一事件包括与所述第一优先级等级相关联的第一中断或第一异常。5.如权利要求4所述的处理器,其中,所述多个SSP用于与对应多个事件优先级等级相关联。6.如权利要求1至5中任一项所述的处理器,其中,确认所述第一SSP不在使用中包括:检查与所述第一SSP相关联的忙碌位的值。7.如权利要求6所述的处理器,其中,验证和重新验证所述第一SSP包括:将所述第一SSP与存储在所述第一影子栈的顶部的第一令牌值进行比较。8.如权利要求7所述的处理器,进一步包括:执行电路,用于使用与所述第一影子栈相关联的第一数据栈来执行一条或多条指令,所述第一影子栈处于与所述第一数据栈相关联的第一管理程序特权等级。9.如权利要求8所述的处理器,其中,所述事件处理电路以及所述验证和利用检查电路包括所述处理器的指令执行流水线的部分,所述验证和利用检查电路包括所述指令执行流水线的第一部分,所述第一部分用于执行与SSP验证和利用检查相关联的指令的第一集合,并且所述事件处理电路包括所述指令执行流水线的第二部分,所述第二部分用于执行与事件处理相关联的指令的第二集合。10.一种方法,包括:将多个影子栈指针SSP存储在对应多个寄存器中,每个SSP与不同事件优先级相关联;响应于接收到与第一事件优先级等级相关联的第一事件,从所述多个寄存器中的第一寄存器选择所述多个SSP中的第一SSP,所述第一SSP能用于标识第一影子栈的顶部;确定所述第一SSP是否先前已经被验证,其中如果所述第一SSP先前还未被验证,则发起原子操作的集合以验证所述第一SSP并且确认所述第一SSP不在使用中,所述原子操作的集合使用锁定操作来锁定数据,直到所述
原子操作的集合完成,以及其中如果所述第一SSP先前已经被验证,则重新验证所述第一SSP并且确认所述第一SSP不在使用中而无需使用所述锁定操作。11.如权利要求10所述的方法,其中,所述多个SSP包括多个管理程序SSP,所述多个管理程序S...

【专利技术属性】
技术研发人员:V
申请(专利权)人:英特尔公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1