本发明专利技术涉及一种微架构,包括:处理器,以投机执行方式执行访存指令;与该处理器对应设置的高速缓存,采用组相联模式,包括多个组,每个组包含多个缓存行,以及与该缓存行一一对应的标记项,该标记项包括第一标记项和第二标记项,该第一标记项用于保存该缓存行的缓存内容的原有的属性参数,该属性参数包括该缓存行的地址标记、脏数据标记和有效性标记;该第二标记项用于保存该缓存内容的瞬时/持续状态标记。
A micro architecture
【技术实现步骤摘要】
一种微架构
本专利技术涉及计算机体系结构和信息安全领域,特别涉及一种可以主动切断处理器瞬态漏洞侧信道攻击的微架构。
技术介绍
投机执行是现代处理器普遍使用的,用于提升程序性能的有效机制。所谓投机执行(SpeculativeExecution),就是处理器根据现有信息,提前执行一些未来可能会执行的指令。如果这种提前是错误的,处理器会抛弃投机执行产生的计算结果,并回退执行期间造成的副作用。然而,随着2018年“熔断”(Meltdown)和“幽灵”(Spectre)漏洞的披露,投机执行实现机制中隐藏的巨大安全隐患逐渐受到各领域开发者的广泛关注。Meltdown由GoogleProjectZero团队发现。它利用了处理器乱序执行时对访存权限检查延迟,以及对高速缓存(cache)中异常现场恢复不彻底的缺陷,绕过存储管理部件提供的数据隔离机制,偷取内核数据。Spectre由瑞士格拉茨工业大学MoritzLipp等学者发现。攻击者可以通过操控处理器分支预测器,使被攻击程序投机执行访存越界的指令,同时利用处理器在分支预测错误后现场恢复不彻底的缺陷,绕过各种边界检查,偷取进程空间内各种私密数据。从漏洞的基本原理上看,Meltdown和Spectre都是处理器在投机执行失败时,对各种微架构(Microarchitecture,处理器用于实现其功能的底层结构)部件恢复不彻底造成的。而问题的根源源于处理器设计者普遍认为:微架构是程序不可见的。然而随着“侧信道”(SideChannel)攻击方法的流行,各种微架构信息逐渐都可被攻击者探测、逆向,所以投机失败造成的信息泄漏逐渐变得严重。这种利用处理器投机执行漏洞,并结合各种侧信道探测方法发动的攻击,可被称为瞬态攻击(TransientAttack)。Meltdown和Spectre爆出后,处理器厂商和内核开发者都迅速发布了缓解措施。Intel发布微码补丁,直接关闭了各种投机优化策略;LinuxKernel社区在4.15版本上添加了内核页表隔离机制(KPTI)。然而从性能和安全性的角度来说,这些补丁都达不到开发者的实际预期。针对这一现状,学术界提出了一系列更加有效的防御机制。以下是两类代表性技术的简要介绍和评价。俄亥俄州立大学YinqianZhang团队首先提出了“延迟投机前递”技术。该技术通过修改处理器指令重排序队列(ReOrderBuffer,后文简称ROB)及读写指令队列(Load/StoreQueue,后文简称LSQ)部件,判断访存读(load)指令之前是否有未解出的分支,或是其它可造成异常的指令,以决定当前是否将load指令取到的结果前递给后续的指令,从而避免Meltdown和Spectre中投机执行结果被攻击者后续的指令利用。类似的方法还有堪萨斯大学JacobFustos提出的SpectreGuard,以及瑞典乌普萨拉大学ChristosSakalis等人提出的基于值预测的延迟提交方法。投机延迟机制对各种投机类型的侧信道攻击都有较好的防御效果。另外,相比于Intel给出的直接关闭投机的方案,其性能损失更小。然而,由于对load前递点的判断能力有限,要保证有效的安全,load指令还是会受到过于保守的推迟,从而对整个程序性能造成巨大影响,所以这种方法目前还是难以被开发者接受。伊利诺伊大学香槟分校MengjiaYan团队提出了“投机隔离(不可见)”技术。该技术的核心思想是在处理器核内设置一个投机缓冲区(SpeculativeBuffer,后文简称SB),用于保存该核心执行的投机load指令取到的缓存行(cacheline),执行投机load指令时,不会对正常高速缓存产生任何影响。当投机失败时,SB内的缓存行会随着load指令一起被消除。当投机load指令成功时,就再次从内存中load相应的缓存行,并和SB中的缓存行进行比较,如果相同,证明SB中的缓存行并没有违反高速缓存的一致性协议,后续指令都可以生效,否则消除后续所有指令。相比于投机延迟,投机隔离对处理器的修改更少,电路更为简单,且开销更小。但是由于要保证多核高速缓存的一致性,投机成功时还是需要付出较大的代价用于一致性检查,所以该方法依然没有被普遍接受。
技术实现思路
本专利技术提出一种微架构,包括:处理器,以投机执行方式执行程序指令;与该处理器对应设置的高速缓存,采用组相联模式,包括多个组,每个组包含多个缓存行,以及与该缓存行一一对应的标记项,该标记项包括第一标记项和第二标记项,该第一标记项用于保存该缓存行的缓存内容的原有的属性参数,该属性参数包括该缓存行的地址标记、脏数据标记和有效性标记;该第二标记项用于保存该缓存内容的瞬时/持续状态标记。本专利技术所述的微架构,其中当缓存行的缓存数据为处理器以投机指令装载的数据,且该投机指令处于未提交状态时,以该缓存数据为瞬时性数据,以保存瞬时性数据的缓存行为瞬时单元;当缓存行的内容为处理器以非投机指令或已提交投机指令装载的数据时,以该缓存数据为持续性数据,以保存持续性数据的缓存行为持续单元。本专利技术所述的微架构,其中该高速缓存还包括:瞬时/持续单元数量上限记录模块,用于分别记录该高速缓存每组中瞬时单元的数量上限Ntransient和持续单元的数量上限Npersistent,其中Npersistent+Ntransient=Nassociativity,Nassociativity为该高速缓存每组中缓存行数量。缓存行替换控制模块,用于选择该高速缓存的某组中瞬时单元或持续单元的缓存行进行替换;当该高速缓存某组中的瞬时单元数量达到Ntransient,且新增瞬时单元时,根据伪LRU策略,选取该组中某一瞬时单元进行替换;当该高速缓存某组中的持续单元数量到达Npersistent且新增持续单元时,根据伪LRU策略,选取该组中某一持续单元进行替换。处理器投机访存指令提交处理模块,用于在投机访存指令提交后,若投机失败,向该高速缓存发送投机失败处理请求,若投机成功,则向该高速缓存发送投机成功处理请求。高速缓存控制模块,包括:访存请求控制模块,用于接收并处理初级访存请求;其中,若该初级访存请求命中,则返回请求数据;反之,则向下级存储结构发出次级访存请求,获取该初级请求要访问的数据,当该下级存储结构返回该请求数据后,判断该初级访存请求的读/写类型;若该初级访存请求为读请求,则将该请求数据装入对应高速缓存组的任一无效的瞬时单元,若没有无效的瞬时单元,则调用该缓存行替换控制模块,依据替换策略选取该高速缓存组内某一瞬时单元进行替换,若该初级访存请求为写请求,则将该请求数据装入对应高速缓存组的任一无效的持续单元,若没有无效的持续单元,则调用该高速缓存行替换控制模块,依据替换策略选取该高速缓存组内某一持续单元进行替换。高速缓存冲突性缺失计数模块,用于记录该高速缓存中瞬时单元和持续单元发生冲突性缺失的次数。瞬时单元/持续单元动态调整模块,用于根据该高速缓存中瞬时单元和持续单元发生冲突性缺失的次数,并根据预设的阈值,调整Ntransient和Npersistent。其中,该高速缓存控制模块还包括本文档来自技高网...
【技术保护点】
1.一种微架构,其特征在于,包括:/n处理器,以投机执行方式执行访存指令;/n与该处理器对应设置的高速缓存,采用组相联模式,包括多个组,每个组包含多个缓存行,以及与该缓存行一一对应的标记项,该标记项包括第一标记项和第二标记项,该第一标记项用于保存该缓存行的缓存内容的原有的属性参数,该属性参数包括该缓存行的地址标记、脏数据标记和有效性标记;该第二标记项用于保存该缓存内容的瞬时/持续状态标记。/n
【技术特征摘要】
1.一种微架构,其特征在于,包括:
处理器,以投机执行方式执行访存指令;
与该处理器对应设置的高速缓存,采用组相联模式,包括多个组,每个组包含多个缓存行,以及与该缓存行一一对应的标记项,该标记项包括第一标记项和第二标记项,该第一标记项用于保存该缓存行的缓存内容的原有的属性参数,该属性参数包括该缓存行的地址标记、脏数据标记和有效性标记;该第二标记项用于保存该缓存内容的瞬时/持续状态标记。
2.如权利要求1所述的微架构,其特征在于,当缓存行的缓存数据为处理器以投机指令装载的数据,且该投机指令处于未提交状态时,以该缓存数据为瞬时性数据,以保存瞬时性数据的缓存行为瞬时单元;当缓存行的内容为处理器以非投机指令或已提交投机指令装载的数据时,以该缓存数据为持续性数据,以保存持续性数据的缓存行为持续单元。
3.如权利要求2所述的微架构,其特征在于,该高速缓存还包括:瞬时/持续单元数量上限记录模块,用于分别记录该高速缓存每组中瞬时单元的数量上限Ntransient和持续单元的数量上限Npersistent,其中Npersistent+Ntransient=Nassociativity,Nassociativity为该高速缓存每组中缓存行数量。
4.如权利要求3所述的微架构,其特征在于,该高速缓存还包括:缓存行替换控制模块,用于选择该高速缓存的某组中瞬时单元或持续单元的缓存行进行替换。
其中,当该高速缓存某组中的瞬时单元数量达到Ntransient,且新增瞬时单元时,根据伪LRU策略,选取该组中某一瞬时单元进行替换;当该高速缓存某组中的持续单元数量到达Npersistent且新增持续单元时,根据伪LRU策略,选取该组中某一持续单元进行替换。
5.如权利要求3或4所述的微架构,其特征在于,还包括:处理器投机访存指令提交处理模块,用于在投机访存指令提交后,若投机失败,向该高速缓存发送投机失败处理请求,若投机成功,则向该高速缓存发送投机成功处理请求。
...
【专利技术属性】
技术研发人员:武成岗,王喆,唐博文,贾力陈,谢梦瑶,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。