结合静态优化的动态二进制翻译方法

    公开(公告)号:CN101452396B

    公开(公告)日:2012-04-25

    申请号:CN200810207804.3

    申请日:2008-12-25

    Abstract: 本发明涉及一种结合静态优化的动态二进制翻译方法,在源程序第一遍执行时在翻译后的代码中插入探测指令,收集丰富的剖分信息,并在程序运行结束时将剖分信息和翻译后的目标代码持久化,利用保存的剖分信息对翻译后的目标代码在静态期间做各种优化,在此程序以后的运行中直接加载这些经过优化的目标代码。本发明提出的这种新的翻译模式,可以消除动态二进制翻译器运行时的profiling、优化开销,减少翻译开销,通过将优化放在静态执行,可以利用更加全面的剖分信息,并且不用顾忌优化的开销,提高了优化后代码的质量,从而使得程序的性能在第二遍及以后的运行中得到明显的提高。

    结合静态优化的动态二进制翻译方法

    公开(公告)号:CN101452396A

    公开(公告)日:2009-06-10

    申请号:CN200810207804.3

    申请日:2008-12-25

    Abstract: 本发明涉及一种结合静态优化的动态二进制翻译方法,在源程序第一遍执行时在翻译后的代码中插入探测指令,收集丰富的剖分信息,并在程序运行结束时将剖分信息和翻译后的目标代码持久化,利用保存的剖分信息对翻译后的目标代码在静态期间做各种优化,在此程序以后的运行中直接加载这些经过优化的目标代码。本发明提出的这种新的翻译模式,可以消除动态二进制翻译器运行时的profiling、优化开销,减少翻译开销,通过将优化放在静态执行,可以利用更加全面的剖分信息,并且不用顾忌优化的开销,提高了优化后代码的质量,从而使得程序的性能在第二遍及以后的运行中得到明显的提高。

    动态二进制翻译器中热路径的多核多线程构建方法

    公开(公告)号:CN101477472B

    公开(公告)日:2011-11-16

    申请号:CN200910045058.7

    申请日:2009-01-08

    Abstract: 本发明提出了一种动态二进制翻译器中热路径的多核多线程构建方法。本发明首先将基本块翻译和目标代码的执行部分作为主线程,将构建热路径和翻译超级块部分作为子线程,变通用的动态二进制翻译器中独立的代码缓存结构为双代码缓存的设计方式,利用哈希表函数统一管理这两个代码缓存,使主线程和子线程在数据查询和更新过程中可以并行进行,然后结合硬亲和力指定主线程和子线程工作在多核处理器的不同核上,并用连续的一段内存空间和两个计数器来模拟一段队列,在机器语言级和高级语言级进行两线程间的通信。本发明具有高并行性和低同步开销的优良特质,为今后动态二进制翻译器的优化工作提供了新的思路和新的框架。

    用于动态二进制翻译的对象管理方法

    公开(公告)号:CN101408848B

    公开(公告)日:2011-02-02

    申请号:CN200810203035.X

    申请日:2008-11-20

    Abstract: 本发明涉及一种用于动态二进制翻译的对象管理方法,采用多层次状态字方式,用连续的二进制位的值标识同类对象状态,其中每位二进制位标识一个对象的两个状态。用多个状态字层标识数量庞大的同类对象的状态,即将状态字层分成上区段和下区段,下区段包含标识对象状态的状态字集合,由多个状态字连续横向排列实现;上区段可以由多个状态字层实现,是标识状态字状态的状态字集合,每个状态字层都由多个状态字连续横向排列组成,再将每个状态字层纵向排列。本发明将对象的存储空间完全置于动态二进制翻译器的控制之下,运用连续空间存放同类对象,有效提高了翻译器对空间利用和对象操作的控制,降低性能损失。

    利用出入边关系的剖分信息构建超级块的方法

    公开(公告)号:CN101488096A

    公开(公告)日:2009-07-22

    申请号:CN200910046356.8

    申请日:2009-02-19

    Abstract: 本发明涉及一种利用出入边关系的剖分信息构建超级块的方法。在动态二进制翻译器中,采用动态记录每个基本块执行次数、基本块中出边与入边的对应关系,以及对应某条入边的各条出边的执行次数的方式,获取丰富的剖分信息,并以上述剖分信息为基础构建超级块,以优化程序性能。本发明获得的剖分信息更详尽准确,能真实反映一个基本块在整个源程序中的执行情况,降低了获得剖分信息过程所必须付出的执行性能损失,为后续的超级块构建过程提供了准确丰富的信息,使优化效果明显;机制灵活多变,可选择性的为动态构建和静态构建提供不同程度的信息,获得不同强度的优化效果。

    用于动态二进制翻译的对象管理方法

    公开(公告)号:CN101408848A

    公开(公告)日:2009-04-15

    申请号:CN200810203035.X

    申请日:2008-11-20

    Abstract: 本发明涉及一种用于动态二进制翻译的对象管理方法,采用多层次状态字方式,用连续的二进制位的值标识同类对象状态,其中每位二进制位标识一个对象的两个状态。用多个状态字层标识数量庞大的同类对象的状态,即将状态字层分成上区段和下区段,下区段包含标识对象状态的状态字集合,由多个状态字连续横向排列实现;上区段可以由多个状态字层实现,是标识状态字状态的状态字集合,每个状态字层都由多个状态字连续横向排列组成,再将每个状态字层纵向排列。本发明将对象的存储空间完全置于动态二进制翻译器的控制之下,运用连续空间存放同类对象,有效提高了翻译器对空间利用和对象操作的控制,降低性能损失。

    利用出入边关系的剖分信息构建超级块的方法

    公开(公告)号:CN101488096B

    公开(公告)日:2011-03-30

    申请号:CN200910046356.8

    申请日:2009-02-19

    Abstract: 本发明涉及一种利用出入边关系的剖分信息构建超级块的方法。在动态二进制翻译器中,采用动态记录每个基本块执行次数、基本块中出边与入边的对应关系,以及对应某条入边的各条出边的执行次数的方式,获取丰富的剖分信息,并以上述剖分信息为基础构建超级块,以优化程序性能。本发明获得的剖分信息更详尽准确,能真实反映一个基本块在整个源程序中的执行情况,降低了获得剖分信息过程所必须付出的执行性能损失,为后续的超级块构建过程提供了准确丰富的信息,使优化效果明显;机制灵活多变,可选择性的为动态构建和静态构建提供不同程度的信息,获得不同强度的优化效果。

    动态二进制翻译器中热路径的多核多线程构建方法

    公开(公告)号:CN101477472A

    公开(公告)日:2009-07-08

    申请号:CN200910045058.7

    申请日:2009-01-08

    Abstract: 本发明提出了一种动态二进制翻译器中热路径的多核多线程构建方法。本发明首先将基本块翻译和目标代码的执行部分作为主线程,将构建热路径和翻译超级块部分作为子线程,变通用的动态二进制翻译器中独立的代码缓存结构为双代码缓存的设计方式,利用哈希表函数统一管理这两个代码缓存,使主线程和子线程在数据查询和更新过程中可以并行进行,然后结合硬亲和力指定主线程和子线程工作在多核处理器的不同核上,并用连续的一段内存空间和两个计数器来模拟一段队列,在机器语言级和高级语言级进行两线程间的通信。本发明具有高并行性和低同步开销的优良特质,为今后动态二进制翻译器的优化工作提供了新的思路和新的框架。

Patent Agency Ranking