[发明专利]编译器支持下的推测多线程内存数据同步执行方法及装置无效
申请号: | 201010160536.1 | 申请日: | 2010-04-30 |
公开(公告)号: | CN101833440A | 公开(公告)日: | 2010-09-15 |
发明(设计)人: | 赵银亮;王旭昊;韦远科;宋少龙 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 陆万寿 |
地址: | 710049*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种编译器支持下的推测多线程内存数据同步执行方法及其装置,能在程序运行时对选定的读写内存指令进行同步,降低读后写数据依赖违规发生的次数,提高多线程同步操作的整体加速比。在获取候选读/写指令对之后,在读指令前添加一条stall指令,并将读指令替换为同步读指令synload,在写指令后添加一条或多条forward指令,在写指令所在线程的线程发起指令spawn后添加一条synset指令;最后经汇编链接生成可执行文件加载后在模拟器上运行;多线程程序以同步的方式推测执行,得到运行结果,并获得较高的加速比。 | ||
搜索关键词: | 编译器 支持 推测 多线程 内存 数据 同步 执行 方法 装置 | ||
【主权项】:
一种编译器支持下的推测多线程内存数据同步执行方法,其特征在于,多线程程序实现内存数据同步包括以下步骤:1)程序由硬件线程划分器划分生成多线程汇编程序后,作为硬件程序剖析器的输入,并在其上运行;2)硬件程序剖析器在运行程序时统计内存数据依赖违规情况,并将统计结果信息反馈给同步编译模块;3)同步编译模块读取统计结果信息,通过计算同步代价获取进行多线程同步操作的候选读/写指令对;然后通过数据流分析之后,在读指令前添加一条stall指令,并将读指令替换为同步读指令synload,在写指令后添加一条或多条forward指令;在写指令所在线程的线程发起指令spawn后添加一条synset指令;最后经汇编链接生成可执行文件加载后在模拟器上运行;当同步子线程执行到stall指令时,停止执行后续指令,等待一段时间;直至对应的同步父线程执行完相应的写指令和forward指令,收到同步父线程发送的含有内存地址和写入数据的同步消息,再根据接收到的同步信息和此前同步子线程对同一内存地址的写入情况,对Sbuffer中的use_flag进行置位或复位,根据该标志位决定是否使用同步父线程发送来的数据,而后停止等待,继续执行后续指令;同步子线程在接收同步消息后的操作由synload指令的执行完成,同步父线程在写入数据后发送同步消息的操作由forward指令完成;4)多线程程序以同步的方式推测执行,模拟器输出程序运行的结果。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010160536.1/,转载请声明来源钻瓜专利网。