基于硬件限制利用可调事务尺寸来动态优化代码的装置、方法和系统的制作方法

文档序号:6356217阅读:201来源:国知局
专利名称:基于硬件限制利用可调事务尺寸来动态优化代码的装置、方法和系统的制作方法
技术领域
本发明涉及处理器领域,尤其涉及处理器上的代码优化和执行。
背景技术
半导体处理和逻辑设计领域的进步已经允许集成电路器件上可存在的逻辑量增力口。以前,在单线程处理器上,曾允许诸如二进制代码之类的代码的优化过度主动,因为不害怕被其它执行线程影响。然而,计算机系统配置已经从系统中的单个或多个集成电路发展到存在于各集成电路上的多个核、多个硬件线程以及多个逻辑处理器。处理器或集成电路通常包括单个物理处理器管芯,其中处理器管芯可包括任意数量的核、硬件线程或逻辑处理器。集成电路上处理元件(核、硬件线程和逻辑处理器)数量的不断增加使得能够并行完成更多任务。这种从单线程处理器向更多并行的多线程执行的发展已经导致对代码优化的限制。
权利要求
1.一种包含代码的机器可读介质,所述代码在被机器执行时使所述机器执行以下操作: 标识将要优化的程序代码段; 确定所述程序代码段内的条件提交点; 响应于确定所述条件提交点,在所述条件提交点处插入条件提交指令;以及 响应于标识将要优化的程序代码段,优化所述程序代码段。
2.如权利要求1所述的机器可读介质,其特征在于,标识将要优化的程序代码段基于程序代码的动态概况分析,且其中确定条件提交点基于从下组中选出的分配算法:在程序代码段内的循环开始处分配条件提交点;基于动态概况分析在执行路径上分配条件提交点;以及在已知独占硬件资源的执行路径上分配条件提交点。
3.如权利要求1所述的机器可读介质,其特征在于,条件提交指令包括条件分支指令,所述条件分支指令在被执行时继续程序代码段的执行作为第一分支或跳至条件提交位置作为第二分支。
4.如权利要求3所述的机器可读介质,其特征在于,所述代码在被机器执行时导致机器进一步执行以下操作: 在程序代码段的开始处插入第一区开始指令; 在程序代码段的结束处插入第一提交指令; 在条件提交代码位置插入第二提交指令; 在第二提交指令之后在条件提交代码位置插入第二区开始指令。
5.如权利要求4所述的机器可读介质,其特征在于,优化程序代码段包括动态优化代码段,而不使违背存储器排序的加载提升到高于第一和第二区开始指令,并且不使违背存储器排序的存储下沉到第一和第二提交指令之下。
6.一种用于在运行时间中动态优化代码的方法,包括: 标识将要优化的程序代码段; 响应于标识将要优化的程 序代码段,将程序代码段的至少一部分划界为原子区; 确定原子区内的条件提交点; 响应于确定所述条件提交点,在所述条件提交点处插入区检查指令;以及 响应于标识将要优化的程序代码段,优化所述程序代码段。
7.如权利要求6所述的方法,其特征在于,将程序代码段的至少一部分划界为原子区包括在代码段的部分的开始处插入开始事务指令,并且在代码段的部分的结束处插入结束事务指令。
8.如权利要求6所述的方法,其特征在于,优化程序代码段包括利用选自下组的优化技术优化代码段:部分冗余加载消除(PRLE)、部分死存储消除(PDSE)、循环优化、数据流优化、代码生成优化、边界检查消除、分支偏移优化、死代码消除和跳线程。
9.如权利要求6所述的方法,其特征在于,区检查指令包括条件分支指令,所述条件分支指令在被执行时询问硬件,并且其中条件分支指令响应于对硬件询问的预定响应,分支至未到期的区提交指令和区重新开始指令。
10.如权利要求6所述的方法,其特征在于,在程序代码段的部分内的循环开始处完成插入区检查指令,并且在循环的每次迭代后执行区检查指令。
11.一种包含代码的机器可读介质,所述代码在被机器执行时使所述机器执行以下操作: 执行包括动态优化程序代码的事务; 确定支持事务的执行的硬件单元是否包括足够的可用资源,以在事务结束之前的区检查点处完成事务区;以及 响应于确定支持事务执行的硬件单元将用尽资源,在区检查点提交所述事务。
12.如权利要求11所述的机器可读介质,还包括在区检查点提交所述事务之后开始新事务。
13.如权利要求11所述的机器可读介质,其特征在于,所述硬件单元包括选自下组的单元:存储缓冲器、加载缓冲器、高速缓存存储器以及寄存器文件。
14.如权利要求11所述的机器可读介质,其特征在于,所述硬件单元包括高速缓存存储器,其中确定支持事务执行的硬件单元是否包括足够的可用资源以完成事务区包括:确定完成事务区要触及的预期高速缓存线的数量;确定高速缓存存储器中可用的条目的数量;将预期的高速缓存线的数量与可用高速缓存线的数量进行比较;以及基于将预期的高速缓存线的数量与可用高速缓存线的数量进行比较来确定支持事务执行的高速缓存存储器包括足够的可用资源以完成事务区。
15.如权利要求14所述的机器可读介质,其特征在于,确定完成区要触及的预期高速缓存线的数量基于插入在事务中的编译器提示,所述编译器提示基于事务区的先前执行的动态概况分析。
16.一种包含代码的机器可读介质,所述代码在被机器执行时使所述机器执行以下操作: 标识将要优化的程序代码段; 确定所述程序代码段内的推测检查点; 响应于确定所述推测检查点,在推测检查点处插入推测检查点代码;以及 响应于标识将要优化的程序代码段,优化所述程序代码段。
17.如权利要求16所述的机器可读介质,其特征在于,标识将要优化的程序代码段基于程序代码的动态概况分析,并且其中确定推测检查点基于选自下组的分配算法:在程序代码段内的循环开始处、在程序代码段内的循环的循环返回边缘处分配推测检查点;基于动态概况分析在执行路径上分配推测检查点;在已知独占硬件资源的执行路径上分配推测检查点;以及在执行路径分配推测检查点以避免用尽推测硬件资源。
18.如权利要求16所述的机器可读介质,其特征在于,所述代码在被机器执行时导致机器进一步执行以下操作:在程序代码段处插入开始原子区指令,以及在程序代码段处插入结束原子区指令。
19.如权利要求16所述的机器可读介质,其特征在于,推测检查点代码包括推测检查点操作,所述推测检查点操作在被执行时导致机器在检查点存储结构中设定推测寄存器文件和存储缓冲器的检查点,并且其特征在于,所述代码在被机器执行时导致机器进一步执行响应于存储缓冲器在代码段的执行期间用尽资源而插入固定代码从而退回到推测寄存器文件的检查点的操作。
20.如权利要求16所述的机器可读介质,其特征在于,优化程序代码段包括利用选自下组的优化技术优化代码段:部分冗余加载消除(PRLE)、部分死存储消除(PDSE)、循环优化、数据流优化、代码生成优化、边界检查消除、分支偏移优化、死代码消除和跳线程。
21.—种方法,包括: 标识将要优化的程序代码段; 响应于标识将要优化的程序代码段,将程序代码段的至少一部分划界为原子区; 在所述原子区内确定推测检查点; 响应于确定推测检查点,在推测检查点处插入推测检查点代码;以及 响应于标识将要优化的程序代码段,优化所述程序代码段。
22.如权利要求21所述的方法,其特征在于,将程序代码段的至少一部分划界为原子区包括:在代码段的部分的开始处插入开始事务指令,并且在代码段的部分的结束处插入结束事务指令。
23.如权利要求21所述的方法,其特征在于,所述推测检查点代码包括推测检查点操作,所述推测检查点操作在被执行时导致机器在推测检查点寄存器文件中设定推测寄存器文件的检查点并且在推测高速缓存中设定存储缓冲器的检查点,并且其中所述代码在被机器执行时导致机器进一步执行响应于在代码段的部分的执行期间推测高速缓存或存储缓冲器用尽资源而插入固定代码从而退回到推测检查点寄存器文件中保持的推测寄存器文件的检查点的操作。
24.如权利要求23所述方法,其特征在于,在代码段的部分的执行期间存储缓冲器用尽资源包括:在代码段的部分的执行期间存储缓冲器不包括任何可用条目,并且其中所述推测高速缓存用尽资源包括:在机器执行推测检查点操作时,推测高速缓存不包括足够的可用条目来保持来自存储缓冲器的条目。
25.如权利要求21所述的方法,其特征在于,优化程序代码段包括利用选自下组的优化技术优化代码段:部分冗余加载消除(PRLE)、部分死存储消除(PDSE)、循环优化、数据流优化、代码生成优化、边界检查消除、分支偏移优化、死代码消除和跳线程。
26.一种包含代码的机器可读介质,所述代码在被机器执行时使所述机器执行以下操作: 执行包括动态优化程序代码的事务; 在事务内的检查点处设定推测寄存器文件的检查点进入检查点寄存器文件; 确定支持执行事务的硬件单元将用尽资源; 响应于确定硬件单元将用尽资源,将检查点寄存器文件恢复到推测寄存器文件并且转储清除存储缓冲器。
27.如权利要求26所述的机器可读介质,其特征在于,在事务内的检查点处设定推测寄存器文件的检查点进入检查点寄存器文件响应于执行推测检查点指令,并且其中代码在被机器执行时导致机器进一步执行以下操作:在事务内的检查点处设定存储缓冲器的检查点进入推测高速缓存还响应于执行推测检查点指令。
28.如权利要求27所述的机器可读介质,其特征在于,硬件单元包括存储缓冲器,且其中确定支持执行事务的硬件单元将用尽资源包括:在遇到来自事务的存储和存储缓冲器不包括可用的存储缓冲器条目时确定存储缓冲器将用尽资源。
29.如权利要求28所述的机器可读介质, 其特征在于,硬件单元还包括推测高速缓存,且其中确定支持执行事务的硬件单元将用尽资源包括:在同样响应于执行推测检查点指令在事务内的检查点处设定存储缓冲器的检查点进入推测高速缓存时,响应于推测高速缓存不包括足够的可用条目来保持来自存储缓冲器的条目,确定推测高速缓存将用尽资源。
30.如权利要求26所述的机器可读介质,其特征在于,所述代码在被机器执行时导致机器进一步执行以下操作:响应于将检查点寄存器文件恢复到推测寄存器文件而执行事务区的区提交并且响应于确定硬件单元将用尽资源而转储清除存储缓冲器。
31.如权利要求26所述的机器可读介质,其特征在于,响应于确定硬件单元将用尽资源,将检查点寄存器文件恢复到推测寄存器文件并且转储清除存储缓冲器包括:确定硬件单元将用尽资源,执行代码以基于与硬件单元相关联的因素确定恢复至与检查点寄存器文件相关联的检查点而不是最近提交的点,以及响应于确定恢复至与检查点寄存器文件相关联的检查点,将检查点寄存器文件恢复到推测寄存器文件并且转储清除存储缓冲器。
32.—种设备,包括: 适于解码推测检查点指令以获得解码的推测检查点指令的解码逻辑; 适于执行所述解码的推测检查点指令的执行逻辑; 适于在将包括优化代码的软件线程的原子区的开始之前,保持与软件线程相关联的非推测值的第一存储器; 适于在原子区的执行期间并且在所述解码的推测检查点指令由执行逻辑执行之后,保持与软件线程相关联的推测值的第二存储器;以及 适于响应于执行逻辑执行所述解码的推测检查点指令而保持来自第二存储器的推测检查点值的第三存储器。
33.如权利要求32所述的设备,其特征在于,所述第一存储器包括非推测寄存器文件,所述第二存储器包括推测寄存器文件,且所述第三存储器包括推测检查点寄存器文件。
34.如权利要求33所述的设备,其特征在于,所述推测寄存器文件适于在原子区的执行期间并且在所述解码的推测检查点指令由执行逻辑执行之后,保持与软件线程相关联的推测值包括:在原子区的执行期间并且在所述解码的推测检查点指令由执行逻辑执行之后适于保持与软件线程相关联的推测体系结构状态值的推测寄存器文件,且其中推测检查点寄存器文件适于响应于执行逻辑执行所述解码的推测检查点指令保持来自推测寄存器文件的推测检查点值,包括:推测检查点寄存器文件适于在执行逻辑执行推测检查点指令后将与软件线程相关联的 体系结构值从推测寄存器文件加载到推测检查点寄存器文件作为推测检查点体系结构状态值。
35.如权利要求32所述的设备,其特征在于,响应于基于不足硬件资源而退回到与推测检查点指令相关联的检查点,将被保持在推测检查点寄存器文件中的推测检查点体系结构状态值被重新加载到推测寄存器文件中;响应于原子区的提交,保持在推测寄存器文件中的推测体系结构状态值被加载到非推测寄存器文件;并且响应于退回到原子区的开始,保持在非推测寄存器文件中的非推测值被加载到推测寄存器文件中。
36.如权利要求32所述的设备,其特征在于,所述第一存储器包括高速缓存存储器,所述第二存储器包括缓冲器,并且存储器包括推测高速缓存存储器。
37.如权利要求32所述的设备,其特征在于,所述缓冲器适于在原子区的执行期间并且在所述解码的推测检查点指令由执行逻辑执行之后,保持与软件线程相关联的推测值,包括:在原子区的执行期间并且在所述解码的推测检查点指令由执行逻辑执行之后适于保持与软件线程相关联的推测存储器值的缓冲器,且其中推测高速缓存存储器适于响应于执行逻辑执行所述解码的推测检查点指令保持来自缓冲器的推测检查点值,包括:推测高速缓存存储器,适于在执行逻辑执行推测检查点指令之后将与软件线程相关联的推测存储器值加载从缓冲器加载到推测高速缓存存储器以作为推测检查点存储器值。
38.如权利要求32所述的设备,其特征在于,响应于原子区的提交,所述缓冲器和推测高速缓存适合于将推测存储器值和推测检查点存储器值加载到高速缓存存储器;响应于退回到与推测检查点指令相关联的检查点,所述缓冲器适于被转储清除;并且响应于退回到原子区之前的点,所述缓冲器和推测高速缓存适于被转储清除。
39.如权利要求32所述的设备,其特征在于,所述解码逻辑、执行逻辑、第一存储器、第二存储器、和第三存储器被包含在多处理元件微处理器中,所述多处理元件微处理器适于耦合在计算机系统中,所述计算机系统包括选自下组的系统存储器:同步动态随机存取存储器(SDRAM)、只读存储器(ROM)和闪存。
40.一种设备,包括: 适于解码推测检查点指令以获得解码的推测检查点指令的解码逻辑; 适于执行所述解码的推测检查点指令的执行逻辑; 适于在原子区的执行期间保持推测更新的存储缓冲器; 适于响应于执行逻辑执行所述解码的推测检查点指令来设定来自存储缓冲器的推测更新的检查点的推测高速缓存;以及 适于在原子区的开始前保持非推测值的非推测高速缓存,其中响应于原子区的提交来自推测高速缓存的推测更新被加载到非推测高速缓存。
41.如权利要求40所述的设备,其特征在于,所述推测高速缓存和存储缓冲器还适于响应于原子区的提交利用推测更新来更新非推测高速缓存。
42.如权利要求40所述的设备,其特征在于,所述存储缓冲器还适于响应于退回到与推测检查点指令相关联的检查点或退回到原子区的开始而被转储清除。
43.如权利要求42所述的设备,其特征在于,所述推测高速缓存还适于响应于退回到原子区的开始而被转储清除。
44.如权利要求43所述的设备,其特征在于,所述推测高速缓存还适于响应于推测高速缓存不包括足够的条目来保持来自存储缓冲器的推测更新而指示没有足够的推测高速缓存条目可用于完成来自存储缓冲器的推测更新的检查点;并且存储缓冲器还适于响应于在遇到来自原子区的存储之后没有存储缓冲器条目可用而指示没有存储缓冲器条目可用,其中响应于推测高速缓存指示没有足够的推测高速缓存条目可用于完成来自存储缓冲器的推测更新的检查点或者存储缓冲器响应于在遇到来自原子区的存储后没有可用的存储缓冲器而指示没有存储缓冲器可用,发起退回到原子区内的检查点。
45.如权利要求42所述的设备,其特征在于,所述非推测高速缓存还适于响应于来自原子区的推测读取而向加载缓冲器提供条目。
46.如权利要求42所述的设备,其特征在于,非推测高速缓存适于来自较高级存储器的高速缓存线,所述较高级存储器选自下组:同步动态随机存取存储器(SDRAM)、只读存储器(ROM)和闪存。
全文摘要
在本发明中描述了用于条件提交和/或推测设定事务的检查点的装置和方法,这可潜在地导致事务的动态尺寸调整。在二进制代码的动态优化期间,事务被插入以提供存储排序保护,这使得动态优化器能更激进地优化代码。并且条件提交实现动态优化代码的更高效执行,同时试图防止事务用尽硬件资源。同时推测检查点实现在事务中止后的快速且高效的恢复。处理器硬件适合于执行事务的动态尺寸调整,诸如包括识别条件提交指令、推测检查点指令或两者的解码器。并且处理器硬件还适合于响应于解码器这种指令执行用于支持条件提交或推测设定检查点的操作。
文档编号G06F9/30GK103140828SQ201180045933
公开日2013年6月5日 申请日期2011年9月26日 优先权日2010年9月25日
发明者C·王, W·刘, E·鲍林, M·小布莱特尼兹, 吴友峰, S·胡 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1