返回控制转移指令的制作方法

文档序号:18403835发布日期:2019-08-10 00:10阅读:302来源:国知局
返回控制转移指令的制作方法

返回导向编程(ROP)是计算机安全开发技术,其中,攻击者使用调用堆栈的软件控制来执行攻击者选择的机器指令序列。这些指令的群集在现有程序代码中通常以程序员预期或非预期的返回(RET)指令结束。预期或非预期的RET指令将执行转移到堆栈上攻击者选择的返回地址,并允许攻击者通过程序代码来保持执行控制,并将执行引导至指令的下一组所选的序列以实现攻击者的意图。攻击者选择的指令序列的群集被称为小工具。一些小工具可由攻击者在被编译成程序或函数库的函数中发现,另一些小工具仅是解码成小工具的任意字节序列。

通常,所执行的小工具仅包括数个汇编指令,后跟可执行明确定义的操作的RET指令。通过将一组这些小工具链接在一起,以便来自一个小工具的RET指令加载到下一小工具中,以此类推,恶意软件作者能够在未向程序注入任何代码的情况下,执行较长攻击者期望的指令序列。

ROP技术使用诸如堆栈缓冲溢出之类的漏洞来传递包括指向小工具的指针链表的有效载荷,然后重写被用于执行堆栈缓冲溢出的函数的返回地址以指向序列中的第一个小工具。当该函数执行RET指令时,控制转移到第一个小工具而不是函数调用者。该小工具然后可消耗来自堆栈上的有效载荷的一个或多个数据元素。使用该开发技术,恶意软件作者可改变程序的控制流,并引起到程序中的非程序员预期的地址(例如,到指令的中间)的控制转移。

附图说明

图1是根据本发明的实施例的处理器的一部分的框图;

图2是根据本发明的实施例的状态机的框图;

图3是根据本发明的实施例的方法的流程图;

图4是根据本发明的一个实施例的处理器核心的框图;

图5是根据本发明的实施例的多核心处理器的框图;

图6是根据本发明的实施例的包括多个核心的处理器的实施例;

图7是根据本发明的实施例的系统的框图。

具体实施方式

本发明的实施例提供能够确定返回(RET)指令是否正返回到调用(CALL)指令,并且若不是,则采取措施以防止超出返回指令的指令被提交到处理器的架构状态的处理器。以这种方式,程序中至少某些非预期的控制转移可被消除,限制了恶意程序作者可以使用的小工具的数目。更具体地,实施例可提供处理器模式,其中,返回指令可配备状态机以便硬件可强制返回指令仅返回到调用(CALL)指令。该控制流强制可减少程序中恶意小工具的漏洞。

本发明的实施例可被期望在不要求所保护的代码被重新编译的情况下来防止ROP攻击。本发明的实施例可特别地适用于移动的和其他便携式低功率系统,因为用于减轻ROP的仅软件的技术(例如,通过使用功能上等价但更大更复杂的序列来重写二进制信息以移除RET的所有实例)通常导致大得多的二进制信息并增加程序的执行时间,因此不适用于功率效率是主要关注的移动应用。本发明的实施例还可被期望避免使用可能导致误报的CALL/RET计数器、统计、和/或启发式算法。

随着更多的计算机系统被用在互联网、文本、以及多媒体应用中,额外的处理器支持已随时间被引入。在一个实施例中,指令集可以与一个或多个计算机架构相关联,该一个或多个计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出(I/O)。

在实施例中,指令集架构(ISA)可通过一个或多个微架构来实现,该一个或多个微架构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可共享公共指令集的至少一部分。例如,来自加利福尼亚州圣克拉拉的因特尔公司的奔腾4处理器、CoreTM、以及AtomTM处理器,以及实现几乎相同版本的x86指令集(具有已被添加更新版本的某些扩展)但具有不同的内部设计、来自加利福尼亚州森尼韦尔的超微半导体公司的处理器。类似地,其他处理器开发公司(例如,ARM控股有限公司、MIPS、或它们的被许可方或采用者)所设计的处理器可共享公共指令集的至少一部分,但可包括不同的处理器设计。例如,ISA的相同寄存器架构可使用新的或公知的技术在不同的微架构中以不同的方式来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)以及引退寄存器文件)的一个或多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或多个寄存器、寄存器架构、寄存器文件、或软件程序员可寻址的或不可寻址的其他寄存器组。

指令可包括一个或多个指令格式。这类指令格式可指示将指定的各个字段(位的数目、位的位置等)、以及将被执行的操作和该操作将在其上被执行的(一个或多个)操作数。某些指令格式可通过指令模板(或子格式)来进一步间断地定义。例如,给定指令格式的指令模板可被定义为具有指令格式的字段的不同子集和/或被定义为具有被不同地解释的给定字段。在一个实施例中,指令使用指令格式(若被定义,并在该指令格式的指令模板的给定的一个指令模板中)被表达,并指定或指示操作以及操作将在其上操作的操作数。

在实施例中,ISA可包括第一控制转移指令(在本文被称为CALL指令),该第一控制转移指令用于通过使得执行CALL的处理器执行不同于顺序地(例如,以地址顺序)跟随第一程序中的CALL的下一指令的指令,来将控制从第一程序、过程、函数、例程、模块、或其他组代码或指令(通常将被称为程序)转移到第二程序。通常,处理器的执行控制将在处理器执行进行调用的第二程序部分之后,返回到调用程序。为了提供返回到调用程序的执行控制,CALL的执行可包括将下一指令的地址推送到、写入、或存储在调用堆栈或处理器可访问的其他数据结构上。然后,第二控制转移指令(在本文被称为RET指令)可被第二程序用来在第二程序的期望的部分已被执行之后,将控制转移到第一程序中的该地址。

在本发明的实施例中,处理器模式(在本文被称为RET_TO_CALL模式)可被提供,其中,CALL指令的行为以及RET指令的行为被修改。

当不是处于RET_TO_CALL模式时,CALL指令由处理器的执行包括将顺序地跟随CALL的下一指令的地址推送到堆栈上。当处于RET_TO_CALL模式时,CALL指令由处理器的执行包括将CALL指令的地址推送到堆栈上。

当处于RET_TO_CALL模式时,RET指令由处理器的执行包括处理器检查RET指令返回控制的位置是否是有效调用点(例如,包含CALL操作码)。若是,则执行控制被转移到该有效调用点,CALL作为非操作(NOP)指令被执行,以及然后执行控制被转移到顺序地(以地址顺序)跟随CALL的下一指令。若该位置不是有效调用点,则处理器生成控制流违规,因此阻止试图将控制返回到不是紧随有效调用点的指令的小工具的执行。

在实施例中,结合执行RET指令并将控制返回到有效调用点的处理器,基于软件的策略检查可被用于将RET指令匹配到调用点,例如,检查调用点是执行控制从其被转移到通向该特定RET指令的指令序列的特定调用点。

现在参考图1,示出的是根据本发明的实施例的处理器的一部分的框图。如图1所示,处理器的部分100包括诸如顺序或乱序处理器之类的流水线处理器的各个部分。如所看出的,可以是给定ISA的宏指令的输入指令被提供给解码单元110,该解码单元110被配置为将指令解码为,例如,一个或多个较小的指令,例如,微操作(μop)。

如所看出的,解码单元110根据本发明的实施例包括CTI逻辑115。通常,CTI逻辑115可分析每个输入指令并确定指令是否与控制转移相关联。若是,则CTI逻辑115可将某些状态信息与一个或多个μop相关联。该状态指示状态机116的状态,该状态机116通过解码至少某些控制转移指令而被修改。若指令不是与控制转移相关联的,则不同的状态可以与一个或多个μop相关联。

更具体地并且如参考图2在下面被进一步描述的,当输入指令是第二控制转移指令(例如,RET)时,CTI逻辑115中的状态机116的转换可发生,以便从空闲状态转到给定的等待状态。此外,为了反映该等待状态,给定编码可以与从第二控制转移指令解码的一个或多个μop相关联。若下一输入指令是紧随第二控制转移指令的第一控制转移指令(例如,CALL),则状态机116可返回空闲状态并将给定编码与所解码的一个或多个μop相关联。如将被讨论的,若第二控制转移指令(例如,RET)后不是紧随第一控制转移指令(例如,CALL),则CTI逻辑115可在处理器流水线中插入故障或异常(并且状态机可保持在等待状态)。该故障或异常可以是之前定义的故障或异常(例如,#GP)或新定义的故障或异常,并且在任意情况下,在本说明书中可被称为故障。

否则,若状态机116处于空闲状态并且输入指令不与控制转移有关,则空闲状态信息的编码可以与一个或多个μop相关联,以指示状态机116保持在空闲状态中。

因此,如图1所示,编码单元110输出μop流及相关联的状态信息以指示CTI逻辑115中的状态机116的状态。这些μop和状态信息可被提供给执行逻辑120,该执行逻辑120可包括执行μop流所指示的操作的各种类型的单元,包括算术逻辑单元(ALU)、浮点单元等。在实施例中,第一控制转移指令(例如,CALL)在紧随第二控制转移指令(例如,RET)时仅控制状态机200中的状态转换,以及在处理器的执行逻辑中该第一控制转移指令(例如,CALL)作为NOP来执行,并且不引起程序语义中的任何改变。

进而,μop的结果可被提供给引退单元130,引退单元130被配置为确定给定操作是否被成功地执行,并且若是,则将它们引退,否则若不期望的情况作为执行的结果发生,则引发故障或异常。在乱序处理器中,引退单元130还可操作以便将可以以任意顺序被执行的指令重新排序回程序顺序。当指令正确地引退时,它们可被提供给处理器的更远的部分,例如,存储器子系统。

还如图1所示,引退单元130包括CTI故障逻辑135,该CTI故障逻辑135可被配置为确定适当的行为是否关于控制转移指令发生。更具体地,当将被引退的给定第二控制转移指令(例如,RET)后未被适当的第一控制转移指令(例如,CALL)直接跟随时,CTI故障逻辑135可操作以引发故障,如本文描述的。在实施例中,该确定可至少部分地基于所插入的故障以及与离开解码单元110的μop所通信的状态信息。若检测到CTI故障,则故障被传送到故障处理机140,该故障处理机140可根据给定的处理机采取各种措施来解决发生故障的行为。因此,在实施例中,当在控制转移指令之后将引退的下一指令不是适当的控制转移指令时,引退单元130可通过传递故障类异常(例如,一般保护故障)来传递响应于该CTI故障的故障,以便不引退该指令。

仍参考图1,在发生误预测并且指令将根据正确分支被重新执行的情况下,引退单元130可经由反馈路径与解码单元110进行通信,以便因此提供将被采取的适当分支或其他代码流的指示。更进一步,状态机恢复信号可经由该反馈路径被传送,以便CTI逻辑115的状态机116可被放置于适当的状态中以反映程序流中的该改变。换句话说,当误预测路径中出现故障时,故障未由于该误预测而引起,以及相应地状态机恢复信号可使得状态机116从等待状态转回空闲状态或等待状态,并且还指示上一个成功引退的指令,以便解码单元110可解码正确分支的指令。尽管在图1的实施例中在该高层次被示出,应理解的是,本发明的范围在这方面不被限制。

现在参考图2,示出的是根据本发明的实施例的状态机的框图。如图2所示,状态机200可以与图1的CTI状态机116相对应。在处理器的重置之后,状态机200在状态机被放置于其中的IDLE状态210中开始操作。

当RET指令被解码时,状态机进入WAIT_FOR_CALL状态220。若被解码的下一指令不是CALL指令,则状态机200执行使得生成故障的DELIVER_FAULT操作230(并且状态机200可保持在WAIT_FOR_CALL状态220中)。若跟随控制转移指令将被解码的下一指令是CALL指令,则状态机200转换回IDLE状态210,并且CALL指令作为NOP指令被执行。状态机200因此强制下列两部分规则:第一,RET指令的目标处的指令必须是CALL指令;以及第二,若指令确实是CALL,则将CALL视为NOP。若该规则的第一部分被违反,则违反指令(RET指令的目标处的指令)故障且被防止引退。

当状态机200处于WAIT_FOR_CALL状态时发生的中断/异常/陷阱以及VM退出可使得状态机转换到IDLE状态而非DELIVER_FAULT状态(为了便于说明在图2中未示出)。如此,故障被传递,这是由于RET的目标的优先级高于目标指令自身所引起的任意故障(例如,归因于诸如对准检查、规范检查之类的各种情况的#NM、#GP)或由于目标指令是VM退出指令而引起的任意VM退出(例如,退出XGETBV、CPUID等)。该操作确保这些异步事件不引起非预期的异常。由于这些事件与正常的程序操作是异步的,因此攻击者不能实际地强制他们在RET之后被传递,并因此他们不是攻击者绕过ROP安全的有效方式。通过归因于中断/异常/陷阱或VM退出的这样的状态机转换,状态机200的旧状态(例如,WAIT_FOR_CALL)可被保存在寄存器中,以便允许异常处理机在重新开始执行中断程序之前将状态机200放回适当的等待状态。在实施例中,若中断/异常/陷阱导致处理器权限级别的改变,则WAIT_FOR_CALL状态220可被保存,并在返回中断的处理时被恢复。在实施例中,与第一上下文或处理相关联的WAIT_FOR_CALL状态220可通过操作系统调度程序,结合到第二上下文/处理的上下文/处理切换和/或处理器权限级别的其他变化被保存,并结合到第一上下文/处理的返回被恢复。

因此,作为示例,如表1所示的小工具的恶意执行可通过本发明的实施例来防止,作为示例,如表2所示。

表1

0x10:指令;

0x12:指令;

0x15:CALL地址;→地址0x1a被推送到堆栈上并且执行切换到所调用

的程序

0x1a:指令;(非恶意代码的期望入口点)

0x1d:指令;

0x30:指令;

0x35:指令;

0x39:指令;←恶意代码的入口点

(地址0x39经由所开发的堆栈被馈送)

0x3d:指令;

0x40:RET;

表2

0x10:指令;

0x12:指令;

0x15:CALL地址;→地址0x15被推送到堆栈上并且执行切换到所调用的程序

←RET到CALL

0x1a:指令;

0x1d:指令;

0x30:指令;

0x35:指令;

0x39:指令;(到恶意代码的RET被阻止)

0x3d:指令;

0x40:RET;

参考表2作为示例,表3根据本发明的实施例总结了处理器执行RET和CALL指令的行为。在表3中,第一列示出了RET_TO_CALL模式是否启用,第二列示出了是否配备WAIT_FOR_CALL处理器状态元件(例如,如关于状态机200的状态220在上面描述的),第三列示出了处理器执行RET指令的行为,以及第四列示出了处理器执行CALL指令的行为。

表3

现在参考图3,示出的是根据本发明的实施例的方法的流程图。如所示出的,方法300可通过包括如本文描述的CTI状态机的处理器前端硬件和/或逻辑来执行。注意,图3中示出的操作可以与控制转移相关指令的状态机操作有关。对于其他指令,若状态机当前处于空闲状态,则它保持在那里。

方法300通过提取正被处理器执行的处理的下一指令在框体310中开始。在框体312中,确定RET_TO_CALL模式针对当前处理是否启用。若是,则方法300继续到框体320。若否,则方法300继续到框体314,其中,指令根据任意之前已知的方法被执行,并然后回到框体310。

在框体320中,确定处理器是否处于WAIT_FOR_CALL状态。若是,则方法300继续到框体330。若否,则方法300继续到框体322,其中,确定指令是是CALL、RET、还是另一指令。若指令不是CALL或RET,则方法300继续到框体314。若指令是CALL,则方法300继续到框体324,其中,CALL指令的地址被推送到堆栈并且CALL被执行,并然后回到框体310。若指令是RET,则方法300继续到框体326,其中,处理器被放入WAIT_FOR_CALL状态,然后到框体328,其中,RET根据任意之前已知的方法(包括从堆栈弹出地址并将控制转移到该地址)被执行,并然后回到框体310。

在框体330中,确定指令是否是CALL。若是,则方法300在框体332中继续。若否,则方法300在框体340中继续,其中,控制流违规被生成。

在框体332中,CALL作为NOP被执行。在框体334中,WAIT_FOR_CALL状态被解除。

现在参考图4,示出的是根据本方面的一个实施例的处理器核心的框图。如图4所示,处理器核心600可以是多级流水线乱序处理器。核心600可支持一个或多个指令集(例如,具有已被添加更新版本的某些扩展的x86指令集;加利福尼亚州森尼韦尔的MIPS科技的MIPS指令集;加利福尼亚州森尼韦尔的ARM控股的ARM指令集(具有可选的额外扩展,例如,NEON))。应理解的是,核心可支持多线程(执行两个或多个并行的操作或线程组),并且可以以各种方式来这么做,包括分时多线程、同步多线程(其中,单一物理核心针对该物理核心正同步多线程的线程中的每个线程提供逻辑核心)、或其组合(例如,分时提取和解码并然后同步多线程,例如,超线程技术)。

包括核心600的处理器可以是通用处理器,例如,从因特尔公司可获得的CoreTMi3、i5、i7、2Duo以及Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM处理器。替代地,处理器可来自另一公司,例如,来自ARM控股有限公司、MIPS等的设计。处理器可以是专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器可在一个或多个芯片上实现,并且可以是使用任意多种处理技术的一个或多个衬底的一部分和/或可在使用任意多种处理技术的一个或多个衬底上实现,例如,BiCMOS、CMOS、或NMOS。

如图4所示,核心600由于集成稳压器609而可在各种电压和频率操作。如图4所示,核心600包括前端单元610,该前端单元610可被用于提取将被执行的指令,并准备它们以便在处理器中较晚使用。例如,前端单元610可包括提取单元601、指令缓存603、以及指令解码器605。指令解码器605根据本发明的实施例包括CTI逻辑606,以及相关联的CTI状态机以执行如本文描述的CTI操作。在某些实施例中,前端单元610还可包括轨迹缓存,和微代码存储设备以及微操作存储设备。例如,提取单元601可从存储器或指令缓存603提取宏指令,并将它们馈送到指令解码器605以便将它们解码为基元,即,用于由处理器执行的微操作。

耦合在前端单元610和执行单元620之间的是乱序(OOO)引擎615,该OOO引擎615可被用于接收微指令并准备它们以便执行。更具体地,OOO引擎615可包括各种缓冲器,以便对微指令流进行重新排序并分配执行所需的各种资源,以及提供将逻辑寄存器重命名到各个寄存器文件(例如,寄存器文件630和扩展寄存器文件635)中的存储位置上。寄存器文件630可包括用于整数和浮点运算的不同寄存器文件。扩展寄存器文件635可为矢量尺寸单元提供存储设备,例如,每寄存器256或512位。

执行单元620中可存在各种资源,例如,包括各种整数、浮点、以及单指令多数据(SIMD)逻辑单元、以及其他专用硬件。例如,这类执行单元可包括一个或多个算术逻辑单元(ALU)622,以及其他这类执行单元。

来自执行单元的结果可被提供给包括重新排序缓冲器(ROB)的引退单元640。该ROB可包括各种阵列和逻辑以接收与被执行的指令相关联的信息。该信息然后被引退单元640检查以确定指令是否可被有效地引退,以及结果数据是否被提交到处理器的架构状态,或是否发生阻止指令的正确引退的一个或多个异常。当然,引退单元640可处理与引退相关联的其他操作。对于这里的引退操作,引退单元的CTI逻辑645可存储随输入指令接收的CTI状态机状态,并响应于误预测反馈该信息。

如图4所示,收回单元640被耦合于缓存650,在一个实施例中,该缓存650可以是低等级缓存(例如,L1缓存),尽管本发明的范围在这方面不被限制。此外,执行单元620可直接耦合于缓存650。从缓存650,数据通信可使用较高等级缓存、系统存储器等来发生。尽管在图4的实施例中在该高层次被示出,应理解的是,本发明的范围在这方面不被限制。例如,尽管图4的实现方式是关于诸如ISA之类的乱序机器,本发明的范围在这方面不被限制。也就是说,其他实施例可在顺序处理器、精简指令集计算(RISC)处理器(例如,基于ARM的处理器)、或可经由仿真引擎及相关联的逻辑电路来仿真不同ISA的指令和操作的另一类型的ISA的处理器中实现。

现在参考图5,示出的是根据本发明的实施例的多核心处理器的框图。如图5的实施例所示,处理器700包括多个域。特别地,核心域710可包括多个核心7100-710n,图形域720可包括一个或多个图形引擎,并且系统代理域750还可存在。在各个实施例中,系统代理域750可处理功率控制事件和功率管理,以便域710和720的独立的单元(例如,核心和/或图形引擎)可被控制以根据给定单元中发生的活动(或不活动)来在适当的涡轮模式频率独立动态地操作。域710和720中的每项可在不同的电压和/或功率操作,并且此外,域中的独立的单元每个可在独立的频率和电压操作。注意的是,尽管仅示出三个域,应理解本发明的范围在这方面不被限制,并且额外的域可在其他实施例中存在。

通常,每个核心710在除了各个处理单元和额外的处理元件之外还可包括低等级缓存,包括如本文描述的CTI逻辑。进而,各个核心可彼此耦合,并耦合于末级缓存(LLC)7400-740n的多个单元所形成的共享缓存存储器。在各个实施例中,LLC 740可在核心和图形引擎、以及各个媒体处理电路中共享。如所看出的,环形互连730从而将核心耦合在一起,并提供核心、图形域720以及系统代理电路750之间的互连。在一个实施例中,互连730可以是核心域的一部分。然而,在其他实施例中,环形互连可以是其自己的域。

如进一步看出的,系统代理域750可包括显示器控制器752,该显示器控制器752可提供相关联的显示器的控制以及到相关联的显示器的接口。如进一步看出的,系统代理域750可包括功率控制单元755。

如图5进一步所示,处理器700还可包括集成存储器控制器(IMC)770,该IMC 770可提供到系统存储器(例如,动态随机存取存储器(DRAM))的接口。可存在多个接口7800-780n以使能处理器和其他电路之间的互连。例如,在一个实施例中,至少一个直接媒体接口(DMI)接口可被提供,以及一个或多个总线和接口标准(PCIeTM)接口。此外,为了提供其他代理(例如,额外的处理器或其他电路)之间的通信,根据快速路径互连(QPI)协议的一个或多个接口还可被提供。尽管在图5的实施例中在该高层次被示出,理解的是,本发明的范围在这方面不被限制。

参考图6,包括多个核心的处理器的实施例被示出。处理器1100包括任意处理器或处理设备以执行代码,例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)、或其他设备。在一个实施例中,处理器1100包括至少两个核心——核心1101和核心1102,该两个核心可包括非对称核心或对称核心(所示出的实施例)。然而,处理器1100可包括任意数目的处理元件,这些处理元件可以是对称的或非对称的。

在一个实施例中,处理元件指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核心、和/或能够保持处理器的状态(例如,执行状态或架构状态)的任意其他元件。换句话说,在一个实施例中,处理元件指能够独立地与代码(例如,软件线程、操作系统、应用、或其他代码)相关联的任意硬件。物理处理器通常指集成电路,其潜在地包括任意数目的其他处理元件,例如,核心或硬件线程。

核心通常指位于能够维护独立的架构状态的集成电路上的逻辑,其中,每个独立维护的架构状态与至少某些专用执行资源相关联。与核心相比,硬件线程通常指位于能够维护独立的架构状态的集成电路上的任意逻辑,其中,独立维护的架构状态共享到执行资源的访问。如可被看出的,当某些资源被共享并且其他资源专用于架构状态时,硬件线程和核心的术语之间的线重叠。然而通常,核心和硬件线程被操作系统视为独立的逻辑处理器,其中,操作系统能够独立地调度每个逻辑处理器上操作。

如图6所示,物理处理器1100包括两个核心,核心1101和1102。这里,核心1101和1102被视为对称核心,即,具有相同的配置、功能单元、和/或逻辑的核心。在另一实施例中,核心1101包括乱序处理器核心,而核心1102包括顺序处理器核心。然而,核心1101和1102可从任意类型的核心被独立地选择,例如,原生核心、软件管理核心、适用于执行包括如本文描述的CT指令的原生ISA的核心、适用于执行翻译ISA的核心、协同设计的核心、或其他已知核心。还进一步讨论,核心1101中示出的功能单元在下面以进一步的细节被描述,而核心1102中的单元以类似的方式操作。

若所描绘的,核心1101包括两个硬件线程1101a和1101b,该两个硬件线程1101a和1101b还可被称为硬件线程槽1101a和1101b。所以,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1100视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上面提及的,第一线程与架构状态寄存器1101a相关联、第二线程与架构状态寄存器1101b相关联、第三线程可以与架构状态寄存器1102a相关联、以及第四线程可以与架构状态寄存器1102b相关联。这里,架构状态寄存器中的每个架构状态寄存器(1101a、1101b、1102a、以及1102b)可被称为如上面所描述的处理元件、线程槽、或线程单元。如所示出的,架构状态寄存器1101a在架构状态寄存器1101b中被复制,因此,独立的架构状态/上下文能够针对逻辑处理器1101a和逻辑处理器1101b被存储。在核心1101中,其他较小资源(例如,分配器及重命名方框1130中的指令指针和重命名逻辑)还可针对线程1101a和1101b被复制。某些资源,例如,重新排序/引退单元135中的重新排序缓冲器、ILTB 1120、加载/存储缓冲器、以及队列,可通过划分被共享。诸如通用内部寄存器、(一个或多个)页表基础寄存器、低等级数据缓存和数据TLB 1115、(一个或多个)执行单元1140、以及乱序单元1135的各部分之类的其他资源潜在地被完全地共享。

处理器1100通常包括其他资源,这些资源可被完全地共享、通过划分来共享、或由处理元件专用/专用于处理元件。在图6中,具有处理器的说明性的逻辑单元/资源的纯粹示例性的处理器的实施例被示出。注意,处理器可包括或省略任意这些功能单元,以及包括未描绘的任意其他已知的功能单元、逻辑、或固件。如所示出的,核心1101包括简化的、代表性的乱序(OOO)处理器核心。但顺序处理器可在不同的实施例中被利用。OOO核心包括分支目标缓冲器1120以预测将被执行/采取的分支,以及指令翻译缓冲器(I-TLB)1120以存储指令的地址翻译条目。

核心1101还包括耦合于提取单元1120的解码模块1125以解码所提取的要素。在一个实施例中,提取逻辑包括分别与线程槽1101a、1101b相关联的个体定序器。通常,核心1101与第一ISA相关联,该第一IAS定义/指定在处理器1100上可执行的包括CT指令的指令。通常,作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),该部分指令引用/指定将被执行的指令或操作。解码逻辑1125包括电路,该电路从这些指令的操作码对其进行识别,并将所解码的指令传递到流水线中以便如第一ISA所定义的进行处理。例如,在一个实施例中,解码器1125包括被设计为或适用于识别特定指令(例如,事务指令)的逻辑。作为解码器1125的识别的结果,架构或核心1101采取特定的、预定义的动作以执行与适当的指令相关联的任务。重要的是要注意,本文描述的任务、方框、操作、以及方法中的任意项可响应于单一或多个指令被处理;该单一或多个指令中的一些可以是新的或旧的指令。

在一个示例中,分配器及重命名器方框1130包括分配器以预留资源,例如,预留寄存器文件以存储指令处理结果。然而,线程1101a和1101b潜在地能够乱序执行,其中,分配器及重命名器方框1130还预留其他资源,例如,预留重新排序缓冲器以跟踪指令结果。单元1130还可包括寄存器重命名器,以便将程序/指令引用寄存器重命名为处理器1100内部的其他寄存器。重新排序/引退单元1135包括组件(例如,上面提到的重新排序缓冲器、加载缓冲器、以及存储缓冲器)以支持乱序执行,以及被乱序执行的指令的较晚的顺序引退。

在一个实施例中,调度器及(一个或多个)执行单元方框1140包括调度器单元以调度执行单元上的指令/操作。例如,浮点指令在具有可用浮点执行单元的执行单元的端口上被调度。与执行单元相关联的寄存器文件还被包括以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元、以及其他已知执行单元。

较低等级数据缓存及数据翻译缓冲器(D-TLB)1150被耦合于(一个或多个)执行单元1140。数据缓存用于存储最近使用/操作的要素,例如,被潜在地被保持在存储器一致性状态中的数据操作数。D-TLB用于存储最近的虚拟/线性到物理地址翻译。作为具体示例,处理器可包括页表结构以便将物理存储器分成多个虚拟页。

这里,核心1101和1102共享到较高等级或其他缓存1110的访问,该较高等级或其他缓存1110用于缓存最近所提取的要素。注意,较高等级或更远是指缓存等级提升或距离(一个或多个)执行单元更远。在一个实施例中,较高等级缓存1110是末级数据缓存(处理器1100上的存储器层级中的最后缓存),例如,第二或第三等级数据缓存。然而,较高等级缓存1110不被如此限制,这是由于它可以与指令缓存相关联或包括指令缓存。轨迹缓存(一类指令缓存)可被耦合在解码器1125之后以存储最近解码的轨迹。

在所描绘的配置中,处理器1100还包括总线接口模块1105和功率控制器1160,该功率控制器1160可根据本发明的实施例来执行功率共享控制。从历史上看,控制器1170已被包括在处理器1100外部的计算系统中。在该情况下,总线接口1105用于与处理器1100外部的设备进行通信,例如,系统存储器1175,芯片组(通常包括存储器控制器集线器以连接至存储器1175,并包括I/O控制器集线器以连接外围设备)、存储器控制器集线器、北桥(northbridge)、或其他集成电路。并且在该情况下,总线1105可包括任意已知的互连,例如,多点总线、点到点互连、串行互连、并行总线、相干(例如,缓存相干)总线、分层协议架构、差分总线、以及GTL总线。

存储器1175可专用于处理器1100或由系统中的其他设备共享。存储器1175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)、以及其他已知存储设备。注意的是,设备1180可包括耦合于存储器控制器集线器的图形加速器、处理器或卡、耦合于I/O控制器集线器的数据存储设备、无线收发器、闪存设备、音频控制器、网络控制器、或其他已知设备。

然而,注意的是,在所描绘的实施例中,控制器1170被示出为处理器1100的一部分。近来,随着更多逻辑和设备被集成在单一模具(例如,SOC)上,这些设备中的每个设备可被合并在处理器1100上。例如,在一个实施例中,存储器控制器集线器1170位于与处理器1100相同的封装和/或模具上。这里,核心的一部分(核心上的部分)包括用于与诸如存储器1175或图形设备1180之类的其他设备相接口的一个或多个处理器1170。包括用于与这类设备相接口的互连和控制器的配置通常被称为核心上的配置(或非核心配置)。作为示例,总线接口1105包括用于与存储器1175相接口的与存储器控制器的环形互连,以及用于与图形处理器1180相接口的图形控制器。然而,在SOC环境中,甚至更多的设备,例如,网络接口、协处理器、存储器1175、图形处理器1180、以及任意其他已知计算机设备/接口,可被集成在单一模具或集成电路上,以便提供具有高功能性且低功耗的小形状因子。

实施例可在许多不同的系统类型中实现。现在参考图7,示出的是根据本发明的实施例的系统的框图。如图7所示,多处理器系统800是点到点互连系统,并包括经由点到点互连850耦合的第一处理器870和第二处理器880。如图7所示,处理器870和880中的每个处理器可以是多核心处理器,包括第一和第二处理器核心(即,处理器核心874a和874b以及处理器核心884a和884b),尽管处理器中潜在地可存在更多的核心。处理器中的每个处理器可包括基于CTI的逻辑,以便使用包括用户等级和管理者等级指令的CT指令来防卫ROP和其他安全攻击。

仍参考图7,第一处理器870还包括存储器控制器集线器(MCH)872和点到点(P-P)接口876和878。类似地,第二处理器880包括MCH882和P-P接口886和888。如图7所示,MCH的872和882将处理器耦合于相应的存储器,即,存储器832和存储器834,该存储器832和存储器834可以是本地地附接于相应的处理器的系统存储器(例如,DRAM)的部分。第一处理器870和第二处理器880可分别经由P-P互连852和854被耦合于芯片组890。如图7所示,芯片组890包括P-P接口894和898。

此外,芯片组890包括接口892以通过P-P互连839将芯片组890与高性能图形引擎838相耦合。进而,芯片组890可经由接口896被耦合于第一总线816。如图7所示,各个输入/输出(I/O)设备814可被耦合于第一总线816以及总线桥接818,该总线桥接818将第一总线816耦合到第二总线820。在一个实施例中,例如,可被耦合于第二总线820的各种设备包括键盘/鼠标822、通信设备826以及数据存储单元828,例如,可包括代码830的磁盘驱动器或其他大容量存储设备。此外,音频I/O 824可被耦合于第二总线820。实施例可被合并到包括移动设备的其他类型的系统中,该移动设备例如,智能蜂窝电话、平板计算机、上网本、UltrabookTM等。

尽管本发明已针对有限数目的实施例被描述,本领域技术人员将认识到其中的许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这类修改和变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1