调节原子存储器操作以防止拒绝服务的攻击的制作方法

上传人:ting****789 文档编号:310044673 上传时间:2022-06-14 格式:DOCX 页数:5 大小:24.80KB
返回 下载 相关 举报
调节原子存储器操作以防止拒绝服务的攻击的制作方法_第1页
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《调节原子存储器操作以防止拒绝服务的攻击的制作方法》由会员分享,可在线阅读,更多相关《调节原子存储器操作以防止拒绝服务的攻击的制作方法(5页珍藏版)》请在金锄头文库上搜索。

1、调节原子存储器操作以防止拒绝服务的攻击的制作方法专利名称:调节原子存储器操作以防止拒绝服务的攻击的制作方法调节原子存储器操作以防止拒绝服务的攻击背景当代处理器可被配置成处理多个活动线程的执行(例如单核或多核处理器上的同时多线程(SMT)模式),或允许多个线程在一个或多个核的逻辑处理器上执行。在这样的实例中,如果一个线程正在诸如总线锁定(bus lock)之类的原子存储器操作的有限循环中运行(例如涉及非写回(WB)存储器类型的原子锁定操作,或当使用WB存储器但操作数地址跨越高速缓存行边界时)并且另一线程需要执行加载或存储操作,则只有执行总线锁定的线程可取得任何向前的进展。即,由第一线程执行的总线

2、锁定会如此接近,以致新的总线锁定正好在前一总线锁定完成之后开始,使得另一线程被阻止执行诸如加载或存储操作之类的存储器操作。因此,这样的原子存储器操作是非常强大的,且能在总线锁定正在进行时防止其它存储器操作(例如记载或存储)进行。这产生了拒绝服务的安全性攻击,其中用户(例如在用户特权级别(例如环3)或当前特权级别(CPL) 3下执行的用户)可写入宏指令的非常小的循环,这会阻止其它用户/程序起作用。除了影响在同一核中运行的线程的操作之外,这种类型的操作/攻击甚至会阻止在同一处理器内的不同核上和/或在该系统内的不同处理器封装上运行的用户/程序的进展。图1是根据本发明的实施例的处理器的框图。图2是根据

3、本发明的一个实施例的方法的流程图。图3是根据本发明的实施例的处理器核的框图。图4是根据本发明的另一实施例的处理器核的框图。图5是根据本发明的实施例的系统的框图。具体实施例方式在多个实施例中,处理器的逻辑可提供对由给定线程执行的原子存储器操作的调节,使得该线程不会不利地影响在处理器中执行的其它线程的性能。在一些实施例中,该逻辑可与处理器的存储器执行单元相关联,且可采取行动以调节或延迟被提供给存储器执行单元的某些操作。这样的操作可包括不同类型的原子存储器操作,包括总线锁定。这样的总线锁定会不利地影响性能,因为实际上处理器和该系统的其它代理的所有其它操作可能需要静默以正确地处理总线锁定操作。为了防止

4、一系列连续的这样的总线锁定表现为拒绝服务攻击,处理器的调节或其它逻辑可采取行动以延迟和/或隔离给定线程的连续原子存储器操作。现在参考图1,其中示出了根据本发明的实施例的处理器的高级框图。如图1所示,处理器100可以是多核处理器,包括多个核110a-110n。应理解,这些核可以是物理处理器,因为它们可包括诸如前端单元、执行单元和后端单元之类的各种组件,如下文将更详细描述那样。此外,在一些实施例中,每个核可包括一个或多个逻辑处理器。这样的逻辑处理器可提供多个线程的并发执行。一般而言,逻辑处理器可包括与给定线程相关联的状态,例如,该状态存储在用于该线程的寄存器文件中。然而,该核的所有其它组件(诸如前

5、端单元、执行单元、后端单元等等)在多个逻辑处理器和在这样的逻辑处理器上执行的线程之间被共享。各个核可经由互连115耦合至非核逻辑120,该非核逻辑120是处理器的核外逻辑,其包括多个组件。非核120可包括共享高速缓存130,该共享高速缓存130可以是最后一级高速缓存。此外,非核可包括集成存储器控制器140、各种接口 150和功率管理单元155。如所见,处理器100可例如经由存储器总线与系统存储器160通信。非核120还可包括锁定打断器125,该锁定打断器可以是用于检测诸如活锁(livelock)或死锁情况之类的锁定事件的逻辑,在锁定事件中,在核上执行的线程被莫名地停止或无法取得向前的进展。一般

6、而言,锁定打断器125可执行多个增加负担的锁定打断行动(这会不利地影响性能)以打断锁定。典型地,锁定打断器响应于检测到活锁或死锁而开始执行锁定打断行动。仍关于图1,接口 150可实现与诸如外围设备、大容量存储等等之类的各种芯片外组件的通信。尽管在图1的实施例中示出了该特定实现,但本发明的范围在这方面不受限制。现在参考图2,示出的是根据本发明的一个实施例的方法的流程图。如图2所示,方法200可用于控制一个或多个代理对原子存储器操作的访问。虽然作为原子存储器操作的示例,图2的讨论有关总线锁定操作,但本发明的范围在这方面不受限制。例如,在其它实施例中,也可调节诸如某些高速缓存锁定之类的其它类型的原子

7、存储器操作。例如,高速缓存锁定是具有WB存储器类型和高速缓存对齐地址的原子操作(致使该原子操作完全适配在单个高速缓存行内),该原子操作会防止另一线程使用MEU。虽然高速缓存锁定的持续时间一般比总线锁定短,但它们仍可用于在单个SMT核内产生拒绝服务攻击。因此,各实施例也可用于调节这样的操作。参考图2,总线锁定调节器或其它这样的逻辑可执行图2的方法以防止线程执行连续总线锁定,且无需提供预定时间用以在总线锁定之间传递。以此方式,可防止处于拒绝服务或其它这样的安全性攻击下的线程不必要地消耗系统资源。如图2中可见,方法200的开始可以是响应于给定线程(即来自第一线程的请求)执行总线锁定(框210)。可发

8、起总线锁定操作的多个操作可不同,且可包括例如隐含地执行原子操作(例如交换指令是一个示例)、处理在转换后备缓冲器(TLB)中未命中并且需要使页面未命中处理器(PMH)执行以执行页面遍历的存储器操作、或针对用于处理各种情况的微代码流的宏指令,包括一些操作系统级的宏指令。可执行各种操作来执行总线锁定。具体而言,在核上执行的线程可导致总线锁定请求从该核的存储器子系统发送至处理器的其它逻辑,诸如非核逻辑。进而,该非核逻辑可向给定处理器内部的所有其它系统代理以及给定处理器外部的诸如其它处理器之类的代理(在多处理器系统示例中)发出停止类型的请求。然后,响应于在其它代理中接收到该停止请求,这些代理将执行各种操

9、作来静默它们的操作。这些操作可包括完成所有未决的操作、排出各个缓冲器、隐退所执行的指令,等等。当在给定代理中已完成所有这样的操作时,该代理可将指示符信号发回至非核逻辑以指示该代理处于静默状态。最终,当所有这样的信号已经被非核逻辑接收时,非核逻辑可进而向第一线程发送就绪信号以指示现在可执行总线锁定。因此,需要大量的操作来实现总线锁定,并且在此状态下会阻止系统的其它代理执行有用的工作。如图2中可见,在总线锁定操作期间,执行方法200的调节器或其它逻辑可确定总线锁定是否正在结束(菱形220)。虽然本发明的范围在此方面不受限制,但在一些实施例中,该确定步骤可基于在总线锁定序列末尾执行的某些操作。在不同

10、实施例中,这些操作可不同。例如,表示总线锁定末尾的操作可涉及存储解锁微指令的隐退(或执行retirement)。如果未检测到该总线锁定末尾序列,则菱形220可自循环。或者,控制进行至框230。在框230,该逻辑可仅允许其它线程执行存储器集群操作。即,可防止刚完成总线锁定执行的第一线程访问存储器执行单元以执行存储器集群操作。以此方式,在线程连续寻求执行总线锁定的情形下,可防止拒绝服务或其它风格的攻击。注意,虽然在框230中防止线程执行存储器集群操作,但在其它应用中,可替代地提供不同的防止机制。例如,在不是防止所有存储器集群操作的一些实现中,可仅防止那种寻求执行总线锁定的操作。在另外的实施例中,防

11、止机制可涉及其它功能,且可对发起线程产生更大的影响。例如,防止机制可挂起发起线程的所有操作,而不是仅挂起其对存储器执行单元的使用。在其它另外的实现中,它甚至可阻止该核刚完成总线锁定的所有线程使用存储器执行单元。以此方式,在总线锁定迅速源自同一核上的不同线程(例如在线程之间来回的锁定)从而导致对系统/平台之余下部分产生拒绝服务攻击的情况下,可防止拒绝服务的情形。控制接下来进行至框240,在框240可启动用于第一线程的定时器。如下文将进一步讨论,在一些实施例中,该定时器可对应于计数器,例如12位递减计数器。因此,该定时器呈现防止窗口,在该防止窗口期间,相应的线程(即刚刚执行总线锁定的线程)被防止进

12、行存储器集群操作。注意,虽然作为分开的框230和240来示出,但在一些实现中,这些框可被组合成原子流。仍参考图2,在菱形250,可确定该定时器是否已经达到预定值。例如,在定时器通过计数器来实现的实现方式中,在递减计数器实施例中,该预定值可对应于零计数。替代地,在递增计数器实施例中,该预定值可对应于该计数器的最大计数。如果该计数值尚未达至IJ,则控制环返回至菱形250。替代地,如果该计数值已达到,则控制传递至框260。在框260,允许给定线程再次执行存储器集群操作。即,该线程可去除防止机制。因此,该线程的存储器集群分派行动可正常地恢复。再进一步,在框260,可将定时器设置回其初始值。尽管在图2的

13、实施例中以该特定实现示出,但本发明的范围在这方面不受限制。因此,一般而言,各实施例可避免需要采取诸如由活锁或死锁检测器执行的激进的锁定打断行为,而是替代地分析操作以识别原子存储器操作的执行并采取适当的手段来防止这样的操作的连续序列。在原子操作是总线锁定的示例中,逻辑可识别哪个逻辑处理器正在执行该总线锁定。然后例如可通过确定该逻辑处理器何时发起完成其总线锁定的序列来检测该总线锁定的结束。响应于该确定结果,可防止该逻辑处理器在预定时间内发起另一总线锁定。例如,当总线锁定序列结束时,可防止逻辑处理器开始另一总线锁定,直至例如12位可编程计数器的计数器值递减至零。之后,可允许该逻辑处理器发出另一总线锁

14、定,并且可将相关联的时间重置回其原始起始值。在一个实施例中,计数器(该计数器可以是可编程寄存器)的最大值可通过微代码来设置和修改。再者,在利用调节器逻辑的检测逻辑检测到由线程接近发出的原子存储器操作的数量之后,调节器逻辑可增大与该线程相关联的计数器的长度,因为操作的此数量可指示由该线程执行的攻击。以此方式,可至少部分地基于由该线程所请求的原子存储器操作的数量来控制针对线程的防止窗口。而且,在一些实施例中,可设置微代码可编程启用/停用指示符来启用/停用用于执行该原子存储器操作调节的调节器逻辑。以此方式,可实现更轻量的机制来防止由线程执行的原子存储器操作的连续序列。相反,利用诸如活锁或死锁打断器之

15、类的常规方式,将会使用更重量的机制。在该常规方式下,当一个线程运行总线锁定的连续流时,一个或多个活锁打断器最终检测到另一线程无法取得任何向前的进展(例如通过隐退更多指令)。然后该活锁打断器开始采取行动。例如,与存储器执行单元(MEU)活锁打断器(LLB)对应的第一活锁打断器可检测该问题并采取一些行动。如果该MEU LIB无法帮助该非总线锁定线程,则可向诸如核隐退检测器(CRD)之类的另一检测器作出请求,以在受困核中触发全线程核武器(all-thread nuke)。该核武器使受困线程隐退一个指令。然后另一线程可重启其总线锁定的流,并且该情形不断重复。但是,这样的操作导致非常糟糕的性能。因此,在

16、各个实施例中,作为对受困和未取得进展的一个线程的检测操作的替代,并且在采取任何有效行动之前花费较长的时间之前,对完成原子存储器操作的线程进行控制以防止连续的原子操作,该防止操作在第一原子操作完成之后至少持续预定时间。以此方式,通过在允许刚刚完成原子操作的线程执行另一原子存储器操作之前等待预定时间段(这可能包括防止该线程在该时间段内访问MEU),由该线程引起的性能下降很小。因此,该防止机制能使其他线程不会一开始就受困。相应地,各实施例提供在完成原子存储器操作的线程能开始新存储器指令之前的可编程时间窗口。即便经历防止操作的该线程也应该不会具有显著的性能影响,因为这样的原子操作无论如何都是低执行活动。以此方式,通过防止恶意代码使用总线锁定(任何用户可利用总线锁定来写入代码)以显著地降低系统性能以及其他用户和/或程序的性能,可实现更安全和强健的处理器。各实施例可在许多不同的系统中实现。例如,实施例可在诸如多核处理器之类的处理器中实现。现在参考图3,其中示出了根据本发明的一个实施例的处理器核的框图。如图3所示,处理器核300可以是多核处理器中的一个核,并且被示为多级流水线化

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号