[发明专利]改进推测多线程的方法及装置有效
申请号: | 201110136316.X | 申请日: | 2011-05-24 |
公开(公告)号: | CN102799414A | 公开(公告)日: | 2012-11-28 |
发明(设计)人: | 安虹;李颀;代文博;李功明;邓博斌;吴石磊 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 逯长明 |
地址: | 230026*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 改进 推测 多线程 方法 装置 | ||
技术领域
本发明涉及微处理器体系结构设计领域,更具体的说,是涉及一种改进TLS(Thread Level Speculation,推测多线程)性能的方法及装置。
背景技术
随着半导体工艺的发展,单个处理器芯片上也可放置多个计算核心,其采用的主要为如图1所示的片上CMP(Chip Multiprocessor,多核处理器)的设计,使多个线程可以并行运行,从而继续提高处理器性能。在基于CMP进行并行编程的过程中,一方面,程序员需要开发并行程序,为CMP提供多个可以同时运行的线程;另一方面,对于已有的串行程序,也需要对它们进行并行化。其中,在并行化已有的串行程序时,需要程序员手动创建多进程,对它们进行数据依赖分析,对于存在数据依赖关系的线程,需要插入通信和同步操作。采用上述方式并行化已由的串行程序不仅对程序员是巨大的负担,而且经手工并行化的程序的正确性和性能也无法保证。
因此,现有技术中采用TLS技术简化并行编程,同时保证程序性能和正确性而提出的。具体过程为:使用TLS从串行程序中提取多个线程,然后推测地并行运行它们时,并确保这些线程遵守原串行程序的串行语义。因此,TLS的推测线程可以被区分为“先驱线程”和“后继线程”,分别对应在原串行程序中先被执行的指令序列和后被执行的指令序列。在执行过程中,TLS通过硬件或者软件机制来记录线程间数据共享信息,动态检测数据依赖冲突。一旦检测到线程间发生数据依赖冲突,TLS自动回退并重启引发依赖冲突的线程。
其中,出现数据冲突的情况为:一个后继线程首先读取一个变量的值,然后该变量又被一个先驱线程改写。这是现有技术中典型的一个“读后写依赖冲突”,在这种情形下,后继线程读取的值是一个“旧值”,该读取旧值的动作叫做“未成熟读取”。为了解决这个冲突,如图2所示,TLS回退(squash)该后继线程,然后重新执行它,使其能够读取到正确的新值,以确保程序执行的正确性。
但是,在存在大量线程间数据依赖的程序中,发生依赖冲突的可能性非常大,因而也会发生大量的TLS推测线程回退。例如当使用TLS对SPEC 2000程序art进行8线程并行化时,其回退率为196%,而twolf程序的回退率高达375%。采用现有技术中的TLS方法,在回退的过程中不仅会放弃已经完成的正确操作,浪费了计算能力,而且在重新执行线程时,需要再次读取所需数据,即需要执行额外的访存操作;因而,采用现有技术中的LTS方法回退率过高,增加TLS的功耗和开销,进而降低了TLS的性能。
发明内容
有鉴于此,本发明提供了一种改进推测多线程性能的方法及装置,以克服现有技术中由于“未成熟读取”操作产生的线程回退,造成增加TLS的功耗、开销,降低TLS性能的问题。
为实现上述目的,本发明提供如下技术方案:
一种改进推测多线程性能的方法,包括:
获取网络消息中由先驱线程和后继线程发出的推测线程消息,所述推测线程消息包括访存请求消息;
区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息;
依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。
优选地,在获取网络消息中的推测线程消息之前,还包括:
获取网络消息中的非推测线程的消息,执行传送。
优选地,包括:
当不同的先驱线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述先驱线程的位置决定,所述先驱线程的位置越靠前优先级越高。
优选地,包括:
当不同的后继线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述后继线程的位置决定,所述后继线程的位置越靠前优先级越高。
优选地,依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写,具体过程为:
确认经片上网络中的路由器传送的访存请求消息的类型;
按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序;
依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写;
当对所述目录节点处的数据进行读或写未完成时,接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110136316.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于固态存储介质的存储系统及方法、冷热数据识别方法
- 下一篇:一种便捷扣件