[发明专利]一种免受Spectre攻击的高性能推测执行算法有效
| 申请号: | 201810144875.7 | 申请日: | 2018-02-12 |
| 公开(公告)号: | CN108427576B | 公开(公告)日: | 2022-04-01 |
| 发明(设计)人: | 费晓龙 | 申请(专利权)人: | 华夏芯(北京)通用处理器技术有限公司 |
| 主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F21/55 |
| 代理公司: | 北京科家知识产权代理事务所(普通合伙) 11427 | 代理人: | 陈娟 |
| 地址: | 100176 北京市大兴区北京经济技术开*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 免受 spectre 攻击 性能 推测 执行 算法 | ||
1.一种免受Spectre攻击的高性能推测执行算法,其特征在于:该免受Spectre攻击的高性能推测执行算法的具体步骤如下:
S1:译码、派遣阶段:
通过分支预测之后的分支指令会被标记是否被预测执行,这个状态会被传递到派遣单元,Recorder结构会记录下来最近被预测执行的一笔分支指令,并把自身状态设置为busy,如果这笔最近被预测的分支指令被提交,那么recorder会切换到idle的状态,表明没有预测的分支指令在乱序执行过程中,通过这一结构,所有到达派遣单元的指令都会知道自己是否处在推测执行的状态下,从而为进一步的攻击特征提取提供最初的选定范围;
S2:重命名阶段:
从派遣阶段出来以后,所有加载指令都会被标识是否处于推测执行的状态中,以及到底依赖于最近的哪一笔分支指令,这两个信息会在目标寄存器更新寄存器别名表的同时,顺便被记录在别名表里,此外如果当前指令的源寄存器在访问寄存器别名表时,发现依赖于早前的一笔推测执行的加载指令时,会把这个推测状态同样记录在自己目的寄存器在寄存器别名表对应的表项里,这样就完成了推测执行状态和依赖分支指令的传递过程;
S3:访存请求发送阶段:
从重命名阶段出来以后每条加载指令会携带是否为推测执行的间址访存指令的指示位以及依赖的分支指令,这时候考虑到设计的复杂程度和访存的保守程度,分为几种不同做法:
(1)只要当前加载指令为推测执行的间址访存指令,把他设置为in-order执行,即当提交指针等于当前指令ID的时候才可以被发射,这就保证了之前没有任何speculation的成分;
(2)只要当前加载指令为推测执行的间址访存指令,把他依赖的分支指令以ID的形式存在发射Queue中,monitor提交指针,当提交指针等于当前保存的分支指令ID的时候才可以被发射,这就保证了之前依赖的分支指令已经被执行而且预测结果也被得到认证,如果分支预测错误,发生flush,清空当前的加载指令,否则可以被发射出去;
(3)只要当前加载指令为推测执行的间址访存指令,把他依赖的分支指令ID随着加载指令本身一同被发射到数据缓存中,如果返回命中,正常返回执行结果和状态,否则进行特殊处理,这就使得访存命中时候的性能不受任何损失,其深层次原理在于,Spectre攻击的最后需要侧信道攻击,侧信道攻击需要把目标地址从cache中先清除,这样才能在重加载的时候通过判断延迟来决定目标地址是否已经在缓存中,因此攻击过程中目标地址的访问一定不会是命中状态,所以只关心带有危险特征访存序列在不命中情况下的隔离问题;
S4:下级缓存请求发送阶段:
发生不命中的推测执行的间址访存指令会被压到不命中的FIFO结构中,因此可以压制此类对下级缓存的访问请求,与此同时从访存请求发送阶段传送过来的分支指令ID也被存在于FIFO中,用来监测提交指针,当这条所依赖的分支指令被提交时,此条间址访存指令会采取动作,或是因分支预测错误被清除,或是继续向下级缓存发送请求。
2.根据权利要求1所述的一种免受Spectre攻击的高性能推测执行算法,其特征在于:所述步骤S4中此条间址可采取直接把间址访存请求标成in-order的方式来简化设计。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华夏芯(北京)通用处理器技术有限公司,未经华夏芯(北京)通用处理器技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810144875.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:全流水结构SHA-2消息扩展优化方法
- 下一篇:一种通信方法、装置及系统





