CN113076136A - 一种面向安全防护的分支指令执行方法和电子装置 - Google Patents
一种面向安全防护的分支指令执行方法和电子装置 Download PDFInfo
- Publication number
- CN113076136A CN113076136A CN202110443662.6A CN202110443662A CN113076136A CN 113076136 A CN113076136 A CN 113076136A CN 202110443662 A CN202110443662 A CN 202110443662A CN 113076136 A CN113076136 A CN 113076136A
- Authority
- CN
- China
- Prior art keywords
- instruction
- branch
- branch instruction
- program counter
- unconditional
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000007123 defense Effects 0.000 claims abstract description 14
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 10
- 230000009191 jumping Effects 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000001052 transient effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种面向安全防护的分支指令执行方法和电子装置,本发明面向安全防护的分支指令执行方法包括在取指阶段对取得的指令进行预译码确定指令的类型,若指令为非条件分支指令,则在取指阶段提前取出非条件分支指令的操作数并计算出非条件分支指令目标地址,并将非条件分支指令目标地址作为新的程序计数器值;且在下一个周期的取指阶段直接使用所述新的程序计数器值取值。本发明针对确定会跳转的非条件分支指令,采用了提前计算分支目标的方法,避免了跳转指令和调用返回指令被利用进行瞬态执行攻击,避免针对非条件分支指令与条件分支指令一样采用分支预测攻击防御技术带来的性能损失。
Description
技术领域
本发明属于处理器体系结构安全领域,具体涉及一种面向安全防护的分支指令执行方法和电子装置。
背景技术
分支预测技术是现代处理器用于提高程序执行效率的关键性技术,大大降低了由分支指令带来的流水线延迟,高准确度的分支预测可以给处理器带来极大的性能提升。但是近年来曝光出了幽灵(Spectre)系列的漏洞族,显示出典型现代处理器体系结构的设计存在严重的安全问题,对处理器用户产生了极大的安全威胁。幽灵漏洞族利用了对分支预测技术的误导训练,使得处理器推测执行攻击者精心构造的代码序列,非授权访问由各种处理器和操作系统安全机制保护的数据,进而利用高速缓存等侧信道泄露数据。
防御这类攻击最根本的是从源头进行防护,也就是防止被恶意触发推测执行,攻击者就无法成功瞬态执行非授权访问的代码。现有在源头层面对幽灵漏洞进行防御的措施为防止对所有分支指令进行分支预测,在硬件层面主要方法是禁用分支预测,在软件层面主要方法是编译时在分支指令后插入fence指令。这类防御措施等效于在处理器执行到分支指令后暂停流水线,等到确定分支指令分支结果后再执行,这样处理器相当于未采用分支预测技术,导致程序执行效率下降,牺牲了由分支预测技术带来的巨大性能提升,代价较大。然而,分支指令包括条件分支指令和非条件分支指令,非条件分支指令包括跳转(jump)指令和调用(call)返回(return)指令,其中非条件分支指令是确定会跳转的,不加区分对所有的分支指令应用防护措施也带来了一些无意义的性能损失。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种面向安全防护的分支指令执行方法和电子装置,本发明针对确定会跳转的非条件分支指令,采用了提前计算分支目标的方法,避免了跳转指令和调用返回指令被利用进行瞬态执行攻击,避免针对非条件分支指令与条件分支指令一样采用分支预测攻击防御技术带来的性能高损失。
为了解决上述技术问题,本发明采用的技术方案为:
一种面向安全防护的分支指令执行方法,包括:
1)在取指阶段对取得的指令进行预译码确定指令的类型,若指令为非条件分支指令,则跳转执行下一步;
2)在取指阶段提前取出非条件分支指令的操作数并计算出非条件分支指令目标地址,并将非条件分支指令目标地址作为新的程序计数器值;
3)在下一个周期的取指阶段直接使用所述新的程序计数器值取值。
可选地,步骤1)中在取指阶段对取得的指令进行预译码确定指令的类型包括:
1.1)在取指阶段根据程序计数器值从指令缓存中取指令;
1.2)对取得的指令进行预译码;
1.3)判断取得的指令是否为分支指令,若取得的指令为分支指令则跳转执行下一步;
1.4)判断取得的指令是否为分支指令中的非条件分支指令,若取得的指令为非条件分支指令则跳转执行步骤2)。
可选地,步骤1.3)中还包括若取得的指令不是分支指令时,直接将新的程序计数器值赋值为下一条指令的地址,并跳转执行步骤3)的步骤。
可选地,步骤1.3)中还包括若取得的指令为条件分支指令时,还包括针对条件分支指令采用指定的分支预测防御措施的步骤。
可选地,所述指定的分支预测防御措施包括:暂停流水线或插入fence指令,等待确定分支结果和条件分支指令目标地址;在确定分支结果和条件分支指令目标地址后,将条件分支指令目标地址作为新的程序计数器值,将流水线恢复,并跳转执行步骤3)。
可选地,步骤1.2)中对取得的指令进行预译码具体是指根据取得的指令中指定位置的编码与预设的编码规则表进行匹配以确定取得的指令的类型信息。
可选地,所述根据取得的指令中指定位置的编码与预设的编码规则表进行匹配以确定取得的指令的类型信息时,若取得的指令为分支指令、且指令编码符合非条件分支指令编码规范,则判定取得的指令为非条件分支指令;若取得的指令为分支指令、且指令编码符合条件分支指令编码规范,则判定取得的指令为条件分支指令;否则判定取得的指令不是分支指令;步骤2)中在取指阶段提前取出非条件分支指令的操作数并计算出分支目标地址具体是指针对非条件分支指令的操作数中的立即数字段通过位组合得到立即数,对该立即数与当前的程序计数器值做特定于平台的运算后作为出分支目标地址。
此外,本发明还提供一种面向安全防护的分支指令执行装置,包括:
指令缓存,用于缓存取得的指令;
预译码器,用于在取指阶段对取得的指令进行预译码确定指令的类型;
目标地址计算模块,用于在预译码器确定指令为非条件分支指令时在取指阶段提前取出非条件分支指令的操作数并计算出分支目标地址,并将分支目标地址作为新的程序计数器值;
控制模块,用于在预译码器确定指令为条件分支指令时暂停流水线或插入fence指令,等待确定分支结果和分支目标,在确定分支结果和分支目标后,将下一条指令地址或跳转地址作为新的程序计数器值;
程序计数器选择装置,用于根据当前指令及其相应的跳转地址选择生成下一条指令的地址:当预译码器确定指令为非条件分支指令时,程序计数器选择装置将新的程序计数器值取值赋值为目标地址计算模块输出的非条件分支指令目标地址;当预译码器确定指令为条件分支指令时,程序计数器选择装置将新的程序计数器值取值赋值为控制模块输出的条件分支指令目标地址;当预译码器确定指令为非分支指令时,程序计数器选择装置直接将新的程序计数器值赋值为下一条指令的地址。
此外,本发明还提供一种电子装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述面向安全防护的分支指令执行方法的步骤。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述面向安全防护的分支指令执行方法的计算机程序。
和现有技术相比,本发明具有下述优点:本发明包括在取指阶段对取得的指令进行预译码确定指令的类型,若指令为非条件分支指令,则在取指阶段提前取出非条件分支指令的操作数并计算出非条件分支指令目标地址,并将非条件分支指令目标地址作为新的程序计数器值,且在下一个周期的取指阶段直接使用所述新的程序计数器值取值,本发明通过上述方式,针对确定会跳转的非条件分支指令,采用了提前计算分支目标的方法,避免了跳转指令和调用返回指令被利用进行瞬态执行攻击,避免针对非条件分支指令与条件分支指令一样采用分支预测攻击防御技术带来的性能高损失。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例装置的结构示意图。
图3为本发明实施例装置的执行流程示意图。
具体实施方式
下面通过具体实施案例和附图对本发明进行进一步详细阐述,此处描述的具体实施案例仅用于解释本发明而不用于限定本发明。
如图1所示,本实施例面向安全防护的分支指令执行方法包括:
1)在取指阶段对取得的指令进行预译码确定指令的类型,若指令为非条件分支指令,则跳转执行下一步;
2)在取指阶段提前取出非条件分支指令的操作数并计算出非条件分支指令目标地址,并将非条件分支指令目标地址作为新的程序计数器(PC)值;
3)在下一个周期的取指阶段直接使用所述新的程序计数器值取值。
本实施例中,步骤1)中在取指阶段对取得的指令进行预译码确定指令的类型包括:
1.1)在取指阶段根据程序计数器(PC)值从指令缓存中取指令;
1.2)对取得的指令进行预译码;
1.3)判断取得的指令是否为分支指令,若取得的指令为分支指令则跳转执行下一步;
1.4)判断取得的指令是否为分支指令中的非条件分支指令,若取得的指令为非条件分支指令则跳转执行步骤2)。
本实施例中,步骤1.3)中还包括若取得的指令不是分支指令时,直接将新的程序计数器值赋值为下一条指令的地址,并跳转执行步骤3)的步骤。
本实施例中,步骤1.3)中还包括若取得的指令为条件分支指令时,还包括针对条件分支指令采用指定的分支预测防御措施的步骤。
本实施例中,所述指定的分支预测防御措施包括:暂停流水线或插入fence指令,等待确定分支结果和条件分支指令目标地址;在确定分支结果和条件分支指令目标地址后,将条件分支指令目标地址作为新的程序计数器值,将流水线恢复,并跳转执行步骤3)。本实施例中,步骤1.2)中对取得的指令进行预译码具体是指根据取得的指令中指定位置的编码与预设的编码规则表进行匹配以确定取得的指令的类型信息。
本实施例中,根据取得的指令中指定位置的编码与预设的编码规则表进行匹配以确定取得的指令的类型信息时,若取得的指令为分支指令、且指令编码符合非条件分支指令编码规范,则判定取得的指令为非条件分支指令;若取得的指令为分支指令、且指令编码符合条件分支指令编码规范,则判定取得的指令为条件分支指令;否则判定取得的指令不是分支指令;步骤2)中在取指阶段提前取出非条件分支指令的操作数并计算出分支目标地址具体是指针对非条件分支指令的操作数中的立即数字段通过位组合得到立即数,对该立即数与当前的程序计数器值做特定于平台的运算后作为出分支目标地址。
需要说明的是,本实施例方法不依赖于某一种特定的指令集体系结构,满足符合条件的所有指令集体系结构,本实施例方法适用于任何可以通过指令编码区分出条件分支指令和非条件分支指令并直接计算出结果的指令集体系结构,具体表现在:
I、fence指令(同步屏障指令)也称内存屏障指令或内存栅栏指令,是CPU在进行访存操作时的一个同步点,此同步点之前的所有读/写/读写操作都完成执行后,才可以开始执行此同步点之后的操作。fence指令在各个常规平台上都有相应的实现,比如,在x86中为sfence、lfence和mfence,在arm中为DMB、DSB、ISB,在risc-v中为fence和fence.i。
II、将指令集划分为三类指令,即非分支指令、可直接确定分支结果的非条件分支指令和其他分支指令,具体的划分与特定的指令集体系结构相关,但都可以直接通过对指令进行简单预译码来实现指令类别的识别。因此,步骤1)在取指阶段对取得的指令进行预译码确定指令的类型时,可根据不同指令集的编码规范实现相应的预译码器进行指令的识别和划分。以RISC-V指令集的指令为例:取得的指令为RISC-V指令集的指令时,根据取得的指令中指定位置的编码与预设的编码规则表进行匹配以确定取得的指令的类型信息时,若取得的指令为分支指令、且指令后七位编码为1101111,则判定取得的指令为非条件分支指令;若取得的指令为分支指令、且指令后七位编码为1100011,则判定取得的指令为条件分支指令;否则判定取得的指令不是分支指令。其他指令集也是如此,可以根据编码规范实现相应的预译码器进行指令的识别和划分。
III、在取指阶段对可以直接确定分支结果的非条件分支指令的分支目标地址进行计算,具体的计算方法也和特定的指令集体系结构相关,同样也可以通过简单的译码和计算得到目标地址,因此步骤2)在取指阶段提前取出非条件分支指令的操作数并计算出非条件分支指令目标地址可依据相关指令集规范实现对应的目标地址计算。以RISC-V指令集为例,直接跳转指令JAL的目标跳转地址为符号拓展的20位立即数,该立即数可以从指令的立即数字段通过位组合得到,然后对该立即数进行符号位拓展,最后再和PC值相加即可得到目标跳转地址,因此取得的指令为RISC-V指令集的指令时,步骤2)中在取指阶段提前取出非条件分支指令的操作数并计算出分支目标地址具体是指针对非条件分支指令的操作数中的立即数字段通过位组合得到立即数,并对该立即数进行符号位拓展得到符号拓展后的20位立即数,将符号拓展后的20位立即数与当前的程序计数器值相加后作为出分支目标地址。其他指令集也有类似的指令集编码规范,可以依据相关指令集规范实现对应的目标地址计算模块。
综上所述,鉴于现有技术中存在的性能问题,本实施例面向安全防护的分支指令执行方法在取指阶段对从指令高速缓存中取出的指令进行预译码,判断该条指令是条件分支指令还是非条件分支指令;对于条件分支指令,沿用现有防御措施的做法,暂停流水线或插入fence指令,等待确定分支结果和分支目标;对于条件分支指令,确定分支结果和分支目标后,将下一条指令地址或跳转地址作为新的PC值,并将流水线恢复;对于非条件分支指令,在取指阶段进行预译码的同时,取出相应操作数计算出跳转地址;对于通过非条件分支指令计算出的分支地址,将目标地址作为新的PC值,在下一周期的取指阶段使用该PC值取指。本实施例面向安全防护的分支指令执行方法不同于现有攻击触发层面进行防护的防御措施,而是针对几类分支指令的不同特点,通过区分执行条件分支指令和非条件分支指令的执行,对条件分支指令沿用现有防御措施,而对非条件分支指令采用提前计算分支目标的方法,从而避免了跳转指令和调用返回指令被利用进行瞬态执行攻击,有效降低了现有防护措施带来的性能损失,性能损失更小。
如图2所示,本实施例面向安全防护的分支指令执行装置包括:
指令缓存,用于缓存取得的指令;
预译码器,用于在取指阶段对取得的指令进行预译码确定指令的类型;
目标地址计算模块,用于在预译码器确定指令为非条件分支指令时在取指阶段提前取出非条件分支指令的操作数并计算出分支目标地址,并将分支目标地址作为新的程序计数器值;
控制模块,用于在预译码器确定指令为条件分支指令时暂停流水线或插入fence指令,等待确定分支结果和分支目标,在确定分支结果和分支目标后,将下一条指令地址或跳转地址作为新的程序计数器值;
程序计数器选择装置,用于根据当前指令及其相应的跳转地址选择生成下一条指令的地址:当预译码器确定指令为非条件分支指令时,程序计数器选择装置将新的程序计数器值取值赋值为目标地址计算模块输出的非条件分支指令目标地址;当预译码器确定指令为条件分支指令时,程序计数器选择装置将新的程序计数器值取值赋值为控制模块输出的条件分支指令目标地址;当预译码器确定指令为非分支指令时,程序计数器选择装置直接将新的程序计数器值赋值为下一条指令的地址。
如图3所示,本实施例面向安全防护的分支指令执行装置的执行步骤包括:S1)当从指令高速缓存中取出一条指令之后,将该指令送入预译码模块,依据与相关指令集对应编码规范,识别该指令的类别。S2)如果该指令不是分支指令,则直接向PC选择模块发送选择信号,将PC+4(下一跳指令的地址)送入指令高速缓存读取模块读取下一条指令。S3)如果该指令是一条可以直接确定分支结果的分支指令,则将预译码得到的值比如立即数偏移量等送入目标地址计算模块。目标地址计算模块依据特定指令集中该指令目标地址的计算方法计算得到目标地址,然后向PC选择模块传输地址。同时预译码模块也向PC选择模块发送选择信号,将相应的分支目标地址发送给指令高速缓存读取模块读取下一条指令。S4)如果该指令是一条不可以直接确定分支结果的分支指令,则预译码模块向控制模块发送信号,控制模块收到信号后向指令高速缓存发送暂停取指的请求,流水线暂停取指。同时该指令进入后续流水线,在若干的时钟周期后,该指令的分支结果和分支目标地址已经得到,从其他流水段转发回取指段的PC选择模块。同时取指段收到确定的目标地址后,预译码模块给出的PC选择信号使得PC选择模块将相应的目标地址送入指令高速缓存,同时控制模块发送信号恢复流水线的取值。,本实施例面向安全防护的分支指令执行装置通过对于不同类型的分支指令采取不同的措施,以提前确定分支结果的方法保证非条件分支指令之后的指令确定性地执行,避免了非条件分支指令被利用实施瞬态执行攻击,在确保了处理器安全性的同时,降低了当前防御措施带来的性能损失。
此外,本实施例还提供一种电子装置,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行前述面向安全防护的分支指令执行方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述面向安全防护的分支指令执行方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种面向安全防护的分支指令执行方法,其特征在于,包括:
1)在取指阶段对取得的指令进行预译码确定指令的类型,若指令为非条件分支指令,则跳转执行下一步;
2)在取指阶段提前取出非条件分支指令的操作数并计算出非条件分支指令目标地址,并将非条件分支指令目标地址作为新的程序计数器值;
3)在下一个周期的取指阶段直接使用所述新的程序计数器值取值。
2.根据权利要求1所述的面向安全防护的分支指令执行方法,其特征在于,步骤1)中在取指阶段对取得的指令进行预译码确定指令的类型包括:
1.1)在取指阶段根据程序计数器值从指令缓存中取指令;
1.2)对取得的指令进行预译码;
1.3)判断取得的指令是否为分支指令,若取得的指令为分支指令则跳转执行下一步;
1.4)判断取得的指令是否为分支指令中的非条件分支指令,若取得的指令为非条件分支指令则跳转执行步骤2)。
3.根据权利要求2所述的面向安全防护的分支指令执行方法,其特征在于,步骤1.3)中还包括若取得的指令不是分支指令时,直接将新的程序计数器值赋值为下一条指令的地址,并跳转执行步骤3)的步骤。
4.根据权利要求2所述的面向安全防护的分支指令执行方法,其特征在于,步骤1.3)中还包括若取得的指令为条件分支指令时,还包括针对条件分支指令采用指定的分支预测防御措施的步骤。
5.根据权利要求4所述的面向安全防护的分支指令执行方法,其特征在于,所述指定的分支预测防御措施包括:暂停流水线或插入fence指令,等待确定分支结果和条件分支指令目标地址;在确定分支结果和条件分支指令目标地址后,将条件分支指令目标地址作为新的程序计数器值,将流水线恢复,并跳转执行步骤3)。
6.根据权利要求2所述的面向安全防护的分支指令执行方法,其特征在于,步骤1.2)中对取得的指令进行预译码具体是指根据取得的指令中指定位置的编码与预设的编码规则表进行匹配以确定取得的指令的类型信息。
7.根据权利要求6所述的面向安全防护的分支指令执行方法,其特征在于,所述根据取得的指令中指定位置的编码与预设的编码规则表进行匹配以确定取得的指令的类型信息时,若取得的指令为分支指令、且指令编码符合非条件分支指令编码规范,则判定取得的指令为非条件分支指令;若取得的指令为分支指令、且指令编码符合条件分支指令编码规范,则判定取得的指令为条件分支指令;否则判定取得的指令不是分支指令;步骤2)中在取指阶段提前取出非条件分支指令的操作数并计算出分支目标地址具体是指针对非条件分支指令的操作数中的立即数字段通过位组合得到立即数,对该立即数与当前的程序计数器值做特定于平台的运算后作为出分支目标地址。
8.一种面向安全防护的分支指令执行装置,其特征在于,包括:
指令缓存,用于缓存取得的指令;
预译码器,用于在取指阶段对取得的指令进行预译码确定指令的类型;
目标地址计算模块,用于在预译码器确定指令为非条件分支指令时在取指阶段提前取出非条件分支指令的操作数并计算出分支目标地址,并将分支目标地址作为新的程序计数器值;
控制模块,用于在预译码器确定指令为条件分支指令时暂停流水线或插入fence指令,等待确定分支结果和分支目标,在确定分支结果和分支目标后,将下一条指令地址或跳转地址作为新的程序计数器值;
程序计数器选择装置,用于根据当前指令及其相应的跳转地址选择生成下一条指令的地址:当预译码器确定指令为非条件分支指令时,程序计数器选择装置将新的程序计数器值取值赋值为目标地址计算模块输出的非条件分支指令目标地址;当预译码器确定指令为条件分支指令时,程序计数器选择装置将新的程序计数器值取值赋值为控制模块输出的条件分支指令目标地址;当预译码器确定指令为非分支指令时,程序计数器选择装置直接将新的程序计数器值赋值为下一条指令的地址。
9.一种电子装置,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述面向安全防护的分支指令执行方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~7中任意一项所述面向安全防护的分支指令执行方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110443662.6A CN113076136A (zh) | 2021-04-23 | 2021-04-23 | 一种面向安全防护的分支指令执行方法和电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110443662.6A CN113076136A (zh) | 2021-04-23 | 2021-04-23 | 一种面向安全防护的分支指令执行方法和电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113076136A true CN113076136A (zh) | 2021-07-06 |
Family
ID=76618491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110443662.6A Pending CN113076136A (zh) | 2021-04-23 | 2021-04-23 | 一种面向安全防护的分支指令执行方法和电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076136A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114035850A (zh) * | 2021-12-08 | 2022-02-11 | 苏州睿芯集成电路科技有限公司 | 一种基于risc-v的用于直接跳转的预编码设计方法及系统 |
CN115694981A (zh) * | 2022-10-27 | 2023-02-03 | 中国人民解放军国防科技大学 | 一种防范边信道信息泄露的方法和装置 |
US11914978B2 (en) | 2021-03-23 | 2024-02-27 | Zhejiang Dahua Technology Co., Ltd. | Systems and methods for code optimization |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1349160A (zh) * | 2001-11-28 | 2002-05-15 | 中国人民解放军国防科学技术大学 | 流水线控制相关延迟消除方法 |
US20030233530A1 (en) * | 2002-06-14 | 2003-12-18 | International Business Machines Corporation | Enhanced instruction prefetch engine |
CN101770358A (zh) * | 2010-02-10 | 2010-07-07 | 北京龙芯中科技术服务中心有限公司 | 微处理器跳转指令分支预测处理系统和方法 |
CN102117198A (zh) * | 2009-12-31 | 2011-07-06 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
CN105260659A (zh) * | 2015-09-10 | 2016-01-20 | 西安电子科技大学 | 一种基于qemu的内核级代码重用型攻击检测方法 |
CN110069285A (zh) * | 2019-04-30 | 2019-07-30 | 海光信息技术有限公司 | 一种检测分支预测的方法及处理器 |
-
2021
- 2021-04-23 CN CN202110443662.6A patent/CN113076136A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1349160A (zh) * | 2001-11-28 | 2002-05-15 | 中国人民解放军国防科学技术大学 | 流水线控制相关延迟消除方法 |
US20030233530A1 (en) * | 2002-06-14 | 2003-12-18 | International Business Machines Corporation | Enhanced instruction prefetch engine |
CN102117198A (zh) * | 2009-12-31 | 2011-07-06 | 上海芯豪微电子有限公司 | 一种分支处理方法 |
CN101770358A (zh) * | 2010-02-10 | 2010-07-07 | 北京龙芯中科技术服务中心有限公司 | 微处理器跳转指令分支预测处理系统和方法 |
CN105260659A (zh) * | 2015-09-10 | 2016-01-20 | 西安电子科技大学 | 一种基于qemu的内核级代码重用型攻击检测方法 |
CN110069285A (zh) * | 2019-04-30 | 2019-07-30 | 海光信息技术有限公司 | 一种检测分支预测的方法及处理器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11914978B2 (en) | 2021-03-23 | 2024-02-27 | Zhejiang Dahua Technology Co., Ltd. | Systems and methods for code optimization |
CN114035850A (zh) * | 2021-12-08 | 2022-02-11 | 苏州睿芯集成电路科技有限公司 | 一种基于risc-v的用于直接跳转的预编码设计方法及系统 |
CN115694981A (zh) * | 2022-10-27 | 2023-02-03 | 中国人民解放军国防科技大学 | 一种防范边信道信息泄露的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113076136A (zh) | 一种面向安全防护的分支指令执行方法和电子装置 | |
US5265213A (en) | Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction | |
CN109508536B (zh) | 一种篡改程序流攻击的检测方法和装置 | |
CN111886580B (zh) | 用于控制分支预测的装置和方法 | |
US9170817B2 (en) | Reducing branch checking for non control flow instructions | |
CN113076090B (zh) | 一种面向边信道安全防护的循环语句执行方法及装置 | |
KR20090009955A (ko) | 블록-기반 브랜치 타겟 어드레스 캐시 | |
US6230261B1 (en) | Method and apparatus for predicting conditional branch instruction outcome based on branch condition test type | |
US7725695B2 (en) | Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch | |
JP2013080497A (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
JP3486690B2 (ja) | パイプライン方式プロセッサ | |
CN109783143B (zh) | 用于流水线指令流的控制方法和控制设备 | |
KR100276138B1 (ko) | 브랜치 패턴 필드를 가진 브랜치 이력 테이블을 구비한 디지탈프로세서 | |
US20090125728A1 (en) | Security method of system by encoding instructions | |
Wikner et al. | Phantom: Exploiting decoder-detectable mispredictions | |
CN112035170B (zh) | 用于分支预测器的方法和系统 | |
CN112596792B (zh) | 分支预测方法、装置、介质及设备 | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
CN111241599B (zh) | 一种处理器芯片安全依赖的动态识别及维护方法 | |
US7603545B2 (en) | Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching | |
US6289441B1 (en) | Method and apparatus for performing multiple branch predictions per cycle | |
US11397685B1 (en) | Storing prediction entries and stream entries where each stream entry includes a stream identifier and a plurality of sequential way predictions | |
CN110741343A (zh) | 多标记分支预测表 | |
CN115658151A (zh) | 一种面向安全防护的分支结果快速确定方法及装置 | |
US20040003213A1 (en) | Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210706 |
|
RJ01 | Rejection of invention patent application after publication |