CN113742085B - 一种基于分支过滤的执行端口时间信道安全防护系统及方法 - Google Patents

一种基于分支过滤的执行端口时间信道安全防护系统及方法 Download PDF

Info

Publication number
CN113742085B
CN113742085B CN202111088234.2A CN202111088234A CN113742085B CN 113742085 B CN113742085 B CN 113742085B CN 202111088234 A CN202111088234 A CN 202111088234A CN 113742085 B CN113742085 B CN 113742085B
Authority
CN
China
Prior art keywords
branch
port
policy
branch instruction
priority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111088234.2A
Other languages
English (en)
Other versions
CN113742085A (zh
Inventor
岳晓萌
杨秋松
李明树
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Advanced Research Institute of CAS
Original Assignee
Shanghai Advanced Research Institute of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Advanced Research Institute of CAS filed Critical Shanghai Advanced Research Institute of CAS
Priority to CN202111088234.2A priority Critical patent/CN113742085B/zh
Publication of CN113742085A publication Critical patent/CN113742085A/zh
Application granted granted Critical
Publication of CN113742085B publication Critical patent/CN113742085B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种基于分支过滤的执行端口时间信道安全防护系统,其包括调度器选择模块内的分支过滤器和策略修改器;分支过滤器进行分支指令的检测和分支过滤,以生成策略使能向量和优先级向量;策略修改器生成策略类型,并传递和整合优先级向量和策略使能信号,得到策略端口使能向量;分配模块在收到端口分割策略的策略类型和策略端口使能向量时,将算法改为端口分割算法;所述调度器选择模块在接收到端口分时策略、策略端口使能向量以及优先级向量时,将算法改变为基于优先级向量的算法。本发明通过分支过滤器和策略修改器对分配模块和调度器选择模块的算法的调整,实现了针对SMT环境下组合分支诱导和执行端口冲突的时间信道攻击的防护。

Description

一种基于分支过滤的执行端口时间信道安全防护系统及方法
技术领域
本发明属于系统安全技术领域,具体涉及一种基于分支过滤的执行端口时间信道安全防护系统及方法。
背景技术
随着计算机技术的发展和数据处理需求的增大,处理器厂商一直致力于提升处理器的并行处理能力。同时多线程(simultaneous multi-threading,SMT)技术是实现线程级并行的技术之一,其通过增加少量硬件资源,把1个物理核映射成多个逻辑核,同时运行的线程可共享处理器的资源。因为线程执行总有空闲或者等待的时间,SMT环境下当1个线程进入空闲或等待,另外的线程可以继续执行,从而更加合理的使用处理器资源,进而达到比单线程超标量处理器更好的指令吞吐量和资源利用率。
在SMT环境下,处理器执行资源被2个线程共享,2个线程间共享一样的多个执行端口及执行端口内的执行单元,一个执行端口下会有多个执行单元,所有的执行端口都被2个线程共享,2个线程共享的执行端口资源会产生竞争,这种竞争可以被攻击者检测和利用。
SMT环境下攻击者线程采用持续在处理器的同一个执行端口下执行指令来构建同受害者指令冲突的场景,以形成可传递的时间信道,从而泄露受害者线程的执行信息。此类攻击的典型案例为SMoTherSpectre攻击(参见文献【Bhattacharyya A,Sandulescu A,Neugschwandtner M,et al.SMoTherSpectre:Exploiting speculative executionthrough port contention[C]//Proc of the 2019ACM SIGSAC Conf on Computer andCommunications Security.New York:ACM,2019:785–800】)。为了使得受害者线程能够按照攻击者线程要求的执行端口(即攻击者线程的指令执行时所在的执行端口)执行相应的指令操作,SMoTherSpectre攻击中的攻击者线程在冲突构建阶段可以对受害者线程进行分支诱导,分支诱导成功,则受害者线程会按照攻击者线程要求的端口执行相应的指令操作,加强冲突构建的成功率,具体参见上述文献。攻击者线程通过训练处理器分支预测单元的分支目标缓存(branch target buffer,BTB)结构来诱导受害者投机执行攻击者线程提前准备好的程序片段,当受害者程序被分支诱导后会进入程序片段中,该程序片段会通过私密信息的判断来执行不同的两个执行端口的指令,其中一个端口和攻击者线程执行的执行端口一致,另一个和攻击者线程执行的端口不一致,攻击者线程通过判断端口冲突时间即可以获取受害者线程的私密信道。
组合分支诱导和端口冲突的时间信道攻击场景的具体工作原理见图1。受害者的BTI Gadget的程序组件和攻击者的Poison BTB的程序组件的作用是构建分支诱导场景。受害者通过BTI Gadget的程序组件用于将秘密数据加载到内存或寄存器(称为SMoTherSpectre目标)中;具体来说,BTI Gadget的程序组件将秘密存储到寄存器rdi中,一个指向rax的指针,最后跳到rax指向的位置。攻击者通过Poison BTB的程序组件来训练处理器分支预测单元的分支目标缓存结构,进而来诱导受害者投机执行SMoTher Gadget的程序组件,当受害者程序被分支诱导后会进入SMoTher Gadget的程序组件中,该SMoTherGadget的程序组件通过分支跳转的形式构建了2组冲突指令,且其分支指令依赖于寄存器rdi(即比较寄存器rdi和0),在POC示例中,受害者线程的运行序列使用了popcnt指令(在执行端口1上调度)和ror指令(在执行端口6上调度)作为不同的跳转分支,同时攻击者线程的Time SMoTher Gadget的程序组件中使用了大量的ror指令来定时统计,2个线程同时执行ror指令在Intel Skylake微架构中会造成执行端口6的冲突,从而达到构建冲突的目的。
通过分支诱导组合执行端口冲突进而构造时间信道攻击的主要特点在于攻击者线程分支诱导受害者线程投机进行某端口冲突指令执行后会伴随处理器的分支刷新行为,该分支刷新虽然在投机执行的窗口后,不会阻止端口冲突指令的执行,但是其可以作为新的防护手段研究方向加以利用。
如图2所示,现有的SMT环境下的多端口调度微架构主要包括分配模块(Allocation Module)10、与分配模块10连接的调度器选择模块(Scheduler SelectionModule)20、以及设于调度器20内部的年龄矩阵、依赖矩阵和选择模块21。其中,分配模块10主要负责对重命名之后的微操作进行乱序执行资源的分配,微操作由指令译码得到,其需要在乱序执行资源中进行运算或处理,乱序执行资源包括端口30(即执行端口)、执行单元40、内存排序缓冲等组件;调度器20主要负责对具有年龄信息(来自于年龄矩阵)和就绪信息(来自于依赖矩阵)的待选择微操作进行端口30和执行单元40的选择,进而可以将其发射出去。
目前针对执行端口时间信道的防护研究主要通过在时间信道传递阶段增加噪声或者直接关闭SMT技术的方式,其中时间信道传递阶段具体是指端口冲突后检测到时间不同进而采集到这个信息的阶段。在时间信道传递阶段增加噪声的主要方法是修改度量时间的指令(如RDTSC和RDTSCP)的功能,让其返回值随机,使得攻击者采集运行时间的信息不准确,进而达到防护目的;直接关闭SMT技术的方式则只需要在处理器上关闭该特性,关闭SMT技术后执行端口不再由两个线程共享,则不会有安全问题。虽然目前已有的防护方法在防护有效性上可以防护此类攻击,但是无论是使用硬件隔离、时间隔离和增加全局时间噪声,已有的防护方法均有较大程度的不足,例如会损失(或部分损失)SMT技术的收益(如关闭/动态关闭SMT或分支预测器资源隔离)或者对功能完备性有破坏(如修改度量时间指令)。
因此,需要一种能够最大化保留SMT技术特点的微架构级防护方法来克服现有技术的缺陷。
发明内容
本发明的目的在于提供一种基于分支过滤的执行端口时间信道安全防护系统及方法,用于有效防护SMT环境下通过分支诱导后使用执行端口冲突指令构建时间信道的攻击。
为了实现上述目的,本发明提供一种基于分支过滤的执行端口时间信道安全防护系统,其基于SMT环境下的多端口调度微架构,所述多端口调度微架构包括分配模块、调度器、以及乱序执行资源;所述分配模块设置为执行端口绑定算法以将每个与指令对应的微操作与乱序执行资源中的其中一个端口绑定;所述调度器设置为执行调度选择算法,以为每个端口选择微操作,进而将所述微操作发射至端口;所述执行端口时间信道安全防护系统包括在调度器的内部的分支过滤器和策略修改器;所述分支过滤器设置为在分配模块将与指令对应的微操作与端口绑定之前,进行分支指令的检测和分支过滤,以生成策略使能向量和优先级向量;所述策略修改器用于生成策略类型,并传递和整合所述优先级向量和策略使能信号,得到策略端口使能向量;所述策略类型包括端口分割策略和端口分时策略;所述分配模块设置为在接收到策略修改器发送的端口分割策略的策略类型和策略端口使能向量时,在端口绑定算法的基础上将多端口执行的微操作所采用的公平性算法改为端口分割算法;所述调度器设置为在接收到端口分时策略的端口分时策略、策略端口使能向量以及优先级向量时,将原始的选择算法改变为基于优先级向量进行优先级选择的算法。
优选地,所述分支过滤器通过其数据结构进行分支指令的检测和分支过滤;所述分支过滤器的数据结构包括分支过滤表和分支刷新表;所述分支过滤表用于记录安全的分支指令的分配分支指令地址Ax;分支刷新表用来记录有触发分支刷新的风险的分支指令的分配分支指令地址Ax;所述分支过滤器设置为:分线程检测分支指令的分配分支指令地址Ax,以及检测分支指令是否刷新;并根据分配分支指令地址Ax,来确定是否使能资源修改策略且改变该分支指令所对应的线程的优先级;根据分配分支指令地址Ax以及分支指令的刷新情况确定是否分配或者释放分支过滤表、以及是否分配或者释放分支刷新表;并根据使能资源修改策略和改变的线程的优先级生成对应的策略使能信号和优先级向量。
优选地,所述分支过滤器设置为:
分线程检测分支指令的分配分支指令地址Ax
一旦检测到分支指令的分配分支指令地址Ax匹配分支过滤表,则不使能资源修改策略且该分支指令所对应的线程的优先级不变;
一旦检测到分支指令的分配分支指令地址Ax匹配分支刷新表,则使能资源修改策略且降低该分支指令所对应的线程的优先级;
一旦检测到分支指令的分配分支指令地址Ax同时与分支过滤表和分支刷新表都不匹配,则直接使能资源修改策略并降低该分支指令所对应线程的调度优先级,同时分配分支过滤表的一项来存储所述分支指令的分配分支指令地址Ax
优选地,所述分支过滤器设置为:
在检测到分支指令的分配分支指令地址Ax匹配分支过滤表且该分支指令触发分支刷新时,释放分支过滤表中与所述分支指令的分配分支指令地址Ax匹配的数据项,同时分配分支刷新表的数据项来存储所述分支指令的分配分支指令地址Ax
在检测到分支指令的分配分支指令地址Ax匹配分支刷新表且该分支指令在由流水线提交至提交单元后没有发生分支刷新时,则释放对应分支刷新表中与分支指令的分配分支指令地址Ax匹配的数据项,同时分配分支过滤表的数据项来存储所述分支指令的分配分支指令地址Ax
优选地,所述分支过滤表和分支刷新表的深度和调度器的深度一致,且分支过滤表和分支刷新表采用PLRU替换算法。
优选地,多端口执行的微操作所默认采用的公平性算法采用基于Round-Robin原则的循环选择算法;所述端口分割算法是指多个端口资源平分给两个线程使用。
优选地,原始的选择算法默认采用Ping-Pong原则;在基于优先级向量进行优先级选择的算法中,优先基于优先级进行高优先级选择,在优先级相同的情况下再按照年龄矩阵的选择算法进行选择,所述年龄矩阵位于所述调度器中。
优选地,所述策略修改器还设置为接收来自于提交单元的刷新信号,在提交单元刷新时,策略修改器重置,将分配模块和调度器的算法恢复为原始的公平性算法和选择算法。
另一方面,本发明提供一种基于分支过滤的执行端口时间信道安全防护方法,其基于根据上文所述的基于分支过滤的执行端口时间信道安全防护系统,其在执行SMT环境下的多端口调度微架构时,包括:
S1:在所述基于分支过滤的执行端口时间信道安全防护系统的分配模块将与指令对应的微操作与端口绑定之前,利用分支过滤器进行分支指令的检测和分支过滤,以生成策略使能向量和优先级向量;利用策略修改器,生成策略类型,并整合所述优先级向量和策略使能信号,得到策略端口使能向量;所述策略类型包括端口分割策略和端口分时策略;
S2:在分配模块接收到端口分割策略的策略类型和策略使能信号时,在端口绑定算法的基础上将多端口执行的微操作所采用的公平性算法改为端口分割算法;
S3:在调度器在接收到端口分时策略的端口分时策略、策略端口使能向量以及优先级向量时,会将原始的选择算法改变为基于优先级向量进行优先级选择的算法。
优选地,所述分支过滤器通过其数据结构进行分支指令的检测和分支过滤;所述分支过滤器的数据结构包括分支过滤表和分支刷新表;所述分支过滤表用于记录安全的分支指令的分配分支指令地址Ax;分支刷新表用来记录有触发分支刷新的风险的分支指令的分配分支指令地址Ax
所述分支过滤器设置为:分线程检测分支指令的分配分支指令地址Ax,以及检测分支指令是否刷新;并根据分配分支指令地址Ax,来确定是否使能资源修改策略且改变该分支指令所对应的线程的优先级;根据分配分支指令地址Ax以及分支指令的刷新情况确定是否分配或者释放分支过滤表、以及是否分配或者释放分支刷新表;并根据使能资源修改策略和改变的线程的优先级生成对应的策略使能信号和优先级向量;
分支指令的刷新情况由分配模块、执行单元和提交单元所提供的分支指令的分配分支指令地址Ax、分支刷新地址Fx和分支提交地址Rx来综合识别和判断;
其中,分支过滤表的分配和释放的步骤包括:
A1:将分支指令与分支过滤表中的有效的数据项进行比较;其中,对于分支过滤表中的有效的数据项,若所述分支指令的分配分支指令地址Ax同分支过滤表中的任意一个数据项的地址相等,且该分支指令的分支刷新地址Fx同分支过滤表中的各个数据项的地址均不相等时,则将其策略使能标志设置为0,分支指令的当前分配的线程的优先级不变;随后结束当前流程;其中,不产生分支刷新的分支指令的分支刷新地址Fx是无效地址;否则,继续执行步骤A2;
A2:对于所述分支过滤表中的有效的数据项,若所述分支指令的分配分支指令地址Ax同分支过滤表的任意一个数据项的地址均不相等,且所述分支指令的分支刷新地址Fx同分支过滤表中的任意一个数据项的地址均不相等时,则分支过滤表的各个数据项中选择一个PLRU替换类型的数据项分配有效域为1,将该数据项的地址域设置为当前的分支指令的地址,将策略使能标志设置为1,分支指令的当前分配的线程的优先级降低;随后结束当前流程;否则,继续执行步骤A3;
A3:若对于所述分支指令,其分支刷新地址Fx匹配分支过滤表的某一数据项的地址域,则将对应分支过滤表的数据项的有效域设置为0,策略使能标志设置为1,当前产生分支刷新线程的线程优先级降低;随后结束当前流程;否则,继续执行步骤A4;
A4:将策略使能标志设置为1,将当前的线程的优先级降低;
分支刷新表的分配和释放的步骤包括:
B1:将分支指令与分支刷新表中的有效的数据项进行比较;其中,对于分支刷新表中的有效的数据项,若所述分支指令的分配分支指令地址Ax同分支刷新表中的任意一个数据项的地址相等,且所述分支指令的分支提交地址Rx同分支刷新表的任意一个数据项的地址均不相等时,策略使能标志设置为1,将分支指令的当前分配的线程的优先级降低,其中,产生分支刷新的分支指令的分支提交地址Rx是无效地址;随后结束当前流程;否则,继续执行步骤B2;
B2:对于分支刷新表中的有效的数据项,若所述分支指令的分支刷新地址Fx同分支刷新表中的任意一个数据项的地址都不相等,且所述分支指令的分支提交地址Rx同分支刷新表中的任意一个数据项的地址都不相等时,则在分支刷新表的数据项中选择一个PLRU替换类型的数据项分配有效域为1,地址域为当前的分支刷新地址;同时,不使能资源修改策略且该分支指令所对应的线程的优先级不变;随后结束当前流程;否则,继续执行步骤B3;
B3:对于分支刷新表中的有效的数据项,若所述分支指令的分支刷新地址Fx同分支刷新表中的任意一个数据项的地址都不相等,且所述分支指令的分支提交地址Rx同分支刷新表中的任意一个数据项相等时,则将对应于所述分支指令的分支刷新表的数据项的有效域设置为0,策略使能标志设置为0,当前的线程的优先级增加;随后结束当前流程;否则,继续执行步骤B4;
B4:将策略使能标志设置为1,当前的线程的优先级维持不变。
本发明的基于分支过滤的执行端口时间信道安全防护方法,通过设置分支过滤器进行分支指令的检测和分支过滤,并设置策略修改器来修改分配模块和调度器选择模块的算法,通过分支过滤器和策略修改器对分配模块和调度器选择模块的算法的调整,实现了针对SMT环境下组合分支诱导和执行端口冲突的时间信道攻击的防护。在防护有效性上可以达到关闭SMT技术的防护效果,性能开销仅为关闭SMT技术的4.8%,具有较高的应用价值。
附图说明
图1是现有的组合分支诱导和端口冲突的时间信道攻击场景的原理图。
图2是现有技术中的多端口调度微架构的结构示意图。
图3是本发明的基于分支过滤的执行端口时间信道安全防护系统的结构示意图。
图4A-图4B是标准的多端口调度算法和增加防护设计算法的对比图,其中图4A示出了标准的多端口调度算法,图4B示出了多端口调度算法与本发明的基于分支过滤的执行端口时间信道安全防护方法的结合。
具体实施方式
下面结合附图,给出本发明的一个实施例,对本发明的方案做进一步详细的解释和说明。
图3是本发明的基于分支过滤的执行端口时间信道安全防护系统的微架构结构示意图,这里的基于分支过滤的执行端口时间信道安全防护系统基于多端口调度微架构并且增加了防护设计。如图3所示,现有的SMT环境下的多端口调度微架构主要包括分配模块10、调度器20、设于调度器20内部的年龄矩阵、依赖矩阵和选择模块21、以及乱序执行资源。乱序执行资源包括与调度器20依次相连的端口30(即执行端口)、执行单元40、提交单元60以及与提交单元60连接的存储单元50等组件。
其中,分配模块10设置为执行端口绑定算法,主要负责对由指令译码得到的微操作进行乱序执行资源的分配,以将每个微操作与乱序执行资源中的其中一个端口30绑定(即微操作发射至哪一个端口30)。如图3所示,图中的分配模块10中的数字0-5对应于后面的端口30的编号,即对应于后面的第零到第五端口,在其他实施例中,本发明的方法可以扩展到任意端口的分配调度系统中。微操作由指令译码得到,且其需要在乱序执行资源中进行运算或处理。调度器20设置为基于其选择模块21来执行调度选择算法,以根据微操作所具有的年龄信息(来自于年龄矩阵)和就绪信息(来自于依赖矩阵)为端口30选择微操作,进而将所述微操作发射至端口30(即优先发射哪一个微操作至端口30)。
本发明的基于分支过滤的执行端口时间信道安全防护系统在现有的多端口调度微架构的基础上,通过在调度器20的内部新增分支过滤器22和策略修改器23这两个子模块并且利用策略修改器23对分配模块10和调度器20进行修改,从而实现执行端口时间信道安全防护。
(一)分支过滤器22
分支过滤器22设置为在分配模块10将与指令对应的微操作与端口绑定之前,通过其数据结构进行双线程的分支指令的检测和分支过滤,以生成策略使能向量和优先级向量。
如图3所示,分支过滤器22同时与分配模块10、执行单元40和提交单元60相连,以接收不同阶段的分支指令的地址。其中,不同阶段的分支指令的地址包括:分配模块10提供的分配分支指令地址Ax(即在分配阶段的地址)、执行单元40提供的分支刷新地址Fx(即在执行阶段的地址)、以及提交单元提供的分支提交地址Rx
其中,分支过滤器22的数据结构包括分支过滤表221和分支刷新表222。分支过滤表221用于记录安全的、不需要使能防护策略的分支指令地址,命中分支过滤表221则被认为是安全的,无需使能防护策略。分支刷新表222用于记录有触发分支刷新的风险的分支指令的分配分支指令地址Ax,命中分支刷新表222则被认为是有风险的,需要使能防护策略。本发明利用分支过滤表221和分支刷新表222来区分某分支指令地址是否有存在执行端口时间信道安全问题的隐患。
分支过滤器22设置为:分线程检测分支指令的分配分支指令地址Ax,以及分支指令的刷新情况(即检测分支指令是否刷新);并根据分配分支指令地址Ax,来确定是否使能资源修改策略且改变该分支指令所对应的线程的优先级;根据分配分支指令地址Ax以及分支指令的刷新情况确定是否分配或者释放分支过滤表221、以及是否分配或者释放分支刷新表222;并根据使能资源修改策略和改变的线程的优先级生成对应的策略使能信号和优先级向量。
具体来说,所述分支过滤器22设置为:
分线程检测分配单元10提供的分支指令的分配分支指令地址Ax
其中,分配分支指令地址Ax表示分支指令所在的存储位置。
一旦检测到分支指令的分配分支指令地址Ax匹配分支过滤表221(此时必定不匹配分支刷新表222),说明分支指令需被过滤,则不使能资源修改策略(即分支过滤器22发送低电平的策略使能信号,策略使能信号为0)且该分支指令所对应的线程的优先级不变。这部分内容也对应于下文的关于步骤A1的描述。
一旦检测到分支指令的分配分支指令地址Ax匹配分支刷新表222(此时必定不匹配分支过滤表221),则使能资源修改策略(即发送的策略使能信号为1)且降低该分支指令所对应的线程的优先级;其中,策略使能信号是持续提供的电平信号。这部分内容也对应于下文的关于步骤B1的描述。
一旦检测到分支指令的分配分支指令地址Ax同时与分支过滤表221和分支刷新表222都不匹配时,则直接使能资源修改策略(即发送的策略使能信号为1)并降低该分支指令所对应线程的优先级,同时分配分支过滤表221的一项来存储所述分支指令的分配分支指令地址Ax。这种都未命中的情况,即分配分支过滤表221的情况。这部分内容也对应于下文的关于步骤A2的描述。
分支过滤器22的分支过滤表221和分支刷新表222深度和调度器20的资源深度一致,从而不需要考虑溢出问题。
此外,分支过滤表221和分支刷新表222采用PLRU替换算法。
分支指令触发分支刷新说明当前的分支预测是错误的,就代表该分支指令的执行会使得投机窗口结束,当触发分支刷新的分支指令的分配分支指令地址Ax匹配分支过滤表221时,该分支指令所对应的投机指令可能尚未被执行。
分支过滤器22设置为在检测到分支指令的分配分支指令地址Ax匹配分支过滤表221且该分支指令在执行阶段触发分支刷新时,此时,如上文所述,由于分支指令的分配分支指令地址Ax匹配分支过滤表221,也就是说分配阶段,因为命中过滤表了,因此目前不会使能防护,认为是安全的,而且只在这个分配阶段判断是否使能防护,因此,不使能资源修改策略(即分支过滤器22不发送策略使能信号)且该分支指令所对应的线程的优先级不变。另外,在执行阶段,由于发现触发分支刷新,说明所述分支指令原来是安全的,现在不一定安全了,释放分支过滤表221中与所述分支指令的分配分支指令地址Ax匹配的数据项,同时分配分支刷新表222的数据项来存储所述分支指令的分配分支指令地址Ax。这样做会导致下次遇到该分支指令时,分支指令的分配分支指令地址Ax匹配分支刷新表222,会被判断为不安全,从而实现使能防护。
分支过滤器22设置为在检测到分支指令的分配分支指令地址Ax匹配分支刷新表222且该分支指令在由流水线提交至提交单元60后没有发生分支刷新时,此时,说明该分支指令预测正确因而没有触发分支刷新,分支过滤表221需被分配,则释放对应分支刷新表222中与分支指令的分配分支指令地址Ax匹配的数据项,同时分配分支过滤表221的数据项来存储所述分支指令的分配分支指令地址Ax。此时,如上文所述,由于分支指令地址匹配分支刷新表222,因此,直接使能资源修改策略(即发送策略使能信号),分支指令的当前分配的线程的优先级降低;
由此,分支过滤器22会实时输出策略使能信号和优先级向量给到策略修改器,策略修改器根据该信息进行端口绑定和调度选择算法的策略调整。
其中,分支刷新是超标量处理器微架构的通用行为,分支指令的刷新情况可由分配模块10、执行单元40和提交单元60所提供的不同阶段的分支指令的地址(分配分支指令地址Ax、分支刷新地址Fx、分支提交地址Rx)来综合识别和判断。因此,是否分配或者释放分支过滤表221、以及是否分配或者释放分支刷新表222也根据分配分支指令地址Ax、分支刷新地址Fx、分支提交地址Rx来综合识别和判断。
1)分支过滤表221的分配和释放过程
分支过滤表221的分配和释放由分支过滤器22来执行,其具体步骤如下:
步骤A1:将分支指令与分支过滤表221中的有效的数据项进行比较;其中,对于分支过滤表221中的有效的数据项,若所述分支指令的分配分支指令地址Ax同分支过滤表221中的任意一个数据项的地址相等,且该分支指令的分支刷新地址Fx同分支过滤表221中的各个数据项的地址均不相等时,说明该分支指令需被过滤,则将其策略使能标志设置为0,分支指令的当前分配的线程的优先级不变;随后结束当前流程;否则,继续执行步骤A2;
需要说明的是,分支刷新地址Fx与分支指令是一一对应的关系。在分支指令未触发分支刷新时,分支指令的分支刷新地址Fx为无效地址(例如地址的每一位均为F),就不会匹配任何表的数据项;在分支指令触发了分支刷新时,分支刷新地址Fx由分配分支指令地址Ax传递得到,其值等于分配分支指令地址Ax。分支刷新是一种分支指令的执行状态,分支预测成功不需要刷新,失败才会刷新。
其中,下标x是线程号,在本发明中,线程的数量是仅仅只有两个(即线程号x为0或1),因为Intel的SMT技术就是2个线程。
也就是说,在步骤A1中,对于一个分支指令,如果分支指令的分配分支指令地址Ax匹配分支过滤表221,且分支指令没有分支刷新(如果触发分支刷新,那么Fx=Ax,Fx匹配分支过滤表221,矛盾),说明分支指令需被过滤,不使能资源修改策略且该分支指令所对应的线程的优先级不变。
步骤A2:对于所述分支过滤表221中的有效的数据项,若所述分支指令的分配分支指令地址Ax同分支过滤表221的任意一个数据项的地址均不相等,且所述分支指令的分支刷新地址Fx同分支过滤表221中的任意一个数据项的地址均不相等时,说明分支过滤表221需被分配,则分支过滤表221的各个数据项中选择一个PLRU替换类型的数据项分配有效域为1,将该数据项的地址域设置为当前的分支指令的地址,将策略使能标志设置为1,分支指令的当前分配的线程的优先级降低;随后结束当前流程;否则,继续执行步骤A3;
也就是说,在步骤A2中,对于一个分支指令,如果所述分支指令在分配阶段的线性地址不匹配分支过滤表221,且所述分支指令未刷新,说明分支过滤表221需被分配,并使能资源修改策略且该分支指令所对应的线程的优先级降低。
针对分支指令刷新,分配分支指令地址Ax、分支刷新地址Fx不匹配分支过滤表221而匹配分支刷新表222的情况,就说明分配分支指令地址Ax一定匹配分支刷新表222,因为分支指令即使在不同阶段也是完全一样的地址,那这种情况就适用于分配分支指令地址匹配分支刷新表的情况了,即,在分配分支指令地址Ax匹配分支刷新表222时,会直接跳转到步骤B1。
步骤A3:若对于所述分支指令,其分支刷新地址Fx存在且匹配分支过滤表的某一数据项的地址域(即分支指令触发刷新,且触发分支刷新后的地址匹配分支过滤表221),则将分支过滤表221中对应的数据项的有效域设置为0(即释放分支过滤表221中与所述分支指令的地址匹配的数据项)。由此,之后再次遇到所述分支指令时,可以通过步骤S2使得策略使能标志设置为1,当前产生分支刷新的分支指令所在的线程优先级降低;随后结束当前流程;否则,继续执行步骤A4;
也就是说,在步骤A3中,如果分支指令触发了分支刷新且其分支刷新地址Fx匹配分支过滤表221,则释放分支过滤表221中与所述分支指令的地址匹配的数据项。
步骤A4:此时继续执行到步骤A4,说明以上条件均不匹配,无需另外动作,将策略使能标志保持为1,将当前的线程的优先级降低(即当前的线程的优先级降低)。通常来说,一般不会执行到步骤A4,该步骤仅仅为default(默认)的情况,只需要保证其结果为没有分支过滤因而需要使能防护时的结果即可。
下面示例性地给出上文的分支过滤表221的分配和释放过程所对应的伪代码。
输入参数包括:分配分支指令地址Ax、分支刷新地址Fx,x={0,1}、分支过滤表有效域FilterTableVi、分支过滤表地址域FilterTableAi,i={0,n};其中,i是端口的索引,n是端口的数目,generate指硬件的平铺遍历,下标x是线程号,在本发明中,线程的数量是仅仅只有两个(即线程号x为0或1),因为Intel的SMT技术就是2个线程。
输出参数包括:更新的分支过滤表有效域FilterTableVi、更新的分支过滤表地址域FilterTableAi,i={0,n}、策略使能标志E、线程优先级Priorx,x={0,1};线程优先级Priorx是指第x个线程的优先级。
2)分支刷新表222的分配和释放过程
类似地,分支刷新表222的分配和释放同样由分支过滤器22来执行,其具体步骤如下:
步骤B1:将分支指令与分支刷新表222中的有效的数据项进行比较;其中,对于分支刷新表222中的有效的数据项,若所述分支指令的分配分支指令地址Ax同分支刷新表222中的任意一个数据项的地址相等,且所述分支指令的分支提交地址Rx同分支刷新表222的任意一个数据项的地址均不相等时(即分支指令触发刷新,其分支提交地址Rx为无效地址),策略使能标志设置为1,将分支指令的当前分配的线程的优先级降低;随后结束当前流程;否则,继续执行步骤B2;
需要说明的是,如果分支执行触发了刷新,那么分支指令的分支提交地址Rx就是无效地址,不会匹配任何表的数据项;如果分支执行触发了刷新,那么分支指令的分支提交地址Rx就是由分配分支指令地址Ax传递得到的,其值等于分配分支指令地址Ax
也就是说,对于一个分支指令来说,如果其线性地址匹配分支刷新表222,则说明该分支指令当前是有风险的,因此使能资源修改策略且该分支指令所对应的线程的优先级降低,且由于其确实触发了分支刷新,因此之后仍然是有风险的,不需要分支刷新表222释放。
步骤B2:对于分支刷新表222中的有效的数据项,若所述分支指令的分支刷新地址Fx同分支刷新表222中的任意一个数据项的地址都不相等(即该分支指令未触发分支刷新导致Fx无效,或者在触发分支刷新后的地址还不匹配分支刷新表222),且所述分支指令的分支提交地址Rx同分支刷新表222中的任意一个数据项的地址都不相等时(即该分支指令触发了分支刷新导致Rx为无效地址,或者在提交后还未刷新且在提交时的地址不匹配分支刷新表222),说明分支刷新表222需被分配,则在分支刷新表222的数据项中选择一个PLRU替换类型的数据项分配有效域为1,地址域为当前的分支刷新地址;同时,不使能资源修改策略且该分支指令所对应的线程的优先级不变;随后结束当前流程;否则,继续执行步骤B3;
也就是说,对于一个分支指令来说,如果其在触发分支刷新后的地址Fx还不匹配分支刷新表222,且其触发分支刷新导致Rx为无效地址,则说明该分支刷新表222需要被分配,因此使能资源修改策略且该分支指令所对应的线程的优先级降低。
针对另一种情况,分支指令未触发分支刷新导致Fx无效,并且该分支指令在提交后还未刷新且在提交时的地址不匹配分支刷新表222(而匹配分支过滤表211),如果提交时的地址不匹配分支刷新表222(而匹配分支过滤表211),那就说明分配分支指令地址直接就匹配分支过滤表211了,针对这种情况,若分配分支指令地址Ax匹配分支过滤表211,则会直接跳转到步骤A1。
步骤B3:对于分支刷新表222中的有效的数据项,若所述分支指令的分支刷新地址Fx同分支刷新表222中的任意一个数据项的地址都不相等(即未触发分支刷新导致Fx无效,或者在触发分支刷新后的地址还不匹配分支刷新表222),且所述分支指令的分支提交地址Rx同分支刷新表中的任意一个数据项相等(即该分支指令在提交后还未刷新,且在提交时的地址匹配分支刷新表222)时,将对应于所述分支指令的分支刷新表222的数据项的有效域设置为0,策略使能标志设置为0,当前的触发分支刷新的线程的优先级增加;随后结束当前流程;否则,继续执行步骤B4;
也就是说,对于一个分支指令来说,如果其在提交后还未刷新且其在提交时的地址匹配分支刷新表222,则清除对应的分支刷新表的数据项且不使能资源修改策略且该分支指令所对应的线程的优先级增加。
步骤B4:此时继续执行到步骤B4,说明以上条件均不匹配,无需动作,且使能状态和优先级已经调整到位了,将策略使能标志保持为1,当前的线程的优先级维持不变,维持为0。通常来说,一般不会执行到步骤B4,该步骤仅仅为default(默认)的情况,只需要保证其结果为使能防护时的结果即可。
下面示例性地给出上文的分支刷新表222的分配和释放过程所对应的伪代码。
输入参数包括:分配分支指令地址Ax、分支刷新地址Fx、分支提交地址Rx,x={0,1}、分支刷新表有效域FlushTableVi、分支刷新表地址域FlushTableAi,i={0,n}
输出参数包括:更新的分支过滤表有效域FlushTableVi、更新的分支过滤表地址域FlushTableAi,i={0,n}、策略使能标志E、线程优先级Priorx,x={0,1};
(二)策略修改器23
策略修改器23用于生成合适的策略类型,并传递和整合优先级向量和策略使能信号,得到策略端口使能向量,以生成对SMT技术的多端口调度算法的防护逻辑并在之后完成新防护算法的应用。策略修改器23生成的策略类型有两种,包括端口分割策略和端口分时策略。其中,端口分割策略具体是用于分配模块10所执行的端口绑定算法的策略调整,用于进行大于1个的端口30的资源的绑定;端口分时策略用于调度器20所执行的调度选择算法的策略调整。为了保证两个线程之间的公平性,当某执行的微操作拥有多个端口资源可以用于端口分配时,多端口执行的微操作所默认采用的公平性算法采用基于Round-Robin原则的循环选择算法;当某执行行为只有一个端口资源可以用于调度器选择时,原始的选择算法默认采用Ping-Pong原则。
策略修改器23设置为向分配模块10和调度器20输出端口分割策略和端口分时策略这两种策略类型、策略使能信号按照端口顺序排布而形成的策略端口使能向量、以及优先级向量,其中优先级向量和策略使能信号是由分支过滤器22产生的。由此,策略类型、策略端口使能向量、优先级向量伴随微操作的操作码会同时提供给分配模块10和调度器20的选择模块21,操作码用于识别分配模块10的分支指令对应的微操作。
策略端口使能向量、优先级向量的调节过程如上文所述。
策略类型属于端口分割策略还是端口分时策略还是这两者的结合,取决于采用所述策略类型的微操作的类型能够分配在哪些端口上执行。
例如:1)适用于端口分割策略的情况:如果某个类型的微操作能够在2个端口执行,则两个线程物理上分开使用,即采用端口分割策略,每个线程中的该类型的微操作与一个端口绑定。
2)适用于端口分时策略的情况:如果某个类型的微操作只能够在1个端口执行,则两个线程时间上分开使用,即两个线程中的该类型的微操作采用端口分时策略在同一端口上执行。
3)同时适用于端口分割策略和端口分时策略的情况:如果某个类型的微操作能够在3个端口执行,则3个端口中,两个线程物理上先采用端口分割策略以使得每个线程的一部分微操作分别与其中一个端口绑定,剩下的一个端口采用端口分时策略。
其余情况依次类推。也就是说,如果某个类型的微操作只能够在1个端口上执行,则微操作所对应的策略类型为端口分时策略;某个类型的微操作能够在偶数个端口执行,则微操作所对应的策略类型为端口分割策略;某个类型的微操作能够在大于1个的奇数个端口上执行,则策略类型为微操作所对应的端口分时策略和端口分割策略。
此外,策略修改器23还设置为接收来自于提交单元60的刷新信号,当出现中断、事件、异常等单线程事件或SMT下线程唤醒、线程睡眠、线程切换等双线程事件时(即在提交单元60刷新时),策略修改器23重置,将分配模块10和调度器20的算法恢复为原始的双线程共享多端口调度算法(即原始的公平性算法和选择算法)。
(三)策略修改器23对分配模块10的修改
分配模块10设置为在接收到策略修改器23发送的端口分割策略的策略类型和策略端口使能向量时,在现有的端口绑定算法的基础上将多端口执行的微操作所采用的循环选择算法或其他公平性算法改为端口分割算法。所述端口分割算法是指多个端口资源平分给两个线程使用。例如,add、mov reg等等都是需要多端口执行的微操作。由此可以实现指定的端口的分割。
在本实施例中,以Intel Skylake微架构的多端口的执行单元INT ALU以及单端口的执行单元INT MUL为例。假设端口30包括第零端口p0、第一端口p1、第二端口p2、第三端口p3、第四端口p4、第五端口p5和第六端口p6,且某个微操作类型所能够分配的端口为第零端口p0、第一端口p1、第五端口p5或第六端口p6,则端口分割算法的具体步骤如下:
步骤S21:当微架构(如Intel Skylake微架构)利用分配模块10将两个线程的微操作与第零端口p0、第一端口p1、第五端口p5或第六端口p6绑定时,如果两个线程所分配的端口目标相同且该端口目标为第零端口p0、第一端口p1、第五端口p5或第六端口p6时,则选择其中一个线程的微操作绑定第零端口p0或第一端口p1,选择其中另一个线程的微操作绑定第五端口p5或第六端口p6;
步骤S22:当前两个线程所分配的端口目标不相同时,两个线程各自将其分配的端口目标绑定。
此处只是以Intel的Skylake微架构举例,本发明可以应用于任意端口数任意架构下,微操作可执行的端口也不仅限于第零端口p0、第一端口p1、第五端口p5或第六端口p6。
下面示例性地给出相应的伪代码。
输入参数包括:就绪线程端口Txi,线程优先级Priorx,x={0,1},x是线程号,执行端口P={p0,p1,p2,…,pn-1},i={0,n},i是端口30的索引,n是执行端口的数目;就绪线程端口Txi指的是第x个线程所分配的端口目标,也就是按照原本的端口绑定算法处于就绪状态的线程原本要绑定的执行端口,就绪指的是调度器的一种状态。执行端口是实际存在的物理器件。
输出参数包括:选择线程Sxi,x={0,1}。选择线程Sxi是指第x个线程所绑定的端口30。
(四)策略修改器23对调度器20的修改
调度器20设置为在接收到端口分时策略的端口分时策略、策略端口使能向量以及优先级向量时,将原始的选择算法(如按照年龄矩阵的选择算法)改变为基于优先级向量进行优先级选择的算法。
在基于优先级向量进行优先级选择的算法中,优先基于优先级对微操作进行高优先级选择,在优先级相同的情况下再按照年龄矩阵的选择算法对微操作进行选择。由此,即使高优先级线程微操作在年龄矩阵中记录的年龄比另外的线程年轻,其也会被优先选择。
基于优先级向量进行优先级选择的算法具体包括以下步骤:
步骤S31:当微架构(如Intel Skylake微架构)利用调度器20分配每个端口30各自即将执行的微操作时,如果存在两个线程分配的端口目标相同,则比较其优先级,优先级高的分配对应端口30;
步骤S32:当前两个线程分配的端口目标不相同,两个线程各自分配其端口30。
下面示例性地给出相应的伪代码。
输入参数包括:就绪线程端口Txi,线程优先级Priorx,x={0,1},执行端口P={p0,p1,p2,…,pn-1},i={0,n};
输出参数包括:选择线程Sxi,x={0,1}.
如图4A-图4B所示,基于上文所述的基于分支过滤的执行端口时间信道安全防护系统,所实现的基于分支过滤的执行端口时间信道安全防护方法,其在执行SMT环境下的多端口调度微架构时,包括如下步骤:
步骤S1:分支指令的检测和分支过滤。即,在分配模块10将与指令对应的微操作与端口30绑定之前,利用分支过滤器22进行分支指令的检测和分支过滤,以生成策略使能向量和优先级向量;利用策略修改器23,生成合适的策略类型,并整合所述优先级向量和策略使能信号,得到策略端口使能向量。
策略修改器23生成的策略类型有两种,包括端口分割策略和端口分时策略。
步骤S2:端口绑定算法调整。即,在分配模块10接收到端口分割策略的策略类型和策略使能信号时,在端口绑定算法的基础上将多端口执行的微操作所采用的循环选择算法或其他公平性算法改为端口分割算法。
步骤S3:调度选择算法调整。即,在调度器20在接收到端口分时策略的端口分时策略、策略端口使能向量以及优先级向量时,会将原始的选择算法(例如按照年龄矩阵的选择算法)改变为基于优先级向量进行优先级选择的算法。在基于优先级向量进行优先级选择的算法中,优先基于优先级进行高优先级选择,在优先级相同的情况下再按照年龄矩阵的选择算法进行选择。由此,即使高优先级线程微操作在年龄矩阵中记录的年龄比另外的线程年轻,其也会被优先选择。
如图4A所示,执行SMT环境下的多端口调度微架构包括:
步骤S1’:使用轮询算法读取两个线程的微操作;
步骤S2’:利用分配模块10将与指令对应的微操作与端口30进行绑定;其中,所述步骤S2在所述步骤S2’的同时执行,与对所述步骤S2进行改进。
步骤S3’:利用调度器20的选择模块21和依赖矩阵来生成与每个端口30绑定的就绪的微操作;与端口30绑定的多个就绪的微操作组成了就绪向量;
步骤S4’:在与每个端口30绑定的多个就绪的微操作中,利用调度器20的选择模块21和年龄矩阵选择每个端口30各自即将执行的微操作;所选择的每个端口30即将执行的微操作组成了选择向量。其中,所述步骤S3在执行所述步骤S4’的同时执行,与对所述步骤S4进行改进。
实验验证结果:
我们使用Gem5模拟一个高性能多执行端口的超标量处理器作为本防护方法的防护有效性、性能开销的评估平台,其配置参数如表1。对标的防护方式是目前针对SMT环境下执行端口双线程共享的时间信道攻击最有效的防护策略—关闭SMT技术(含动态关闭SMT技术)。
对于防护有效性评估,选用了SMoTherSpectre攻击中的POC(Proof Of Code)代码作为实验目标,分析提出的防护设计对这两种攻击方式的防护效果。
对于性能评估,选用SPEC CPU 2006测试集作为性能评估的参考,主要评估防护方法对性能的影响以及同关闭SMT技术产生的性能影响进行对比。性能评估采用整型和浮点共19个测试程序的SPEC CPU 2006测试集,整型7个,浮点12个,其他测试程序在Gem5模拟器上运行存在问题。
表1 Gem5模拟器配置参数
防护有效性实验结果如表2所示。表2中,每50为一个周期。
表2防护有效性实验结果
通过该实验数据表明,使能防护机制后,攻击者使用端口冲突指令进行时间信道攻击的方式通过度量冲突时间来采集时间信道过程中会有明显的误差和干扰存在,无法判断受害者使用的指令类型和频度,可以达到禁用或动态关闭SMT技术的防护效果,进而防止受害者私密信息的泄露。其中,表中的数据越大,说明时间越长。
性能对比评估实验结果如表3所示:
表3性能对比评估实验结果
通过在Gem5上运行测试程序,分别统计关闭SMT技术、正常开启SMT技术、开启SMT技术并且使用本防护方法三个场景的执行周期数值,然后进行SPEC CPU 2006程序的整体性能对比,执行周期数越大,性能越差,周期数越小,性能越好。
SMT环境下使用防护设计后SPEC CPU 2006测试集测试出的执行性能相比无防护设计开启SMT平均下降4.8%,其中性能下降最明显的是471,下降比例为50.86%。在471的程序特征下,开启防护机制后性能比关闭SMT技术要差,其他程序均优于关闭SMT技术,且以462和473为代表的测试程序在增加防护设计后性能没有下降,基本和开启SMT技术持平。本防护方法对性能的影响整体可控,且相比于禁用或动态关闭SMT技术有明显的性能优势。
以上所述的,仅为本发明的较佳实施例,并非用以限定本发明的范围,本发明的上述实施例还可以做出各种变化。凡是依据本发明申请的权利要求书和说明书内容所做的简单、等效变化与修饰,皆落入本发明专利的权利要求保护范围。本发明未详尽叙述的均为常规技术内容。

Claims (7)

1.一种基于分支过滤的执行端口时间信道安全防护系统,其基于SMT环境下的多端口调度微架构,所述多端口调度微架构包括分配模块(10)、调度器(20)、以及乱序执行资源;所述分配模块(10)设置为执行端口绑定算法以将每个与指令对应的微操作与乱序执行资源中的其中一个端口(30)绑定;所述调度器(20)设置为执行调度选择算法,以为每个端口(30)选择微操作,进而将所述微操作发射至端口(30);
其特征在于,所述执行端口时间信道安全防护系统包括在调度器(20)的内部的分支过滤器(22)和策略修改器(23);所述分支过滤器(22)设置为在分配模块(10)将与指令对应的微操作与端口绑定之前,进行分支指令的检测和分支过滤,以生成策略使能向量和优先级向量;所述策略修改器(23)用于生成策略类型,并传递和整合所述优先级向量和策略使能信号,得到策略端口使能向量;所述策略类型包括端口分割策略和端口分时策略;
所述分配模块(10)设置为在接收到策略修改器(23)发送的端口分割策略的策略类型和策略端口使能向量时,在端口绑定算法的基础上将多端口执行的微操作所采用的公平性算法改为端口分割算法;
所述调度器(20)设置为在接收到端口分时策略的端口分时策略、策略端口使能向量以及优先级向量时,将原始的选择算法改变为基于优先级向量进行优先级选择的算法;
所述分支过滤器(22)通过其数据结构进行双线程的分支指令的检测和分支过滤;所述分支过滤器(22)的数据结构包括分支过滤表(221)和分支刷新表(222);所述分支过滤表(221)用于记录安全的分支指令的分配分支指令地址A x ;分支刷新表(222)用来记录有触发分支刷新的风险的分支指令的分配分支指令地址A x
所述分支过滤器(22)设置为:分线程检测分支指令的分配分支指令地址A x ,以及检测分支指令是否刷新;并根据分配分支指令地址A x ,来确定是否使能资源修改策略且改变该分支指令所对应的线程的优先级;根据分配分支指令地址A x 以及分支指令的刷新情况确定是否分配或者释放分支过滤表(221)、以及是否分配或者释放分支刷新表(222);并根据是否使能资源修改策略和改变的线程的优先级生成对应的策略使能信号和优先级向量;
其中,策略使能信号为0时表示不使能资源修改策略,所述策略使能信号为1时表示使能资源修改策略;
策略端口使能向量由所有端口的策略使能信号按照端口顺序排布而形成;
优先级向量包括所有线程的线程优先级Prior x ,线程优先级Prior x 是指第x个线程的优先级,线程号x为0或1;
端口分割策略是用于分配模块(10)所执行的端口绑定算法的策略调整,端口分割策略包括:如果某个类型的微操作能够在偶数个端口执行,则两个线程物理上分开使用,采用每个线程中的该类型的微操作与一半端口绑定;
端口分时策略用于调度器(20)所执行的调度选择算法的策略调整,端口分时策略包括:如果某个类型的微操作只能够在一个端口上执行,则两个线程时间上分开使用;
如果某个类型的微操作能够在大于1个的奇数个端口执行,则奇数个端口中,偶数个线程物理上先采用端口分割策略以使得每个线程的一部分微操作分别与其中一半端口绑定,剩下的一个端口采用端口分时策略;
多端口执行的微操作所默认采用的公平性算法采用基于Round-Robin原则的循环选择算法;所述端口分割算法是指多个端口资源平分给两个线程使用;
原始的选择算法默认采用Ping-Pong原则;在基于优先级向量进行优先级选择的算法中,优先基于优先级进行高优先级选择,在优先级相同的情况下再按照年龄矩阵的选择算法进行选择,所述年龄矩阵位于所述调度器(20)中。
2.根据权利要求1所述的基于分支过滤的执行端口时间信道安全防护系统,其特征在于,所述分支过滤器(22)设置为:
分线程检测分支指令的分配分支指令地址A x
一旦检测到分支指令的分配分支指令地址A x 匹配分支过滤表(221),则不使能资源修改策略且该分支指令所对应的线程的优先级不变;
一旦检测到分支指令的分配分支指令地址A x 匹配分支刷新表(222),则使能资源修改策略且降低该分支指令所对应的线程的优先级;
一旦检测到分支指令的分配分支指令地址A x 同时与分支过滤表(221)和分支刷新表(222)都不匹配,则直接使能资源修改策略并降低该分支指令所对应线程的调度优先级,同时分配分支过滤表(221)的一项来存储所述分支指令的分配分支指令地址A x
3.根据权利要求2所述的基于分支过滤的执行端口时间信道安全防护系统,其特征在于,所述分支过滤器(22)设置为:
在检测到分支指令的分配分支指令地址A x 匹配分支过滤表(221)且该分支指令触发分支刷新时,释放分支过滤表(221)中与所述分支指令的分配分支指令地址A x 匹配的数据项,同时分配分支刷新表(222)的数据项来存储所述分支指令的分配分支指令地址A x
在检测到分支指令的分配分支指令地址A x 匹配分支刷新表(222)且该分支指令在由流水线提交至提交单元(60)后没有发生分支刷新时,则释放对应分支刷新表(222)中与分支指令的分配分支指令地址A x 匹配的数据项,同时分配分支过滤表(221)的数据项来存储所述分支指令的分配分支指令地址A x
4.根据权利要求1所述的基于分支过滤的执行端口时间信道安全防护系统,其特征在于,所述分支过滤表(221)和分支刷新表(222)的深度和调度器(20)的深度一致,且分支过滤表(221)和分支刷新表(222)采用PLRU替换算法。
5.根据权利要求1所述的基于分支过滤的执行端口时间信道安全防护系统,其特征在于,所述策略修改器(23)还设置为接收来自于提交单元(60)的刷新信号,在提交单元(60)刷新时,策略修改器(23)重置,将分配模块(10)和调度器(20)的算法恢复为原始的公平性算法和选择算法。
6.一种基于分支过滤的执行端口时间信道安全防护方法,其特征在于,其基于根据权利要求1-5之一所述的基于分支过滤的执行端口时间信道安全防护系统,其在执行SMT环境下的多端口调度微架构时,包括:
步骤S1:在所述基于分支过滤的执行端口时间信道安全防护系统的分配模块(10)将与指令对应的微操作与端口绑定之前,利用分支过滤器(22)进行分支指令的检测和分支过滤,以生成策略使能信号和优先级向量;利用策略修改器(23),生成策略类型,并整合所述优先级向量和策略使能信号,得到策略端口使能向量;所述策略类型包括端口分割策略和端口分时策略;
步骤S2:在分配模块(10)接收到端口分割策略的策略类型和策略使能信号时,在端口绑定算法的基础上将多端口执行的微操作所采用的公平性算法改为端口分割算法;
步骤S3:在调度器(20)在接收到端口分时策略的端口分时策略、策略端口使能向量以及优先级向量时,会将原始的选择算法改变为基于优先级向量进行优先级选择的算法;
所述分支过滤器(22)通过其数据结构进行双线程的分支指令的检测和分支过滤;所述分支过滤器(22)的数据结构包括分支过滤表(221)和分支刷新表(222);所述分支过滤表(221)用于记录安全的分支指令的分配分支指令地址A x ;分支刷新表(222)用来记录有触发分支刷新的风险的分支指令的分配分支指令地址A x
所述分支过滤器(22)设置为:分线程检测分支指令的分配分支指令地址A x ,以及检测分支指令是否刷新;并根据分配分支指令地址A x ,来确定是否使能资源修改策略且改变该分支指令所对应的线程的优先级;根据分配分支指令地址A x 以及分支指令的刷新情况确定是否分配或者释放分支过滤表(221)、以及是否分配或者释放分支刷新表(222);并根据是否使能资源修改策略和改变的线程的优先级生成对应的策略使能信号和优先级向量;
其中,策略使能信号为0时表示不使能资源修改策略,所述策略使能信号为1时表示使能资源修改策略;
策略端口使能向量由所有端口的策略使能信号按照端口顺序排布而形成;
优先级向量包括所有线程的线程优先级Prior x ,线程优先级Prior x 是指第x个线程的优先级,线程号x为0或1;
端口分割策略是用于分配模块(10)所执行的端口绑定算法的策略调整,端口分割策略包括:如果某个类型的微操作能够在偶数个端口执行,则两个线程物理上分开使用,采用每个线程中的该类型的微操作与一半端口绑定;
端口分时策略用于调度器(20)所执行的调度选择算法的策略调整,端口分时策略包括:如果某个类型的微操作只能够在一个端口上执行,则两个线程时间上分开使用;
如果某个类型的微操作能够在大于1个的奇数个端口执行,则奇数个端口中,偶数个线程物理上先采用端口分割策略以使得每个线程的一部分微操作分别与其中一半端口绑定,剩下的一个端口采用端口分时策略;
多端口执行的微操作所默认采用的公平性算法采用基于Round-Robin原则的循环选择算法;所述端口分割算法是指多个端口资源平分给两个线程使用;
原始的选择算法默认采用Ping-Pong原则;在基于优先级向量进行优先级选择的算法中,优先基于优先级进行高优先级选择,在优先级相同的情况下再按照年龄矩阵的选择算法进行选择,所述年龄矩阵位于所述调度器(20)中。
7.根据权利要求6所述的基于分支过滤的执行端口时间信道安全防护方法,其特征在于,分支指令的刷新情况由分配模块(10)、执行单元(40)和提交单元(60)所提供的分支指令的分配分支指令地址A x 、分支刷新地址F x 和分支提交地址R x 来综合识别和判断;
其中,分支过滤表(221)的分配和释放的步骤包括:
步骤A1:将分支指令与分支过滤表(221)中的有效的数据项进行比较;其中,对于分支过滤表(221)中的有效的数据项,若所述分支指令的分配分支指令地址A x 同分支过滤表(221)中的任意一个数据项的地址相等,且该分支指令的分支刷新地址F x 同分支过滤表(221)中的各个数据项的地址均不相等时,则将其策略使能信号设置为0,分支指令的当前分配的线程的优先级不变;随后结束当前流程;其中,不产生分支刷新的分支指令的分支刷新地址F x 是无效地址;否则,继续执行步骤A2;
步骤A2:对于所述分支过滤表(221)中的有效的数据项,若所述分支指令的分配分支指令地址A x 同分支过滤表(221)的任意一个数据项的地址均不相等,且所述分支指令的分支刷新地址F x 同分支过滤表(221)中的任意一个数据项的地址均不相等时,则分支过滤表(221)的各个数据项中选择一个PLRU替换类型的数据项分配有效域为1,将该数据项的地址域设置为当前的分支指令的地址,将策略使能信号设置为1,分支指令的当前分配的线程的优先级降低;随后结束当前流程;否则,继续执行步骤A3;
步骤A3:若对于所述分支指令,其分支刷新地址F x 匹配分支过滤表(221)的某一数据项的地址域,则将对应分支过滤表的数据项的有效域设置为0,策略使能信号设置为1,当前产生分支刷新线程的线程优先级降低;随后结束当前流程;否则,继续执行步骤A4;
步骤A4:将策略使能信号设置为1,将当前的线程的优先级降低;
分支刷新表(222)的分配和释放的步骤包括:
步骤B1:将分支指令与分支刷新表(222)中的有效的数据项进行比较;其中,对于分支刷新表(222)中的有效的数据项,若所述分支指令的分配分支指令地址A x 同分支刷新表(222)中的任意一个数据项的地址相等,且所述分支指令的分支提交地址R x 同分支刷新表(222)的任意一个数据项的地址均不相等时,策略使能信号设置为1,将分支指令的当前分配的线程的优先级降低,其中,产生分支刷新的分支指令的分支提交地址R x 是无效地址;随后结束当前流程;否则,继续执行步骤B2;
步骤B2:对于分支刷新表(222)中的有效的数据项,若所述分支指令的分支刷新地址F x 同分支刷新表(222)中的任意一个数据项的地址都不相等,且所述分支指令的分支提交地址R x 同分支刷新表(222)中的任意一个数据项的地址都不相等时,则在分支刷新表(222)的数据项中选择一个PLRU替换类型的数据项分配有效域为1,地址域为当前的分支刷新地址;同时,不使能资源修改策略且该分支指令所对应的线程的优先级不变;随后结束当前流程;否则,继续执行步骤B3;
步骤B3:对于分支刷新表(222)中的有效的数据项,若所述分支指令的分支刷新地址F x 同分支刷新表(222)中的任意一个数据项的地址都不相等,且所述分支指令的分支提交地址R x 同分支刷新表(222)中的任意一个数据项相等时,则将对应于所述分支指令的分支刷新表(222)的数据项的有效域设置为0,策略使能信号设置为0,当前的线程的优先级增加;随后结束当前流程;否则,继续执行步骤B4;
步骤B4:将策略使能信号设置为1,当前的线程的优先级维持不变。
CN202111088234.2A 2021-09-16 2021-09-16 一种基于分支过滤的执行端口时间信道安全防护系统及方法 Active CN113742085B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111088234.2A CN113742085B (zh) 2021-09-16 2021-09-16 一种基于分支过滤的执行端口时间信道安全防护系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111088234.2A CN113742085B (zh) 2021-09-16 2021-09-16 一种基于分支过滤的执行端口时间信道安全防护系统及方法

Publications (2)

Publication Number Publication Date
CN113742085A CN113742085A (zh) 2021-12-03
CN113742085B true CN113742085B (zh) 2023-09-08

Family

ID=78739450

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111088234.2A Active CN113742085B (zh) 2021-09-16 2021-09-16 一种基于分支过滤的执行端口时间信道安全防护系统及方法

Country Status (1)

Country Link
CN (1) CN113742085B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108037994A (zh) * 2017-11-15 2018-05-15 中国电子科技集团公司第三十二研究所 一种支持异构环境下多核并行处理的调度机制
CN108710536A (zh) * 2018-04-02 2018-10-26 上海交通大学 一种多层次细粒度的虚拟化gpu调度优化方法
CN111813548A (zh) * 2020-06-30 2020-10-23 北京金山云网络技术有限公司 一种资源调度方法、装置、电子设备及存储介质
CN112000489A (zh) * 2020-07-29 2020-11-27 新华三大数据技术有限公司 一种Kafka数据处理的方法和服务器
CN113010310A (zh) * 2021-03-03 2021-06-22 中国工商银行股份有限公司 作业数据的处理方法、装置和服务器

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US10475150B2 (en) * 2017-09-29 2019-11-12 Intel Corporation GPU minimum latency dispatch for short-duration tasks
US20200104193A1 (en) * 2018-09-28 2020-04-02 Apple Inc. Port Groups

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108037994A (zh) * 2017-11-15 2018-05-15 中国电子科技集团公司第三十二研究所 一种支持异构环境下多核并行处理的调度机制
CN108710536A (zh) * 2018-04-02 2018-10-26 上海交通大学 一种多层次细粒度的虚拟化gpu调度优化方法
CN111813548A (zh) * 2020-06-30 2020-10-23 北京金山云网络技术有限公司 一种资源调度方法、装置、电子设备及存储介质
CN112000489A (zh) * 2020-07-29 2020-11-27 新华三大数据技术有限公司 一种Kafka数据处理的方法和服务器
CN113010310A (zh) * 2021-03-03 2021-06-22 中国工商银行股份有限公司 作业数据的处理方法、装置和服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Sajith Kalathingal."DITVA: Dynamic Inter-Thread Vectorization Architecture".《Journal of Parallel and Distributed Computing》.2018,第120卷第267-281页. *

Also Published As

Publication number Publication date
CN113742085A (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
Yu et al. Speculative taint tracking (stt) a comprehensive protection for speculatively accessed data
Sakalis et al. Efficient invisible speculative execution through selective delay and value prediction
Kim et al. Hardware-based always-on heap memory safety
Reinman et al. Predictive techniques for aggressive load speculation
Xu et al. Gpuguard: Mitigating contention based side and covert channel attacks on gpus
US8458444B2 (en) Apparatus and method for handling dependency conditions between floating-point instructions
US7383393B2 (en) System and method for cooperative prefetching
US11163576B2 (en) Systems and methods for invisible speculative execution
Taram et al. {SecSMT}: Securing {SMT} processors against {Contention-Based} covert channels
CN110032867B (zh) 一种主动切断隐蔽通道应对缓存侧信道攻击的方法及系统
Fustos et al. SpectreRewind: Leaking secrets to past instructions
US11907369B2 (en) Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
Sakalis et al. Ghost loads: What is the cost of invisible speculation?
Ainsworth Ghostminion: A strictness-ordered cache system for spectre mitigation
Kim et al. WIR: Warp instruction reuse to minimize repeated computations in GPUs
Önder et al. Load and store reuse using register file contents
Sakalis et al. Understanding selective delay as a method for efficient secure speculative execution
Tran et al. Clearing the shadows: Recovering lost performance for invisible speculative execution through hw/sw co-design
Perais et al. Cost-effective speculative scheduling in high performance processors
CN113742085B (zh) 一种基于分支过滤的执行端口时间信道安全防护系统及方法
CN111241599B (zh) 一种处理器芯片安全依赖的动态识别及维护方法
Fiolhais et al. Transient-Execution Attacks: A Computer Architect Perspective
Chappell et al. Microarchitectural support for precomputation microthreads
Sakalis et al. Seeds of SEED: Preventing priority inversion in instruction scheduling to disrupt speculative interference

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant