本发明专利技术公开了一种改进推测多线程技术性能的方法及装置,其方法为:获取网络消息中的推测线程消息,区分并排列由先驱线程和后继线程发出的访存请求消息的优先级顺序,先驱线程发出的访存请求消息的优先级高于后继线程发出的访存请求消息;依据确定的优先级顺序向目录节点传送对应的访存请求消息,完成对目录节点处的数据读或写。通过上述本发明专利技术公开的方法,区分推测线程消息中的访存请求的优先级,以及对程序中的多个线程的区分优先级,以便于按照优先级的顺序完成对目录节点处的数据读或写,从而避免线程回退,降低线程中的回退率和TLS的功耗,稳定并提高TLS性能。
【技术实现步骤摘要】
本专利技术涉及微处理器体系结构设计领域,更具体的说,是涉及一种改进TLS(Thread Level Speculation,推测多线程)性能的方法及装置。
技术介绍
随着半导体工艺的发展,单个处理器芯片上也可放置多个计算核心,其采用的主要为如图I所示的片上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性能的问题。为实现上述目的,本专利技术提供如下技术方案一种改进推测多线程性能的方法,包括获取网络消息中由先驱线程和后继线程发出的推测线程消息,所述推测线程消息包括访存请求消息;区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息;依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。优选地,在获取网络消息中的推测线程消息之前,还包括 获取网络消息中的非推测线程的消息,执行传送。优选地,包括当不同的先驱线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述先驱线程的位置决定,所述先驱线程的位置越靠前优先级越闻。优选地,包括当不同的后继线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述后继线程的位置决定,所述后继线程的位置越靠前优先级越闻。优选地,依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写,具体过程为确认经片上网络中的路由器传送的访存请求消息的类型;按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序;依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写;当对所述目录节点处的数据进行读或写未完成时,接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息;所述优先级较低的先驱线程或后继线程执行阻塞操作。优选地,还包括当无法区分承载于所述先驱线程或后继线程上的所述访存请求消息的优先级时,按照轮转调度策略执行所述推测线程消息的传送。优选地,基于优先级的包仲裁策略区分所述访存请求消息的优先级。一种改进推测多线程性能的装置,包括获取单元,用于获取网络消息中由先驱线程和后驱线程发出的推测线程消息,所述推测线程消息包括访存请求消息;区分排列单元,用于区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息;传送单元,用于依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。 优选地,所述传送单元包括确认模块,用于确认经片上网络中的路由器传送的访存请求消息的类型;排队模块,用于按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序;顺序传送模块,用于依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写;判断反馈模块,用于判断当前所述目录节点处的数据是否已完成读或写,当对所述目录节点处的数据进行读或写未完成时,接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息; 阻塞模块,用于所述优先级较低的先驱线程或后继线程执行阻塞操作。优选地,还包括轮转调度策略执行单元,用于当无法区分承载于所述先驱线程或后继线程上的所述访存请求消息的优先级时,按照轮转调度策略执行所述推测线程消息的传送。经由上述的技术方案可知,与现有技术相比,本专利技术公开了一种改进推测多线程性能的方法及装置,通过区分承载于多个线程上的推测线程消息中的不同的访存请求消息的优先级,并依据不同的访存请求消息各自对应的线程的优先级依次传送至目录节点处,以便于按照优先级的顺序完成对目录节点处的数据读或写。由于承载于多个线程中的先驱线程的访存请求消息优先级高于后继线程的访存请求消息,因而使对应先驱线程的访存请求消息可以更快的被传送,避免对应后继线程的访存请求消息先于先驱线程上的访存请求消息到达目录节点处,发生“未成熟读取”的操作,从而降低TLS系统中线程的回退率,甚至避免线程回退现象的发生,降低了 TLS的功耗和开销,同时稳定并提高了 TLS性能。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图I为现有技术中的CMP的结构示意图;图2为现有技术中TLS线程回退示意图;图3为本专利技术实施例一公开的一种推本文档来自技高网...
【技术保护点】
一种改进推测多线程性能的方法,其特征在于,包括:获取网络消息中由先驱线程和后继线程发出的推测线程消息,所述推测线程消息包括访存请求消息;区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息;依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。
【技术特征摘要】
【专利技术属性】
技术研发人员:安虹,李颀,代文博,李功明,邓博斌,吴石磊,
申请(专利权)人:中国科学技术大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。