用于执行安全有条件加载和有条件存储操作的方法和设备的制造方法

文档序号:8269731阅读:209来源:国知局
用于执行安全有条件加载和有条件存储操作的方法和设备的制造方法
【技术领域】
[0001] 本公开一般关于涉及数据处理系统中有条件加载(conditional-load)和有条件 存储(conditional-store)操作的程序代码实例,并且尤其是关于在数据处理系统中不能 证明存储访问(storage access)是安全的条件下执行安全的有条件加载和有条件存储操 作。
【背景技术】
[0002] L0AD_0N_C0ND和ST0RE_0N_C0ND操作形式的有条件操作通常为对程序代码编译 器的分支预测器来说难以可靠预测的数据驱动的分支提供显著的性能优势。在有些情况 下,L0AD_0N_C0ND和ST0RE_0N_C0ND操作会对程序的性能提供相当大的改进,这是因为与 预测失误的分支相关联的损失被除去了。
[0003] 例如,利用以下代表L0AD_0N_C0ND操作的常见代码模式的代码片段:
[0004]
【主权项】
1. 一种用于在存储访问不能被证明是安全的时进行安全有条件操作的计算机实现的 方法,所述计算机实现的方法包括: 由增强编译器接收用于事务的部分源代码; 由所述增强编译器分析接收到的所述部分源代码; 确定由所述增强编译器分析的所述部分源代码是否是用于变换的候选; 响应于确定由所述增强编译器分析的所述部分源代码是用于变换的候选,变换被分析 的所述部分源代码W在变换后代码的第一部分中使用有条件操作,其中相应的有条件操作 使用硬件事务存储器在硬件中调用重试操作;及 在变换后代码的第二部分中添加指向原始代码部分的分支,其中所述分支的代码是包 含所述原始代码部分的恢复部分。
2. 如权利要求1所述的计算机实现的方法,还包括: 执行包括变换后代码的所述第一部分和变换后代码的所述第二部分的事务,其中变换 后代码的所述第二部分包括到恢复例程的分支W供在所述事务内推测性执行的变换后代 码的所述第一部分中的有条件操作失败时使用; 为所述有条件操作设置条件代码; 在所述有条件操作中的规定条件不为真时,利用所述有条件操作把位于第一存储位置 的值加载到第二存储位置中; 当所述事务失败时,分支离开所述事务到所述恢复例程; 确定所述分支是否被预测得不好; 响应于确定分支不是被预测得不好,执行所述原始代码部分;及 响应于确定分支是被预测得不好,分支离开所述恢复例程。
3. 如权利要求1所述的计算机实现的方法,其中变换被分析的所述部分源代码W在变 换后代码的第一部分中使用有条件操作还包括: 在所述变换后代码部分的第一部分中规定恢复例程。
4. 如权利要求1所述的计算机实现的方法,还包括: 当所述变换后代码的有条件操作失败时,使用所述原始代码部分作为所述分支的目 标,其中所述恢复部分使得能够从所述第一部分的失败的有条件操作得体地离开。
5. 如权利要求2所述的计算机实现的方法,其中为所述有条件操作设置所述条件代码 还包括: 保留原始源代码部分的条件设置代码。
6. 如权利要求2所述的计算机实现的方法,其中,响应于确定分支是被预测得不好,分 支离开所述恢复例程还包括: 使用*ptr作为所述有条件操作的自变量。
7. 如权利要求1所述的计算机实现的方法,其中变换被分析的所述部分源代码还包 括: 变换后代码在第一部分中包括所述变换后代码的有条件操作代码部分W代替无条件 操作,并且在第二部分中包括相应的恢复段,所述恢复段包括与所述有条件操作代码部分 相关联的原始分支代码。
8. -种用于在存储访问不能被证明是安全的时进行安全有条件操作的设备,所述设备 包括: 通信架构; 连接到所述通信架构的存储器,其中所述存储器包含计算机可执行程序代码; 连接到所述通信架构的通信单元; 连接到所述通信架构的输入/输出单元; 连接到所述通信架构的显示器;及 连接到所述通信架构的处理器单元,其中所述处理器单元执行所述计算机可执行程序 代码W指示所述设备: 由增强编译器接收用于事务的部分源代码; 由所述增强编译器分析接收到的所述部分源代码; 确定由所述增强编译器分析的所述部分源代码是否是用于变换的候选; 响应于确定由所述增强编译器分析的所述部分源代码是用于变换的候选,变换被分析 的所述部分源代码W在变换后代码的第一部分中使用有条件操作,其中相应的有条件操作 使用硬件事务存储器在硬件中调用重试操作;及 在变换后代码的第二部分中添加指向原始代码部分的分支,其中所述分支的代码是包 含所述原始代码部分的恢复部分。
9. 如权利要求8所述的设备,其中所述处理器单元执行所述计算机可执行程序代码W 进一步指示所述设备: 执行包括变换后代码的所述第一部分和变换后代码的所述第二部分的事务,其中变换 后代码的所述第二部分包括到恢复例程的分支W供在所述事务内推测性执行的变换后代 码的所述第一部分中的有条件操作失败时使用; 为所述有条件操作设置条件代码; 在所述有条件操作中的规定条件不为真时,利用所述有条件操作把位于第一存储位置 的值加载到第二存储位置中; 当所述事务失败时,分支离开所述事务到所述恢复例程; 确定所述分支是否被预测得不好; 响应于确定分支不是被预测得不好,执行所述原始代码部分;及 响应于确定分支是被预测得不好,分支离开所述恢复例程。
10. 如权利要求8所述的设备,其中所述处理器单元执行用于变换被分析的所述部分 源代码W在变换后代码的第一部分中使用有条件操作的所述计算机可执行程序代码W进 一步指示所述设备: 在所述变换后代码部分的第一部分中规定恢复例程。
11. 如权利要求8所述的设备,其中所述处理器单元执行所述计算机可执行程序代码 W进一步指示所述设备: 当所述变换后代码的有条件操作失败时,使用所述原始代码部分作为所述分支的目 标,其中所述恢复部分使得能够从所述第一部分的失败的有条件操作得体地离开。
12. 如权利要求9所述的设备,其中所述处理器单元执行所述计算机可执行程序代码 W进一步指示所述设备: 保留原始源代码部分的条件设置代码。
13.如权利要求9所述的设备,其中所述处理器单元执行用于响应于确定分支是被预 测得不好、分支离开所述恢复例程的计算机可执行程序代码W进一步指示所述设备: 使用*ptr作为所述有条件操作的自变量。
【专利摘要】本发明公开涉及用于执行安全有条件加载和有条件存储操作的方法和设备。提供了一种用于在存储访问不能被证明是安全的时进行安全有条件操作的计算机实现的方法的说明性实施例包括由增强编译器接收用于事务的部分源代码,由所述增强编译器分析接收到的所述部分源代码以确定由所述增强编译器分析的所述部分源代码是否是用于变换的候选。响应于确定由所述增强编译器分析的所述部分源代码是用于变换的候选,变换被分析的所述部分源代码以在变换后代码的第一部分中使用有条件操作,其中相应的有条件操作使用硬件事务存储器在硬件中调用重试操作,及在变换后代码的第二部分中添加指向原始代码部分的分支,其中所述分支的代码是包含所述原始代码部分的恢复部分。
【IPC分类】G06F9-44
【公开号】CN104598217
【申请号】CN201410601088
【发明人】M·米垂恩, V·沃克舒利
【申请人】国际商业机器公司
【公开日】2015年5月6日
【申请日】2014年10月30日
【公告号】CA2831711A1, US20150121049
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1