CN102799414B - 改进推测多线程的方法及装置 - Google Patents
改进推测多线程的方法及装置 Download PDFInfo
- Publication number
- CN102799414B CN102799414B CN201110136316.XA CN201110136316A CN102799414B CN 102799414 B CN102799414 B CN 102799414B CN 201110136316 A CN201110136316 A CN 201110136316A CN 102799414 B CN102799414 B CN 102799414B
- Authority
- CN
- China
- Prior art keywords
- thread
- priority
- access request
- request message
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种改进推测多线程技术性能的方法及装置,其方法为:获取网络消息中的推测线程消息,区分并排列由先驱线程和后继线程发出的访存请求消息的优先级顺序,先驱线程发出的访存请求消息的优先级高于后继线程发出的访存请求消息;依据确定的优先级顺序向目录节点传送对应的访存请求消息,完成对目录节点处的数据读或写。通过上述本发明公开的方法,区分推测线程消息中的访存请求的优先级,以及对程序中的多个线程的区分优先级,以便于按照优先级的顺序完成对目录节点处的数据读或写,从而避免线程回退,降低线程中的回退率和TLS的功耗,稳定并提高TLS性能。
Description
技术领域
本发明涉及微处理器体系结构设计领域,更具体的说,是涉及一种改进TLS(ThreadLevelSpeculation,推测多线程)性能的方法及装置。
背景技术
随着半导体工艺的发展,单个处理器芯片上也可放置多个计算核心,其采用的主要为如图1所示的片上CMP(ChipMultiprocessor,多核处理器)的设计,使多个线程可以并行运行,从而继续提高处理器性能。在基于CMP进行并行编程的过程中,一方面,程序员需要开发并行程序,为CMP提供多个可以同时运行的线程;另一方面,对于已有的串行程序,也需要对它们进行并行化。其中,在并行化已有的串行程序时,需要程序员手动创建多进程,对它们进行数据依赖分析,对于存在数据依赖关系的线程,需要插入通信和同步操作。采用上述方式并行化已由的串行程序不仅对程序员是巨大的负担,而且经手工并行化的程序的正确性和性能也无法保证。
因此,现有技术中采用TLS技术简化并行编程,同时保证程序性能和正确性而提出的。具体过程为:使用TLS从串行程序中提取多个线程,然后推测地并行运行它们时,并确保这些线程遵守原串行程序的串行语义。因此,TLS的推测线程可以被区分为“先驱线程”和“后继线程”,分别对应在原串行程序中先被执行的指令序列和后被执行的指令序列。在执行过程中,TLS通过硬件或者软件机制来记录线程间数据共享信息,动态检测数据依赖冲突。一旦检测到线程间发生数据依赖冲突,TLS自动回退并重启引发依赖冲突的线程。
其中,出现数据冲突的情况为:一个后继线程首先读取一个变量的值,然后该变量又被一个先驱线程改写。这是现有技术中典型的一个“读后写依赖冲突”,在这种情形下,后继线程读取的值是一个“旧值”,该读取旧值的动作叫做“未成熟读取”。为了解决这个冲突,如图2所示,TLS回退(squash)该后继线程,然后重新执行它,使其能够读取到正确的新值,以确保程序执行的正确性。
但是,在存在大量线程间数据依赖的程序中,发生依赖冲突的可能性非常大,因而也会发生大量的TLS推测线程回退。例如当使用TLS对SPEC2000程序art进行8线程并行化时,其回退率为196%,而twolf程序的回退率高达375%。采用现有技术中的TLS方法,在回退的过程中不仅会放弃已经完成的正确操作,浪费了计算能力,而且在重新执行线程时,需要再次读取所需数据,即需要执行额外的访存操作;因而,采用现有技术中的LTS方法回退率过高,增加TLS的功耗和开销,进而降低了TLS的性能。
发明内容
有鉴于此,本发明提供了一种改进推测多线程性能的方法及装置,以克服现有技术中由于“未成熟读取”操作产生的线程回退,造成增加TLS的功耗、开销,降低TLS性能的问题。
为实现上述目的,本发明提供如下技术方案:
一种改进推测多线程性能的方法,包括:
获取网络消息中由先驱线程和后继线程发出的推测线程消息,所述推测线程消息包括访存请求消息;
区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息;
依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。
优选地,在获取网络消息中的推测线程消息之前,还包括:
获取网络消息中的非推测线程的消息,执行传送。
优选地,包括:
当不同的先驱线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述先驱线程的位置决定,所述先驱线程的位置越靠前优先级越高。
优选地,包括:
当不同的后继线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述后继线程的位置决定,所述后继线程的位置越靠前优先级越高。
优选地,依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写,具体过程为:
确认经片上网络中的路由器传送的访存请求消息的类型;
按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序;
依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写;
当对所述目录节点处的数据进行读或写未完成时,接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息;
所述优先级较低的先驱线程或后继线程执行阻塞操作。
优选地,还包括:
当无法区分承载于所述先驱线程或后继线程上的所述访存请求消息的优先级时,按照轮转调度策略执行所述推测线程消息的传送。
优选地,基于优先级的包仲裁策略区分所述访存请求消息的优先级。
一种改进推测多线程性能的装置,包括:
获取单元,用于获取网络消息中由先驱线程和后驱线程发出的推测线程消息,所述推测线程消息包括访存请求消息;
区分排列单元,用于区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息;
传送单元,用于依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。
优选地,所述传送单元包括:
确认模块,用于确认经片上网络中的路由器传送的访存请求消息的类型;
排队模块,用于按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序;
顺序传送模块,用于依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写;
判断反馈模块,用于判断当前所述目录节点处的数据是否已完成读或写,当对所述目录节点处的数据进行读或写未完成时,接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息;
阻塞模块,用于所述优先级较低的先驱线程或后继线程执行阻塞操作。
优选地,还包括:
轮转调度策略执行单元,用于当无法区分承载于所述先驱线程或后继线程上的所述访存请求消息的优先级时,按照轮转调度策略执行所述推测线程消息的传送。
经由上述的技术方案可知,与现有技术相比,本发明公开了一种改进推测多线程性能的方法及装置,通过区分承载于多个线程上的推测线程消息中的不同的访存请求消息的优先级,并依据不同的访存请求消息各自对应的线程的优先级依次传送至目录节点处,以便于按照优先级的顺序完成对目录节点处的数据读或写。由于承载于多个线程中的先驱线程的访存请求消息优先级高于后继线程的访存请求消息,因而使对应先驱线程的访存请求消息可以更快的被传送,避免对应后继线程的访存请求消息先于先驱线程上的访存请求消息到达目录节点处,发生“未成熟读取”的操作,从而降低TLS系统中线程的回退率,甚至避免线程回退现象的发生,降低了TLS的功耗和开销,同时稳定并提高了TLS性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有技术中的CMP的结构示意图;
图2为现有技术中TLS线程回退示意图;
图3为本发明实施例一公开的一种推测线程方法的流程图;
图4为现有技术中TLS线程负载不均衡的示意图;
图5为本发明实施例一公开的一种推测线程方法中传送访存请求的流程图;
图6为本发明实施例一公开的一种推测线程方法实施时的示意图a;
图7为本发明实施例一公开的一种推测线程方法实施时的示意图b;
图8为本发明实施例一公开的一种推测线程方法实施时的示意图c;
图9为本发明实施例公开的一种推测线程装置的结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:
TLS:ThreadLevelSpeculation,推测多线程;
NoC:Network-on-Chip,片上互联网;
CMP:ChipMultiprocessor,多核处理器;
VA:VirtualChannelArbitration,虚通道仲裁;
SA:SwitchArbitration,交换结构仲裁。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由背景技术可知,现有技术中所采用的TLS技术,在简化并行编程的过程中,从串行程序中提取多个线程,然后推测地并行运行时,按照原串行程序的串行语义进行执行,在执行的过程中,TLS通过硬件或者软件机制来记录线程间数据共享信息,动态检测数据依赖冲突,一旦检测到线程间发生数据依赖冲突,TLS自动回退并重启引发依赖冲突的线程。但是现有技术中的TLS的执行方式中存在大量线程间数据依赖的情况,容易在进行数据的读或写的过程中发生依赖冲突,从而导致发生大量的TLS推测线程回退产生大量的“未成熟读取”操作,增加TLS的功耗和开销,降低TLS性能的问题。
因此,本发明提供了一种改进TLS性能的方法,从CMP中的NoC的角度出发,实际上通过在NoC路由器中使用新的基于优先级的包仲裁策略,对程序中的多个线程,以及承载于不同线程上推测线程消息中的的访存请求消息进行优先级的区分,并将接收到的访存请求依据确定的优先级顺序依次传送至目录节点处,以便于按照优先级的顺序完成对目录节点处的数据读或写。由于,在区分的过程中承载于先驱线程的访存请求消息的优先级高于承载于后继线程的访存请求消息,因而使先驱线程的访存请求可以更快的被传送,避免后继线程的访存请求先于先驱线程上的访存请求到达目录节点处,发生“未成熟读取”的操作,从而降低TLS系统中线程的回退率,甚至避免线程回退现象的发生,降低了TLS的功耗和开销,同时稳定并提高了TLS性能的问题。具体内容通过以下实施例进行详细说明。
实施例一
请参阅附图3,为本发明公开一种改进推测多线程性能的方法的流程图,主要包括以下步骤:
步骤S101,获取网络消息中由先驱线程和后继线程发出的推测线程消息。
在所有进行传送的网络消息中,该网络消息主要包括非推测线程消息和推测线程消息,一般情况下非推测线程消息的优先级高于推测线程消息,因此,在执行步骤S101之前还包括:获取网络消息中的非推测线程的消息,并执行传送。
在优选传送属于非推测线程消息之后,执行步骤S101获取网络消息中的推测线程消息,该推测线程消息包括访存请求消息,该访存请求消息包括读数据请求和写数据请求。在TLS系统中,该推测线程消息由推测线程发出,该推测线程按照先驱线程和后继线程。在推测线程中,按照推测线程中的先驱线程和后继线程的前后位置,并通过基于NoC路由器的VA阶段和SA阶段,使用其中基于优先级的包仲裁策略。由于,实际上由推测线程中的先驱线程发出的为需要先被执行的指令序列,后继线程发出的为需要后被执行的指令序列。因此,需要对先驱线程和后继线程上的发出的访存请求消息进行优先级的区分。
步骤S102,区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息。
在执行步骤S102之后,对各个推测线程上发出的访存请求消息进行优先级的区分和排列,即区分并排列承载于先驱线程上的访存请求消息和后继线程上的访存请求消息的优先级顺序。其中,确认先驱线程发出的访存请求消息的优先级高于后继线程发出的访存请求消息。
步骤S103,依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。
通过执行上述步骤S101至步骤S103,区分并确定了需要经过NoC上的路由器传送的访存请求消息的优先级顺序,然后按照确定的优先级的顺序经NoC上的路由器向目录节点传送推测线程消息中的访存请求消息,即是实现经路由器选择先传送高优先级的访存消息,后传送低优先级的访存消息,使先驱线程的访存请求消息先于后继线程的访存请求消息到达目录节点。
在现有技术中并不存在按照优先级的顺序传送先驱线程和后继线程的访存请求消息,存在后继线程传送的访存请求消息先于先驱线程中的访存请求消息到达目录节点处,如果后继线程中的访存请求消息为读数据请求,而先驱线程中的访存请求消息为写数据请求,从而引发后继线程的“未成熟读取”的操作,产生线程的回退操作。但是,采用本发明实施例所公开的方法,确定访存请求消息的优先级,并按照确定的优先级顺序传送访存请求消息。即,使优先级较高的写数据请求经NoC上的路由器先传送至目录节点处,即保证先驱线程中的写数据请求先于后继线程的读数据请求到达目录节点,使得后继线程的读数据请求不会成为“未成熟读取”。进而阻止线程间依赖冲突的发生,从而降低了TLS线程回退率。
需要说明的是,由于本发明所公开的改进推测线程性能的方法时基于优先级的NoC包仲裁策略的,该包仲裁策略遵守以下规则:
A.在所有的网络消息中,优先传送属于非推测线程的消息;
B.在所有属于推测线程的网络消息中,优先传送属于先驱线程的消息;
C.如果以上两条规则未能区分出应被优先传送的消息,则使用非优先级的包仲裁策略,如轮转调度策略。
通过在NoC路由器中使用该包仲裁策略,属于先驱线程的消息被赋予较高的优先级,使它们能够被更快地传送。而在执行上述三条规则的过程中,如果未能区分出应被优先传送的消息,即当无法区分所述推测线程消息中的访存请求的优先级时,使用非优先级的包仲裁策略,即上述C中描述的轮转调度策略执行所述推测线程消息的传送,即采用现有技术的方式进行推测消息的传送。
因而,采用本发明所公开的改进推测线程性能的方法,使优先级较高的先驱线程的访存请求消息先于后继线程的访存请求消息到达目录节点的可能性增大,使得后继线程的读数据请求不会成为“未成熟读取”,而不会产生线程间依赖冲突,使TLS线程回退率也被降低。
另一方面,因为现有技术中一个线程的执行速度很大程度上受限于其访存延迟,而访存请求消息需要通过NoC被发送,由于现有技术中后继线程先于先驱线程完成,需要空等,直到所有先驱线程都完成后才进行提交(如图4所示),造成的“推测线程负载不均衡”问题。而采用本发明所公开的方法,在NoC中优先传送先驱线程的访存请求消息,可以减小其访存延迟,加快其执行速度,从而后续线程等待先驱线程完成执行,即降低了发生负载不均衡的可能性。
在执行上述本发明实施例公开的方法的基础上,执行步骤S103时的具体过程如图5所示,主要包括以下步骤:
步骤S1031,确认经片上网络中的路由器传送的访存请求消息的类型。
步骤S1032,按照所述承载于所述先驱线程和后继线程上发出的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序。
在执行步骤S1031之后已确定当前推测线程中的先驱线程和后继线程中所承载的访存请求消息的类型。执行步骤S1032,按照先驱线程的访存请求消息和后继线程的访存请求消息的优先级排列传送的顺序,即排列需要传送的访存请求消息的顺序。
需要说明的是,当不同的先驱线程发出不同的所述访存请求消息(写数据请求或读数据请求)时,所述访存请求消息的优先级由承载其的所述先驱线程的位置决定,所述先驱线程的位置越靠前优先级越高;当不同的后继线程发出不同的所述访存请求消息(读数据请求或写数据请求)时,所述访存请求消息的优先级由承载其的所述后继线程的位置决定,所述后继线程的位置越靠前优先级越高。
步骤S1033,依据优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写。
步骤S1034,判断当前所述目录节点处的数据读或写是否完成,如果否,并且此时接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,则执行步骤S1035;如果是,则执行步骤S1037。
步骤S1035,向优先级较低的先驱线程或后继线程反馈未完成信息。
步骤S1036,使所述优先级较低的先驱线程或后继线程执行阻塞操作。
步骤S1037,经下一个优先级较低的先驱线程或后继线程传送承载的访存请求,然后返回执行步骤S1034。
在执行上述步骤S1031至步骤S1037的过程中,由于依据优先级从高至低对访存请求消息进行传送,并且在上一个优先级较高的访存请求消息未完成使下一个承载优先级较低的访存请求消息的推测线程处于阻塞状态,直至优先级较高的访存请求消息执行结束之后,再执行下一个访存请求消息。对于由先驱线程发出的写数据请求和后继线程发出的读数据请求,通过使用该基于优先级的包仲裁策略,可以使优先级较高的写数据请求先于优先级较低的读数据请求到达目录节点的,即使得位于后继线程上的读数据请求不会成为“未成熟读取”,避免线程之间的依赖冲突的发生,促使TLS线程回退率降低。同时,还可以降低推测线程负载不均衡,减少负载不均衡造成的计算资源的浪费。
在上述本发明公开的实施例的基础上,将本发明应用于一个典型的基于目录cache一致性的TLS系统中,从而说明本发明基于优先级的包仲裁策略如何避免“未成熟读取”操作的发生,以及避免TLS线程回退的产生,降低其线程回退率。同样的,本发明所示例的方法适用于其它所有基于目录cache一致性的TLS系统,具有一般性,凡采取该仲裁策略的技术方案,均可落在本发明要求保护的范围之内。
如下给出一示例:
如图6所示,3个TLS推测线程TX,TY,TZ分别运行在处理器1,2,3上,其中按照优先级TX为优先级最高的先驱线程,即排列最前的推测线程,而TZ是优先级最低的后继线程,即排列最靠后的后继线程,在本示例中,按照推测线程消息中访存请求的优先级,即写数据请求和读数据请求的优先级,上述推测线程分别对应作为访存请求的写(RX)、写(RY)、读(RZ)数据A的请求。
其中,数据A和其目录信息位于节点0处。于是,TX,TY和TZ分别向节点0发出访存请求RX,RY和RZ。
如图7所示,在三个访存请求RX,RY和RZ在到达目录节点(节点0)之前,被同时缓冲在NoC中的某个路由器的虚拟通道中。
为了说明本发明的有益效果,如图8所示,对比目前被广泛使用的轮转仲裁策略(图8中用B标识)与本发明提供的基于优先级的仲裁策略(图8中用D标识)。
当使用轮转仲裁策略B时,三个访存请求消息到达目录节点的顺序为:RZ,RY,RX。该到达顺序所引发的后续TLS系统行为如下:
首先,目录节点服务RZ请求,使线程TZ成为数据A的共享者。
其次,目录节点服务RY请求,将该写请求转发给数据A的共享者线程TZ。线程TZ收到来自其前驱线程TY的写A请求RY后,发现自身曾发出过“未成熟读取”操作,引发了数据依赖冲突,产生线程TZ回退并重启,以解决数据依赖冲突,同时使线程TY成为数据A的拥有者。
最后,目录节点服务RX请求,将该写请求转发给数据A的拥有者线程TY。线程TY收到来自其前驱线程TX的写A请求RX后,发现自身曾发出过“未成熟读取”操作,引发了数据依赖冲突,产生线程TX回退并重启,以解决数据依赖冲突,同时使线程TX成为数据A的拥有者。
可以看出,在这种情况下,当使用被普遍采用的现有技术中的轮转仲裁策略时,TLS系统会发生2次线程回退操作。
当使用基于优先级的仲裁策略D时,三个访存请求消息到达目录节点的顺序为:RX,RY,RZ。该到达顺序所引发的后续TLS系统行为如下:
首先,目录节点服务RX请求,使线程TX成为数据A的拥有者。
其次,目录节点服务RY请求,将该写请求转发给数据A的拥有者线程TX。线程TX收到来自其后续线程TY的写A请求RY后,通知线程TY数据A还未成熟,使线程TY进行阻塞操作,因此不会发生“未成熟读取”操作。
最后,同样的,目录节点服务RZ请求,将该写请求转发给数据A的拥有者线程TX。线程TX收到来自其后续线程TZ的写A请求RZ后,通知线程TZ数据A还未成熟,使线程TZ进行阻塞操作,因此也不会发生“未成熟读取”操作。
通过上述现有技术与本发明的对比可以看到,基于优先级的包仲裁策略能够有效地加速先驱线程的消息的传送,避免“未成熟读取”操作的发生,从而减少TLS线程回退,降低回退率,能够起到提高TLS系统性能的作用。
上述本发明公开的实施例中详细描述了一种推测多线程方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种推测线程装置,下面给出具体的实施例进行详细说明。
请参阅附图9,为本发明实施例公开的一种推测多线程装置的结构示意图,主要包括:获取单元101、区分排列单元102和传送单元103。
获取单元101,用于获取网络消息中的推测线程消息。
区分排列单元102用于区分并排列承载于所述先驱线程和后继线程上的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息。
传送单元103,用于依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写。
需要说明的是,传送单元103中包括:确认模块1031、排队模块1032、顺序传送模块1033、判断反馈模块1034和阻塞模块1035。
确认模块1031,用于确认经NoC的路由器传送的访存请求消息的类型。
排队模块1032,用于按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序。
顺序传送模块1033,用于依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写。
判断反馈模块1034,用于判断当前所述目录节点处的数据是否以完成读或写,当对所述目录节点处的数据进行读或写未完成时,接收到来自优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息。
阻塞模块1035,用于所述优先级较低的先驱线程或后继线程执行阻塞操作。
需要说明的是,在本发明公开的该装置中,还包括:
轮转调度策略执行单元(图中未标识),用于当无法区分承载于所述先驱线程或后继线程上的所述访存请求消息的优先级时,按照轮转调度策略执行所述推测线程消息的传送。
由于该推测多线程装置对应于上述本发明公开的推测多线程方法,其各单元,以及各模块的执行过程以及原理与上述本发明公开的推测多线程方法一致,这里不再赘述。
综上所述:
通过本发明实施例公开的方法,区分访存请求的优先级,并按照确定优先级的顺序传送访存请求。即使承载于先驱线程中的优先级较高的写数据请求先传送至目录节点处,即保证先驱线程中的写数据请求先于后继线程的读数据请求到达目录节点,使得后继线程的读数据请求不会成为“未成熟读取”。进而阻止线程间依赖冲突的发生,从而降低了TLS线程回退率。
同时,优先传送先驱线程的访存请求消息,可以减小其访存延迟,加快其执行速度,从而后续线程等待先驱线程完成执行,即降低了发生负载不均衡的可能性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.一种改进推测多线程性能的方法,其特征在于,包括:
获取网络消息中由先驱线程和后继线程发出的推测线程消息,所述推测线程消息包括访存请求消息;
区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息;
依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写;
当不同的后继线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述后继线程的位置决定,所述后继线程的位置越靠前优先级越高;
所述改进推测多线程性能的方法基于优先级的NoC包仲裁策略,所述包仲裁策略遵守内容包括:A.在所有的网络消息中,优先传送属于非推测线程的消息;B.在所有属于推测线程的网络消息中,优先传送属于先驱线程的消息;C.如果以上两条未能区分出应被优先传送的消息,则使用非优先级的包仲裁策略,包括轮转调度策略;
所述依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写,具体过程为:
确认经片上网络中的路由器传送的访存请求消息的类型;
按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序;
依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写;
当对所述目录节点处的数据进行读或写未完成时,接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息;
所述优先级较低的先驱线程或后继线程执行阻塞操作。
2.根据权利要求1所述的方法,其特征在于,在获取网络消息中的推测线程消息之前,还包括:
获取网络消息中的非推测线程的消息,执行传送。
3.根据权利要求1所述的方法,其特征在于,包括:
当不同的先驱线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述先驱线程的位置决定,所述先驱线程的位置越靠前优先级越高。
4.根据权利要求1至3中的任意一项所述的方法,其特征在于,还包括:
当无法区分承载于所述先驱线程或后继线程上的所述访存请求消息的优先级时,按照轮转调度策略执行所述推测线程消息的传送。
5.根据权利要求1至3中的任意一项所述的方法,其特征在于,基于优先级的包仲裁策略区分所述访存请求消息的优先级。
6.一种改进推测多线程性能的装置,其特征在于,包括:
获取单元,用于获取网络消息中由先驱线程和后驱线程发出的推测线程消息,所述推测线程消息包括访存请求消息;
区分排列单元,用于区分并排列承载于所述先驱线程和后继线程上发出的访存请求消息的优先级顺序,所述先驱线程发出的访存请求消息的优先级高于所述后继线程发出的访存请求消息,当不同的后继线程发出不同的所述访存请求消息时,不同的所述访存请求消息之间的优先级由承载其的所述后继线程的位置决定,所述后继线程的位置越靠前优先级越高;
传送单元,用于依据确定的所述优先级顺序向目录节点传送对应的所述访存请求消息,完成对所述目录节点处的数据读或写;
所述改进推测多线程性能的装置基于优先级的NoC包仲裁策略,所述包仲裁策略遵守内容包括:A.在所有的网络消息中,优先传送属于非推测线程的消息;B.在所有属于推测线程的网络消息中,优先传送属于先驱线程的消息;C.如果以上两条未能区分出应被优先传送的消息,则使用非优先级的包仲裁策略,包括轮转调度策略;
所述传送单元包括:
确认模块,用于确认经片上网络中的路由器传送的访存请求消息的类型;
排队模块,用于按照所述承载于所述先驱线程和后继线程上的访存请求消息的优先级,排列需传送的所述访存请求消息的优先级顺序;
顺序传送模块,用于依据所述优先级顺序向所述目录节点传送当前优先级最高的访存请求消息,对所述目录节点处的数据进行读或写;
判断反馈模块,用于判断当前所述目录节点处的数据是否已完成读或写,当对所述目录节点处的数据进行读或写未完成时,接收到来自发出优先级较低的先驱线程或后继线程上的访存请求消息,向优先级较低的先驱线程或后继线程反馈未完成信息;
阻塞模块,用于所述优先级较低的先驱线程或后继线程执行阻塞操作。
7.根据权利要求6所述的装置,其特征在于,还包括:
轮转调度策略执行单元,用于当无法区分承载于所述先驱线程或后继线程上的所述访存请求消息的优先级时,按照轮转调度策略执行所述推测线程消息的传送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110136316.XA CN102799414B (zh) | 2011-05-24 | 2011-05-24 | 改进推测多线程的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110136316.XA CN102799414B (zh) | 2011-05-24 | 2011-05-24 | 改进推测多线程的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102799414A CN102799414A (zh) | 2012-11-28 |
CN102799414B true CN102799414B (zh) | 2015-11-25 |
Family
ID=47198531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110136316.XA Active CN102799414B (zh) | 2011-05-24 | 2011-05-24 | 改进推测多线程的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102799414B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022717B (zh) * | 2015-06-04 | 2018-11-27 | 中国航空无线电电子研究所 | 附加请求数优先级的片上网络资源仲裁方法及仲裁单元 |
CN108733409B (zh) * | 2017-04-24 | 2022-10-25 | 华为技术有限公司 | 执行推测线程的方法以及片上多核处理器 |
CN111090464B (zh) | 2018-10-23 | 2023-09-22 | 华为技术有限公司 | 一种数据流处理方法及相关设备 |
CN110806900B (zh) * | 2019-04-30 | 2021-07-09 | 成都海光微电子技术有限公司 | 一种访存指令处理方法及处理器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101313286A (zh) * | 2005-12-22 | 2008-11-26 | 英特尔公司 | 多线程处理器中的性能优先化 |
CN101673223A (zh) * | 2009-10-22 | 2010-03-17 | 同济大学 | 基于片上多处理器的线程调度实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09305487A (ja) * | 1996-05-14 | 1997-11-28 | Hitachi Ltd | 記憶制御方式 |
-
2011
- 2011-05-24 CN CN201110136316.XA patent/CN102799414B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101313286A (zh) * | 2005-12-22 | 2008-11-26 | 英特尔公司 | 多线程处理器中的性能优先化 |
CN101673223A (zh) * | 2009-10-22 | 2010-03-17 | 同济大学 | 基于片上多处理器的线程调度实现方法 |
Non-Patent Citations (1)
Title |
---|
减少推测多线程回退的片上网络优化设计与分析;代文博;《中国科学技术大学》;20110401;第21页至第46页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102799414A (zh) | 2012-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101059783B (zh) | 事务型存储器的虚拟化 | |
CN101763285B (zh) | 零开销切换多线程处理器及其线程切换方法 | |
US10769013B1 (en) | Caching error checking data for memory having inline storage configurations | |
US10019381B2 (en) | Cache control to reduce transaction roll back | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN103116551B (zh) | 应用于CLB总线的NorFLASH存储接口模块 | |
CN103279428B (zh) | 一种显式的面向流应用的多核Cache一致性主动管理方法 | |
CN102799414B (zh) | 改进推测多线程的方法及装置 | |
CN101187908A (zh) | 单芯片多处理器共享数据存储空间的访问方法 | |
CN103218176A (zh) | 数据处理方法及装置 | |
KR101639853B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 | |
CN103019655B (zh) | 面向多核微处理器的内存拷贝加速方法及装置 | |
CN106569960A (zh) | 一种混合主存的末级缓存管理方法 | |
WO2001088712A2 (en) | Distributed processing multi-processor computer | |
CN101872299B (zh) | 冲突预测实现方法及所用冲突预测处理装置事务存储器 | |
CN102681890A (zh) | 一种应用于线程级推测并行的限制性值传递方法和装置 | |
CN101847096A (zh) | 包含栈变量函数的优化方法 | |
US8312239B2 (en) | Cache management for increasing performance of high-availability multi-core systems | |
US20100180024A1 (en) | Reducing occurrences of two-phase commits in a multi-node computing system | |
CN111736900B (zh) | 一种并行双通道的cache设计方法和装置 | |
CN105808210B (zh) | 共享资源的访问方法和装置 | |
CN108027727B (zh) | 内存访问指令的调度方法、装置及计算机系统 | |
CN102063271B (zh) | 一种磁盘外置Cache基于状态机的写回方法 | |
KR101639854B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 | |
CN105378652A (zh) | 线程共享资源分配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |