发明名称 动态二进制翻译器中热路径的多核多线程构建方法
摘要 本发明提出了一种动态二进制翻译器中热路径的多核多线程构建方法。本发明首先将基本块翻译和目标代码的执行部分作为主线程,将构建热路径和翻译超级块部分作为子线程,变通用的动态二进制翻译器中独立的代码缓存结构为双代码缓存的设计方式,利用哈希表函数统一管理这两个代码缓存,使主线程和子线程在数据查询和更新过程中可以并行进行,然后结合硬亲和力指定主线程和子线程工作在多核处理器的不同核上,并用连续的一段内存空间和两个计数器来模拟一段队列,在机器语言级和高级语言级进行两线程间的通信。本发明具有高并行性和低同步开销的优良特质,为今后动态二进制翻译器的优化工作提供了新的思路和新的框架。
申请公布号 CN101477472A 申请公布日期 2009.07.08
申请号 CN200910045058.7 申请日期 2009.01.08
申请人 上海交通大学 发明人 管海兵;梁阿磊;李晓龙;郑德恩;顾静辉
分类号 G06F9/45(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F9/45(2006.01)I
代理机构 上海交达专利事务所 代理人 毛翠莹
主权项 1、一种动态二进制翻译器中热路径的多核多线程构建方法,其特征在于包括如下步骤:1)将基本块翻译和目标代码的执行部分作为主线程,将构建热路径和翻译超级块部分作为子线程,主线程和子线程并行工作,构成多线程的动态二进制翻译器系统优化架构;2)采用双目标代码缓存架构,一个缓存用于存放主线程翻译得到的目标代码基本块,另一个缓存用于存放由子线程重构热路径后得到的目标代码超级块,然后通过全局的哈希表函数来控制主线程和子线程对这两个缓存的读和更新操作;3)使用硬亲和力将主线程分配在多核处理器的0号核上执行,将子线程分配在1号核上执行;4)主线程利用生产者计数器作为索引值,在机器语言级别对一段连续的内存空间不断地压入热点的入口地址,子线程利用消费者计数器作为索引值,在高级语言级别不停地从这段连续的内存空间去读取热点的入口地址,完成两线程间的通信。
地址 200240上海市闵行区东川路800号