CN102063289B - 串行程序线程级推测执行能力评估方法和评估器 - Google Patents

串行程序线程级推测执行能力评估方法和评估器 Download PDF

Info

Publication number
CN102063289B
CN102063289B CN 201010278549 CN201010278549A CN102063289B CN 102063289 B CN102063289 B CN 102063289B CN 201010278549 CN201010278549 CN 201010278549 CN 201010278549 A CN201010278549 A CN 201010278549A CN 102063289 B CN102063289 B CN 102063289B
Authority
CN
China
Prior art keywords
thread
execute phase
inferred
value
depth value
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.)
Expired - Fee Related
Application number
CN 201010278549
Other languages
English (en)
Other versions
CN102063289A (zh
Inventor
安虹
任永青
孙涛
邓春华
毛梦捷
刘扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN 201010278549 priority Critical patent/CN102063289B/zh
Publication of CN102063289A publication Critical patent/CN102063289A/zh
Application granted granted Critical
Publication of CN102063289B publication Critical patent/CN102063289B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请公开了串行程序线程级推测执行能力评估方法和评估器,所述方法包括:通过记录串行程序一个执行阶段在执行过程中包括的正确推测的线程的数目,得到该执行阶段的线程推测深度值;确定所述线程推测深度值作为所述执行阶段后续重复执行时的线程级推测执行能力评估值;或者,将所述执行阶段及其前几个已执行阶段的线程级推测深度值的平均值作为所述执行阶段的下一个执行阶段的线程级推测执行能力评估值。该方案能够实现在串行程序的一个任务阶段执行之前,预先评估该任务阶段的线程级推测执行能力,使后续执行可以根据预估的推测执行能力,及时的为其分配处理器资源,以充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。

Description

串行程序线程级推测执行能力评估方法和评估器
技术领域
本申请涉及微处理器芯片结构设计领域,特别涉及一种串行程序线程级推测执行能力评估方法和评估器。
背景技术
随着半导体技术的发展,将多个处理器核集成到单个芯片的多核技术已经成为微处理器设计主流的方案。与传统单核结构中的资源分时复用机制不同,多核处理器需要根据应用程序实际执行的需求,在空间域对芯片资源进行划分。由于大部分应用程序都是采用串行编程模型设计,为充分利用微处理器多核结构的资源优势,线程级推测执行技术成为普遍采用的技术之一。线程级推测执行技术是为了打破应用程序执行的串行性,对应用程序进行切分,形成以代码段为粒度的线程执行单位,通过推测应用程序的执行路径,即推测地并行执行按照串行顺序应该执行的代码段序列,实现多个线程在多个处理器核上并行执行,使应用程序执行性能得到提升。
不同串行应用之间以及单个程序内部不同执行阶段的线程推测执行能力是存在差异的,在线程推测执行能力强的程序区域,推测执行可以发挥多核处理器平台的并行优势,使得应用程序性能得到提升,但是对于线程推测执行能力弱的程序区域,错误的推测执行则会造成多核处理器平台计算资源和功耗的浪费,对应用程序性能起不到提升作用,因此,如何评估不同串行应用和单个程序内部不同执行阶段的线程推测执行能力成为多核结构设计关注的重要问题。当前,通常采用软件和硬件相结合的机制来实现对串行程序线程级推测执行能力的估算,其主要实现方式如下:由处理器提供的计数器获取并统计串行程序当前执行阶段在处理器上的运行信息,具体包括:某段时间内的Cache缺失率、ILP(Instruction-Level-Parallelism,指令级并行性)、I/O访问次数、程序的执行效率等,由操作系统或其它功能软件对所述运行信息进行统计分析等处理,估算串行程序当前运行的执行阶段的线程级推测执行能力,并根据估算的线程级推测执行能力,完成对多核处理器资源的分配决策,实现根据串行程序单个执行阶段的执行状态的调整每个任务阶段的资源数量。
通过对现有技术的研究,发明人发现,现有的串行程序线程级推测执行能力评估方案需要在串行程序当前任务阶段的执行过程中,由处理器的性能计数器统计其运行信息,并由操作系统或其它功能软件对这些运行信息进行分析和处理后,才能对当前阶段的线程级推测执行能力进行评估,并根据评估结果为当其分配处理器资源,因此这种方案在为串行程序的任务阶段分配处理器资源时,不仅存在一定的时间滞后性,而且评估的开销较大,无法充分发挥串行程序的并行执行能力,影响多核平台上串行程序的执行效率的提高。
发明内容
为解决上述技术问题,本申请的目的在于提供一种完全硬件实现的串行程序线程级推测执行能力评估方法和评估器,以实现在串行程序的一个任务阶段执行之前,预先评估该任务阶段的线程级推测执行能力,使后续执行可以根据预估的推测执行能力,及时的为其分配处理器资源,以充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。
为实现上述目的,本发明提供了如下技术方案:
一种串行程序线程级推测执行能力评估方法,包括:
从串行程序一个执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,得到该执行阶段的线程推测深度值;
确定所述执行阶段的线程推测深度值为所述执行阶段的下一次执行时的线程级推测执行能力评估值。
本发明还提供了串行程序线程级推测执行能力评估方法的另一种实现方式,包括:
从串行程序一个执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值;
按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
确定获取到的多个已执行阶段的线程推测深度值的均值作为所述串行程序的下一个执行阶段的线程级推测执行能力评估值。
结合上述两种实现方式,本发明提供了串行程序线程级推测执行能力评估方法的又一种实现方式,包括:
从串行程序一个执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值;
按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值,并按照每个执行阶段的非推测线程为索引将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
使用当前执行阶段的非推测线程为索引访问推测深度局部历史表,作为当前执行阶段线程级推测执行能力的第一评估值;
确定所述多个已执行阶段的线程推测深度值的平均值作为当前执行阶段线程级推测执行能力的第二评估值;
执行当前执行阶段并获取当前执行阶段的线程推测深度值;
将所述线程推测深度值分别和所述第一预估值、第二预估值相比较;当第一预估值更接近所述当前执行阶段的线程推测深度值时,在所述当前执行阶段下一次执行之初,以其非推测线程为索引访问所述推测深度局部历史表,将得到的值确定为其下一次执行时的线程级推测执行能力评估值;当第二预估值更接近当前执行阶段的线程推测深度值时,确定多个已执行阶段的线程推测深度值的平均值为其下一次执行时的线程级推测执行能力评估值。
相对应与上述评估方法,本发明还提供了一种串行程序线程级推测执行能力评估器,包括:
计数器,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值;
存储单元,包括推测深度局部历史表,用于以所述执行阶段的非推测线程为索引,将所述执行阶段的线程推测深度值存储到推测深度局部历史表中;
预测单元,用于在串行程序的任一执行阶段执行之前,以该执行阶段的非推测线程为索引,访问所述推测深度局部历史表,将返回值作为该执行阶段的线程级推测执行能力的评估值。
本发明还提供了串行程序线程级推测执行能力评估器的另一种组成和结构,包括:
计数器,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值,并按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
预测单元,用于确定所述多个已执行阶段的线程推测深度值的平均值为当前执行单元线程级推测执行能力的评估值。
结合上述评估器的两种结构,本发明还提供了串行程序线程级推测执行能力评估器的另一种组成和结构,包括:
计数器,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值,并按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
第一存储单元,包括推测深度局部历史表,用于以所述执行阶段的非推测线程为索引,将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
第二存储单元,包括全局历史移位寄存器,用于分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器;
第一预测单元,用于以所述当前执行阶段的非推测线程为索引,访问推测深度局部历史表,将返回值作为所述执行阶段的线程级推测执行能力的第一评估值;
第二预测单元,用于将所述多个已执行阶段的线程推测深度值平均值作为当前执行阶段线程级推测执行能力的第二评估值;
评估偏差比较单元,用于将所述当前执行阶段的线程推测深度值分别和所述第一预估值、第二预估值相比较;
评估确定单元,用于当第一预估值更接近所述当前执行阶段的线程推测深度值时,在所述当前执行阶段下一次执行前,以其非推测线程为索引访问所述推测深度局部历史表,将得到的值确定为其下一次执行时的线程级推测执行能力评估值;当第二预估值更接近当前执行阶段的线程推测深度值时,确定多个已执行阶段的线程推测深度值的平均值为其下一次执行时的线程级推测执行能力评估值。
由以上本申请实施例提供的技术方案可见,本申请实施例在任一个执行阶段的实际执行之前,通过预测单元根据已执行的阶段的历史线程推测深度值预测所述当前执行阶段的线程级推测执行能力,并在该阶段实际执行过程中通过简单统计正确的推测线程的数量来更新预测单元,从而实现了以在一个执行阶段在实际运行之前,得到该执行阶段的线程级推测执行能力预测评估值,进而根据得到的预估值,在该执行阶段实际执行时,及时的为该执行阶段分配合理的处理器资源,充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一中的线程级推测执行能力评估方法流程图;
图2为本申请实施例一中的获取线推测深度值的方式示意图;
图3为本申请实施例二中提供的线程级推测执行能力评估方法的部分流程图;
图4为本申请实施例二中提供的更新推测深度局部历史表方式示意图;
图5为本申请实施例三中提供的线程级推测执行能力评估方法流程图;
图6为本申请实施例四中提供的线程级推测执行能力评估方法的部分流程图;
图7为本申请实施例四中提供的更新推测深度全局历史移位寄存器示意图;
图8为本申请实施例五中提供的线程级推测执行能力评估方法流程图;
图9为本申请实施例七中提供的评估器的一种结构示意图;
图10为本申请实施例九中提供的评估器的一种结构示意图;
图11为本申请实施例九中提供的评估器的评估方式示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一:
本实施例提供了一种串行程序线程级推测执行能力评估方法,如图1所示,为该方法的一种流程示意图,该方法包括以下步骤:
步骤S101,从串行程序一个执行阶段的非推测线程开始计数;
步骤S102,判断下一个推测线程是否验证为正确推测线程,如果是,执行步骤S103,否则,执行步骤S104;
步骤S103,将所述执行阶段的正确推测线程数目加1,并返回执行步骤S102;
步骤S104,结束计数流程,得到该执行阶段的正确推测线程数目,并确定该数目为该执行阶段的线程推测深度值;
在串行程序执行过程中,对每一个执行阶段在执行过程中都可以重复上述步骤S101至步骤S104中的操作,以获取每个执行阶段的线程推测深度值。
如图2所示,假设线程T0为该执行阶段的非推测线程,线程T1到Tn为该执行阶段的推测线程,在该阶段的执行过程中,如果线程T0执行结束,且T1已经被验证为正确推测的线程,此时可以为该执行阶段的线程推测深度值加1,即如果所述线程推测深度值的初始值为0,则在T1验证为正确执行的线程后,将所述线程推测深度值由0更新为1,当线程T1执行结束后,且T2验证为正确执行的线程后,则将所述线程推测深度值由1更新为2,依次类推,T3到Tn都验证为正确执行的推测线程时,所述线程推测深度值更新为n,如果Tn的下一个线程验证为错误推测的线程时,结束计数过程,此时得到的线程推测深度值n就是该执行阶段的线程推测深度值,说明该执行阶段包括T0、T1……Tn等n+1个可以并行执行的线程。如果多核处理器平台结构上采用线程与处理器核一一对应的执行方式,则为该执行阶段分配的处理器核的数量最佳为n+1个。
当Tn的下一个线程验证为错误推测的线程时,Tn可以作为下一个执行阶段的为非推测线程,计算下一执行阶段的推测执行能力。
步骤S105,确定所述执行阶段的线程推测深度值为所述执行阶段的下一次执行时的线程级推测执行能力评估值。
本发明中,所述的一个执行阶段是指以一个非推测线程为开始,以一个错误执行线程为计数的同一代码区域,其中,所述执行阶段的下一次执行是指以同一个非推测线程为开始的执行阶段,根据该执行阶段的路径或深度的不同,一个执行阶段和该执行阶段的下一次执行的线程推测深度值可能相同或不同,以下实施例中相似之处可参见此描述,不再赘述。
由于串行程序执行的时间局部性,刚刚执行过的代码区域很可能会紧接着再次执行,因此,本发明提出了根据串行程序执行时获取的历史推测深度值预先评估推测所述执行阶段的下一次执行时的线程级推测执行能力。本实施例中提供的具体实现方式为:将在运行过程中计数得到的串行程序的一个已执行阶段的真实线程推测执行能力,作为该执行阶段的所述执行阶段的下一次执行时的线程推测执行能力评估值。如上述步骤中所示,假设在所述执行阶段实际执行过程中计数得到其真实线程推测执行能力为n,则以n为所述执行阶段的下一次执行时的线程级推测执行能力预测评估值。如果多核处理器平台结构上采用线程与处理器核一一对应的执行方式,则后续步骤较佳的可以为所述执行阶段的下一次执行时分配n+1个处理器核。
通过上述方式,可以在一个执行阶段在实际运行之前,得到该执行阶段的线程推测执行能力预测评估值,进而根据得到的预估值,在串行程序的一个执行阶段下一次重复执行之前,及时的为该执行阶段分配处理器资源,以充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。
实施例二:
在实施例一中提供的串行程序线程级推测执行能力评估方法中,还可将经过计数获取到的执行阶段的实际线程推测深度值存储,以方便后续执行阶段访问读取,因此在所述得到所述执行阶段的线程推测深度值之后,还可以包括:
步骤S301,以所述执行阶段的非推测线程为索引,将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
步骤S302,在所述执行阶段下一次执行之初,以其非推测线程地址为索引,访问所述推测深度局部历史表,得到所述执行阶段的线程推测深度值。
如图4所示,为本实施例提供的一种具体实现方式:以图中所示执行阶段起始线程T0地址为索引,使用当前执行阶段的推测执行深度值n更新推测深度局部历史表对应表项。其中,所述深度局部历史表中可以设置有以每个执行阶段的非推测线程为索引的初始值,如图所示,T0到Tn的执行阶段的非推测线程T0地址索引的推测深度局部历史表表项数值代表的该执行阶段的线程推测执行能力初始值为X,在Tn的下一个发生推测执行错误时使用当前执行阶段推测深度数值n代替X。
在以T0为非推测线程的执行阶段下一次执行之前,以该执行阶段的非推测线程T0地址为索引,访问推测深度局部历史表,得到的对应表项的数值n作为以T0为非推测线程的执行阶段的线程级推测执行能力的预测评估值,后续步骤中硬件资源管理机制可以根据该预测评估值为T0为非推测线程的执行阶段分配合适数量的处理器核资源。在Tn为非推测线程的执行阶段的执行过程中,计数该阶段的实际线程推测执行能力,当得到的实际线程推测执行能力为y时,将以线程Tn为索引,将y存储到推测深度局部历史,作为以Tn为非推测线程的执行阶段的下一次重复执行时的线程级推测执行能力预测评估值。
本实施例中提供的方法与实施例一中提供的方法的其它部分可以相互参见,在此不在赘述。本实施例提供的技术方案可以将经过计数获取到的执行阶段的实际线程推测深度值存储,方便了该执行阶段下一次重复执行前访问读取作为后续阶段的线程级推测能力预测评估值。
实施例三:
本实施例提供了串行程序线程级推测执行能力评估方法的另一种实现方式,如图5所示,为该方法的又一种流程示意图,所述方法包括以下步骤:
步骤S501,从串行程序一个执行阶段的非推测线程开始计数;
步骤S502,判断下一个推测线程是否验证为正确推测线程,如果是,执行步骤S503,否则,执行步骤S504;
步骤S503,将所述执行阶段的正确推测线程数目加1,并返回执行步骤S502;
步骤S504,结束计数流程,得到该执行阶段的正确正确推测线程数目,并确定该数目为该执行阶段的线程推测深度值;
按照上述步骤S501至S504提供的方式分别获取串行程序的多个已执行阶段的线程推测深度值;
上述中步骤中,获取一个执行阶段的线程推测深度值的具体实现方式可以参见实施例一中所述,在此不再赘述。
本步骤与实施例一中的相应步骤的不同之处仅在于:本步骤中增加了按照上述获取一个执行阶段的线程推测深度值的方式,获取多个已执行阶段的线程推测深度值。具体的可以获取最近2个、3个或大于3个的已执行阶段的线程推测深度值。
步骤S505:确定获取到的多个已执行阶段的线程推测深度值的平均值作为串行程序的下一个执行阶段的线程级推测执行能力评估值。
由于串行程序执行的时间局部性,刚刚执行过的代码区域很可能会紧接着再次执行,因此,本发明提出了根据串行程序执行时获取的历史推测深度值预先评估推测下一执行阶段的线程级推测执行能力。本实施例中提供的具体实现方式为:将获取到的多个已执行阶段的线程推测深度值的平均值作为串行程序的下一执行阶段的线程级推测执行能力评估值。具体的可以以最近2个、3个或大于3个的已执行阶段的线程推测深度值的平均值作为下一个执行阶段的线程级推测执行能力评估值。
本实施例中提供的方法与实施例一或实施例二中提供的方法相比较,采用了最近的多个已执行阶段的线程推测深度值的平均值,取代了最近的一个已执行阶段的线程推测深度值,作为下一个执行阶段的线程级推测执行能力评估值。本实施例提供的基于串行程序全局的评估方法比实施例一或二中基于串行程序全局的评估方法相比,在程序相邻的执行阶段的相关联性不强的情况下,能够更加准确的预测评估到下一个执行阶段的线程级推测执行能力。
实施例四:
在实施例三中提供的串行程序线程级推测执行能力评估方法中,还可将经过计数获取到的多个已执行阶段的线程推测深度值存储,以方便后续执行阶段访问读取,因此在所述得到所述多个执行阶段的线程推测深度值之后,还可以包括:
步骤S601,分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器中;
步骤S602,在执行所述下一个执行阶段之初,访问所述全局历史移位寄存器,得到串行程序的多个已执行阶段的线程推测深度值。
下面,以将最近三个已执行阶段的线程推测深度值的平均值作为串行程序的下一个执行阶段的线程级推测执行能力评估值为例,进行具体说明:
所述全局历史移位寄存器中可以包括三个数据的入口项,在当前执行阶段执行的同时,记录当前阶段的线程推测深度值,当前阶段执行完毕后,将全局历史移位寄存器中存储的最远的已执行阶段的线程推测深度值移除,将存储的其它两个线程推测深度值依次向前移位,并将计数得到的当前执行阶段的线程推测深度值,存储到所述全局历史移位寄存器中。
在下一个执行阶段执行之前,访问所述全局历史移位寄存器,从中获取到的最近三个已执行阶段的线程推测深度值的平均值作为串行程序下一个执行阶段的线程级推测执行能力评估值。
如图7所示,为本实施例提供的评估方法的一种实现方式示意图,所示具有三个数据的入口项的全局历史移位寄存器中更新前存储的数据为x、y和z,最近的已执行阶段T0至Tn的推测深度值为n,则用n更新所示移位寄存器后,所述全局历史移位寄存器中存储的数据为y、z和n。更新存储有推测深度全局历史的移位寄存器后,使用全局历史移位寄存器中存储的推测深度值y、z和n评估下一个执行阶段的推测执行能力,平均值(n+y+z)/3作为评估的推测深度值。如果多核结构上采用线程与处理器核一一对应的执行,此时资源管理机制需要为的下一执行阶段分配(n+y+z)/3个处理器核资源。如果数值(n+y+z)/3为非整数数值时,为充分发挥串行程序的并行执行能力,可以为下一执行阶段分配大于数值(n+y+z)/3的最小整数个处理器核资源。
本实施例中提供的方法与实施例三中提供的方法的其它部分可以相互参见,在此不在赘述。本实施例提供的技术方案可以将经过计数获取到的多个已执行阶段的线程推测深度值存储,方便了后续执行阶段访问读取作为后续阶段的线程级推测能力预测评估值。
实施例五:
不同串行应用程序之间或单个串行程序内部不同执行阶段的相关性的强弱可能会不同,因此为了更加准确的能够更加准确的预测评估到下一个执行阶段的线程级推测执行能力,本实施例结合实施例一和实施例三中提供的方法,提供了串行程序线程级推测执行能力评估方法的另一种实现方式,如图8所示,为该实现方式的一种流程示意图,具体包括以下步骤:
步骤S801,从串行程序一个执行阶段的非推测线程开始计数;
步骤S802,判断下一个推测线程是否验证为正确推测线程,如果是,执行步骤S803,否则,执行步骤S804;
步骤S803,将所述执行阶段的正确推测线程数目加1,并返回执行步骤S802;
步骤S804,结束计数流程,得到该执行阶段的正确推测线程数目,并确定该数目为该执行阶段的线程推测深度值;
按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
步骤S805,按照每个执行阶段的非推测线程为索引将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
步骤S806,使用当前执行阶段的非推测线程为索引访问推测深度局部历史表,作为当前执行阶段线程级推测执行能力的第一评估值;
步骤S807,确定所述多个已执行阶段的线程推测深度值的平均值作为当前执行阶段线程级推测执行能力的第二评估值;
步骤S808,执行当前执行阶段并获取当前执行阶段的线程推测深度值;
步骤S809,判断将所述线程推测深度值分别和所述第一预估值、第二预估值的误差的大小;当第一预估值更接近所述当前执行阶段的线程推测深度值时,执行步骤S810,当第二预估值更接近当前执行阶段的线程推测深度值时,执行步骤S811;
步骤S810,在所述当前执行阶段下一次执行之初,以其非推测线程为索引访问所述推测深度局部历史表,将得到值作为其线程级推测执行能力评估值。
步骤S811,在所述当前执行阶段下一次执行前,确定多个已执行阶段的线程推测深度值的平均值为其下一次执行时的线程级推测执行能力评估值。
此外,当第一预估值和第二预估值同样接近所述当前执行阶段的线程推测深度值时,可以根据需要选择当前执行阶段的线程推测深度值或当前执行阶段的多个已执行阶段的线程推测深度值的平均值中的任意一个,作为所述当前执行阶段的下一次执行前的线程级推测执行能力评估值。
上述步骤的具体实施方式是实施例一和实施例三中提供的具体实施方式的结合和优选,其相同之处可以与实施例一和实施例三相互参见,在此不再赘述。
本实施例提供的技术方案与实施例一到实施例四提供的技术方案相比较,通过比较两种方式的预估值,选取更为准确的预估值,能够更加准确的能够更加准确的预测评估到一个执行阶段的线程级推测执行能力,进一步的实现充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。
实施例六:
相应于实施例二和实施例四提供的方案,在实施例五中,也可以将经过计数获取到的多个已执行阶段的线程推测深度值,或最近已执行阶段的线程推测深度值分别存储,以方便后续执行阶段访问读取作为后续阶段的线程级推测能力预测评估值,因此,实施例五所提供的方案中,在所述分别获取串行程序的多个已执行阶段的线程推测深度值之后,还可以包括:
分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器中;
在执行所述当前执行阶段之前,访问所述全局历史移位寄存器,得到串行程序的多个已执行阶段的线程推测深度值。
上述步骤的具体实施方式是实施例二和实施例四中提供的具体实施方式的结合,其相同之处可以与实施例二和实施例四相互参见,在此不再赘述。
此外,实施例五和本实施例中,也可以以最近2个、3个或大于3个的已执行阶段的线程推测深度值的平均值作为下一个执行阶段的线程级推测执行能力评估值。
以最近的三个已执行阶段的线程推测深度值的平均值作为下一个执行阶段的线程级推测执行能力评估值为例:
所述确定所述多个已执行阶段的线程推测深度值平均值为当前执行阶段线程级推测执行能力的第二评估值,包括:
确定最近的三个已执行阶段的线程推测深度值平均值为当前执行阶段线程级推测执行能力的第二评估值;
所述确定包括当前执行阶段的多个已执行阶段的线程推测深度值的平均值作为所述当前执行阶段的下一执行阶段的线程级推测执行能力评估值,包括:
确定包括当前执行阶段的最近三个已执行阶段的线程推测深度值的平均值作为所述当前执行阶段的下一执行阶段的线程级推测执行能力评估值。
上述步骤的具体实施方式与和实施例四中提供的具体实施方式的类似,其相同之处可以与实施例四中提供的技术方案相互参见,在此不再赘述。
本实施例提供的技术方案,可以将经过计数获取到的多个已执行阶段的实际线程推测深度值,或最近已执行阶段的实际线程推测深度值分别存储,方便了后续执行阶段访问读取作为后续阶段的线程级推测能力预测评估值。
实施例七:
相应于实施例一和实施例二中提供的串行程序线程级推测执行能力评估方法,本实施例提供了一种串行程序线程级推测执行能力评估器,如图8所示,为所述评估器的结构示意图,包括:
计数器901,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值;
存储单元902,包括推测深度局部历史表,用于以所述执行阶段的非推测线程为索引,将所述执行阶段的线程推测深度值存储到推测深度局部历史表中;
预测单元903,用于在串行程序的任一执行阶段执行之前,以该执行阶段的非推测线程为索引,访问所述推测深度局部历史表,将返回值作为该执行阶段的线程级推测执行能力的评估值;
此外,本实施例提供的评估器,还可以包括:
更新单元904,用于在任一执行阶段执行结束后,以所述计数器获取到的该执行阶段的线程推测深度值,更新所述推测深度局部历史表中该执行阶段的非推测线程索引的值。
具体的,本实施例提供的串行程序线程级推测执行能力评估器可以采用如下方式评估一个执行阶段的线程级推测执行能力:
计数步骤:假设线程T0为该执行阶段的非推测线程,线程T1到Tn为该执行阶段的推测线程,以当前执行阶段起始线程T0地址为索引,使用计数器记录的当前执行阶段的推测执行深度值n更新推测深度局部历史表对应表项。在该阶段的执行过程中,如果线程T0执行结束,且T1已经被验证为正确推测的线程,此时可以为该执行阶段的线程推测深度值加1,即如果所述线程推测深度值的初始值为0,则在T1验证为正确执行的线程后,将所述线程推测深度值由0更新为1,当线程T1执行结束后,且T2验证为正确执行的线程后,则将所述线程推测深度值由1更新为2,依次类推,T3到Tn都验证为正确执行的推测线程时,所述线程推测深度值更新为n,如果Tn的下一个线程验证为错误推测的线程时,结束计数过程,此时得到的线程推测深度值n就是该执行阶段的线程推测深度值。
评估步骤:在一个执行阶段实际运行之初,以该执行阶段的非推测线程T0为索引,访问所述推测深度局部历史表对应表项,得到对应的线程推测深度值n,并将n作为该执行阶段的线程级推测执行能力评估值。进一步的,如果多核处理器平台结构上采用线程与处理器核一一对应的执行方式,则后续步骤较佳的可以为该执行阶段的线程分配n+1个处理器核。
由于本实施例是实施例一和实施例二中提供的方法实施例对应的装置实施例,其类似之处可以相互参见,在此不在赘述。
本实施例提供的基于推测深度局部历史的评估器,可以在一个执行阶段在实际运行之前,得到该执行阶段的线程推测执行能力预测评估值,进而根据得到的预估值,在串行程序的一个执行阶段实际执行时,及时的为该执行阶段分配处理器资源,实现充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。
实施例八:
相应于实施例三和实施例四中提供的串行程序线程级推测执行能力评估方法,本实施例提供了一种串行程序线程级推测执行能力评估器,包括:
计数器,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值,并按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
预测单元,用于确定所述多个已执行阶段的线程推测深度值的平均值为当前执行单元线程级推测执行能力的评估值。
以获取到的三个已执行阶段的线程推测深度值为n、y、z为例,如果多核结构上采用线程与处理器核一一对应的执行,此时后续的资源管理机制需要为的下一执行阶段分配(n+y+z)/3个处理器核资源。如果数值(n+y+z)/3为非整数数值时,为充分发挥串行程序的并行执行能力,可以为下一执行阶段分配大于数值(n+y+z)/3的最小整数个处理器核资源。
此外,还可将经过计数获取到的多个已执行阶段的实际线程推测深度值存储,以方便后续执行阶段访问读取,因此所述评估器,还可以包括:
存储单元,包括全局历史移位寄存器,用于分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器;
更新单元,用于移除全局历史移位寄存器中存储时间最长的一项,并将最近的一个已执行阶段的线程推测执行能力加入全局历史移位寄存器。
此外,本实施例中可以以最近2个、3个或大于3个的已执行阶段的线程推测深度值的平均值作为下一个执行阶段的线程级推测执行能力评估值。
以将最近的三个已执行阶段的线程推测深度值的平均值作为下一个执行阶段的线程级推测执行能力评估值为例:
所述全局历史移位寄存器中分别存储有最近的三个已执行阶段的线程推测深度值。所述全局历史移位寄存器中可以包括三个数据的入口项,在当前执行阶段执行的同时,记录当前阶段的线程推测深度值,当前阶段执行完毕后,将全局历史移位寄存器中存储的最远的已执行阶段的线程推测深度值移除,将存储的其它两个线程推测深度值依次向前移位,并将计数得到的当前执行阶段的线程推测深度值,存储到所述全局历史移位寄存器中。
由于本实施例是实施例三和实施例四中提供的方法实施例对应的装置实施例,其类似之处可以相互参见,在此不在赘述。
本实施例中提供的基于推测深度全局历史的评估器与实施例七中提供的基于推测深度局部历史的评估器相比,采用了最近的多个已执行阶段的线程推测深度值的平均值,取代了最近的一个已执行阶段的线程推测深度值,作为下一个执行阶段的线程级推测执行能力评估值。在一个执行阶段的首次执行的情况下,能够更加准确的预测评估到下一个执行阶段的线程级推测执行能力。
实施例九:
相应于实施例五和实施例六中提供的串行程序线程级推测执行能力评估方法,本实施例提供了一种串行程序线程级推测执行能力评估器,如图10所示,为该评估器的一种结构示意图,包括:
计数器1001,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值,并按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
第一存储单元1002,包括推测深度局部历史表,用于以所述执行阶段的非推测线程为索引,将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
第二存储单元1003,包括全局历史移位寄存器,用于分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器;
第一预测单元1004,用于以所述当前执行阶段的非推测线程为索引,访问推测深度局部历史表,将返回值作为所述执行阶段的线程级推测执行能力的第一评估值;
第二预测单元1005,用于将所述多个已执行阶段的线程推测深度值平均值作为当前执行阶段线程级推测执行能力的第二评估值。;
评估偏差比较单元1006,用于将所述当前执行阶段的线程推测深度值分别和所述第一预估值、第二预估值相比较;
评估确定单元1007,用于当第一预估值更接近所述当前执行阶段的线程推测深度值时,在所述当前执行阶段下一次执行之初,以其非推测线程为索引访问所述推测深度局部历史表,将得到的值确定为其下一次执行时的线程级推测执行能力评估值;当第二预估值更接近当前执行阶段的线程推测深度值时,确定多个已执行阶段的线程推测深度值的平均值为其下一次执行时的线程级推测执行能力评估值。
同时,如果当第一预估值和第二预估值同样接近所述当前执行阶段的线程推测深度值时,可以根据需要选择当前执行阶段的线程推测深度值或当前执行阶段的多个已执行阶段的线程推测深度值的平均值中的一个,作为所述当前执行阶段的下一次执行时的线程级推测执行能力评估值。
此外,还可以将经过计数获取到的多个已执行阶段的实际线程推测深度值,或最近已执行阶段的实际线程推测深度值分别存储,以方便后续执行阶段访问读取作为后续阶段的线程级推测能力预测评估值,因此所述评估器,如图11的结构示意图所示,还可以包括:
第一更新单元1008,用于在任一执行阶段执行结束后,以所述计数器获取到的该执行阶段的线程推测深度值,更新所述推测深度局部历史表中该执行阶段的非推测线程索引的值;
第二更新单元1009,用于移除全局历史移位寄存器中存储时间最长的一项,将最近的已执行阶段的线程推测执行能力加入全局历史移位寄存器。
本实施例提供的评估器具体的可以通过以下方式实现评估串行程序的一个执行阶段的线程级推测执行能力:
如图12所示,为本实施例提供的评估器实现线程级推测能力评估的实现方式示意图。本实施例提供的评估器可以包括实施例七中提供的基于推测深度局部历史的线程级推测执行能力评估器,和实施例八中提供的基于推测深度全局历史的线程级推测执行能力评估器;此外本实施例提供的评估器还可以包括计数器、评估偏差比较单元、评估器选择表和评估确定单元。其中计数器可以由基于推测深度局部历史的评估器、基于推测深度全局历史的评估器以及本实施例提供的计数器三者共享,其功能是记录串行程序执行阶段的实际线程推测深度值;评估偏差比较单元用于比较上一次访问两个评估器(基于推测深度局部历史的评估器和基于推测深度全局历史的评估器)的评估结果与当前执行阶段推实际测深度值的偏差,根据程序执行的时间局部性特征,当程序执行再次到达同一代码区域时,评估偏差较小的评估器应当作为该代码区域下一次执行时的选择;评估器选择表包含多个入口项,用于存储评估偏差比较单元产生的对评估器的选择值,由于只需要在基于局部历史的评估器和基于全局历史的评估器两者中选一,因此评估器选择表每项入口只需要1位存储即可;评估确定单元用于根据评估器选择表对基于推测深度局部历史的评估器和基于推测深度全局历史的评估器的评估结果进行选择。
由于本实施例提供的评估器包含基于推测深度局部历史的评估器和基于推测深度全局历史的评估器,相似部分可参见实施例七和实施例八中的描述,在此不再赘述。本实施例只详细介绍评估偏差比较单元和评估器选择表的访问方式:
步骤一:评估偏差比较单元比较评估结果。可采用如下方式实现:更新评估器选择表,当产生推测执行错误时,首先使用计数器记录的推测深度值与上次访问基于推测深度局部历史评估器和基于推测深度全局历史评估器产生的数值进行比较,产生更接近实际推测深度值的评估器将被作为下一次评估的选择;图中使用评估偏差比较单元,判断推测深度局部历史评估器的偏差是否大于推测深度全局历史评估器的偏差,如果是,则评估偏差比较单元产生结果为1,表示下一次应当采用基于推测深度全局历史的评估器;否则产生0,表示下一次应当采用基于推测深度全局历史的评估器。然后采用执行阶段起始线程地址对评估器选择表进行索引,使用评估偏差比较器产生的结果更新其中的选择数值。图中评估偏差比较器产生的结果为0,执行阶段起始线程T0地址索引的选择表表项初始值为1,更新后变为0。
步骤二:评估值选择。由于Tn成为新的非推测线程,并开始一个新的执行阶段,因此使用Tn地址对评估器选择表进行索引,相应入口项的布尔数值作为选择基于推测深度局部历史的评估器评估结果和基于推测深度全局历史的评估器评估结果的选择控制。图中Tn地址索引选择表表项数值为0,表示以Tn为起始的执行阶段推测深度应该选择基于推测深度局部历史的评估器产生结果,通过评估确定单元,本实施例提供的评估器最终的输出结果为基于推测深度局部历史的评估器产生结果x。
进一步的,如果多核处理器平台结构上采用线程与处理器核一一对应的执行方式,则后续步骤中的处理器资源分配单元较佳的可以为该执行阶段下一次执行时分配X+1个处理器核。
本实施例提供的评估器综合了实施例七和实施例八中提供的评估器的优点,通过比较两种方式的预估值,选取更为准确的预估值,能够更加准确的能够更加准确的预测评估到一个执行阶段的线程级推测执行能力,进一步的实现充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。
本申请实施例提供的技术方案,通过在一个执行阶段的实际执行过程中,通过统计正确的推测线程的数量得到该阶段的实际线程推测深度值,进而根据已执行的阶段的历史线程推测深度值预测下一个未执行的阶段的线程级推测执行能力评估值,实现了以在一个执行阶段在实际运行之前,得到该执行阶段的线程级推测执行能力预测评估值,进而根据得到的预估值,在串行程序的一个执行阶段实际执行时,由后续步骤及时的为该执行阶段分配处理器资源,充分发挥串行程序的并行执行能力,提高多核平台上串行程序的执行效率。
同时本申请实施例提供的技术方案,利用较少的硬件资源就可以完成线程级推测执行能力评估;能够对串行程序的线程级推测执行能力做出准确评估(采用SPEC2000测试程序,平均预测正确率约为92%),可以有效指导多核结构上处理器核资源的分配和调整;与具体的多核处理器平台的结构无关,可用于任何采用串行程序线程级推测执行模型的多核处理器平台。
对于本发明的装置实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个设备上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,在没有超过本申请的精神和范围内,可以通过其他的方式实现。当前的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本申请的目的。例如,所述单元或子单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或多个子单元结合一起。另外,多个单元可以或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
另外,所描述装置和方法以及不同实施例的示意图,在不超出本申请的范围内,可以与其它系统,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (16)

1.一种串行程序线程级推测执行能力评估方法,其特征在于,包括:
从串行程序一个执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,得到该执行阶段的线程推测深度值;
确定所述执行阶段的线程推测深度值为所述执行阶段的下一次执行时的线程级推测执行能力评估值。
2.根据权利要求1所述的方法,其特征在于,在得到该执行阶段的线程推测深度值之后,还包括:
以所述执行阶段的非推测线程为索引,将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
在所述执行阶段下一次执行之初,以其非推测线程地址为索引,访问所述推测深度局部历史表,得到所述执行阶段的线程推测深度值。
3.一种串行程序线程级推测执行能力评估方法,其特征在于,包括:
从串行程序一个执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值;
按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
确定获取到的多个已执行阶段的线程推测深度值的均值作为所述串行程序的下一个执行阶段的线程级推测执行能力评估值。
4.根据权利要求3所述的方法,其特征在于,在所述分别获取串行程序的多个已执行阶段的线程推测深度值之后,还包括:
分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器中;
在执行所述下一个执行阶段之初,访问所述全局历史移位寄存器,获取到串行程序的多个已执行阶段的线程推测深度值。
5.根据权利要求3或4所述的方法,其特征在于:
所述多个已执行的阶段为最近的三个已执行的阶段。
6.一种串行程序线程级推测执行能力评估方法,其特征在于,包括:
从串行程序一个执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值;
按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值,并按照每个执行阶段的非推测线程为索引将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
使用当前执行阶段的非推测线程为索引访问推测深度局部历史表,作为当前执行阶段线程级推测执行能力的第一评估值;
确定所述多个已执行阶段的线程推测深度值的平均值作为当前执行阶段线程级推测执行能力的第二评估值;
执行当前执行阶段并获取当前执行阶段的线程推测深度值;
将所述线程推测深度值分别和所述第一评估值、第二评估值相比较;当第一评估值更接近所述当前执行阶段的线程推测深度值时,在所述当前执行阶段下一次执行之初,以其非推测线程为索引访问所述推测深度局部历史表,将得到的值确定为其下一次执行时的线程级推测执行能力评估值;当第二评估值更接近当前执行阶段的线程推测深度值时,确定多个已执行阶段的线程推测深度值的平均值为其下一次执行时的线程级推测执行能力评估值。
7.根据权利要求6所述的方法,其特征在于:
在所述分别获取串行程序的多个已执行阶段的线程推测深度值之后,还包括:
分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器中;
在执行所述当前执行阶段之前,访问所述全局历史移位寄存器,得到串行程序的多个已执行阶段的线程推测深度值。
8.根据权利要求6或7所述的方法,其特征在于:
所述多个已执行的阶段为最近的三个已执行的阶段。
9.一种串行程序线程级推测执行能力评估器,其特征在于包括:
计数器,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值;
存储单元,包括推测深度局部历史表,用于以所述执行阶段的非推测线程为索引,将所述执行阶段的线程推测深度值存储到推测深度局部历史表中;
预测单元,用于在串行程序的任一执行阶段执行之前,以该执行阶段的非推测线程为索引,访问所述推测深度局部历史表,将返回值作为该执行阶段的线程级推测执行能力的评估值。
10.根据权利要求9所述的评估器,其特征在于,还包括:
更新单元,用于在任一执行阶段执行结束后,以所述计数器获取到的该执行阶段的线程推测深度值,更新所述推测深度局部历史表中该执行阶段的非推测线程索引的值。
11.一种串行程序线程级推测执行能力评估器,其特征在于包括:
计数器,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值,并按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
预测单元,用于确定所述多个已执行阶段的线程推测深度值的平均值为当前执行单元线程级推测执行能力的评估值。
12.根据权利要求11所述的评估器,其特征在于,还包括:
存储单元,包括全局历史移位寄存器,用于分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器;
更新单元,用于移除全局历史移位寄存器中存储时间最长的一项,并将最近的一个已执行阶段的线程推测执行能力加入全局历史移位寄存器。
13.根据权利要求12所述的评估器,其特征在于:
所述全局历史移位寄存器中存储有最近的三个已执行阶段的线程推测深度值。
14.一种串行程序线程级推测执行能力评估器,其特征在于包括:
计数器,用于从串行程序任一执行阶段的非推测线程开始计数,获取该执行阶段正确推测线程数目,并确定为该执行阶段的线程推测深度值,并按照上述方式分别获取串行程序的多个已执行阶段的线程推测深度值;
第一存储单元,包括推测深度局部历史表,用于以所述执行阶段的非推测线程为索引,将该执行阶段的线程推测深度值存储到推测深度局部历史表中;
第二存储单元,包括全局历史移位寄存器,用于分别将所述多个已执行阶段的线程推测深度值存储到全局历史移位寄存器;
第一预测单元,用于以当前执行阶段的非推测线程为索引,访问推测深度局部历史表,将返回值作为所述执行阶段的线程级推测执行能力的第一评估值;
第二预测单元,用于将所述多个已执行阶段的线程推测深度值平均值作为当前执行阶段线程级推测执行能力的第二评估值;
评估偏差比较单元,用于将所述当前执行阶段的线程推测深度值分别和所述第一评估值、第二评估值相比较;
评估确定单元,用于当第一评估值更接近所述当前执行阶段的线程推测深度值时,在所述当前执行阶段下一次执行前,以其非推测线程为索引访问所述推测深度局部历史表,将得到的值确定为其下一次执行时的线程级推测执行能力评估值;当第二评估值更接近当前执行阶段的线程推测深度值时,确定多个已执行阶段的线程推测深度值的平均值为其下一次执行时的线程级推测执行能力评估值。
15.根据权利要求14所述的评估器,其特征在于,还包括:
第一更新单元,用于在任一执行阶段执行结束后,以所述计数器获取到的该执行阶段的线程推测深度值,更新所述推测深度局部历史表中该执行阶段的非推测线程索引的值;
第二更新单元,用于移除全局历史移位寄存器中存储时间最长的一项,将最近的已执行阶段的线程推测执行能力加入全局历史移位寄存器。
16.根据权利要求14或15所述的评估器,其特征在于:
所述全局历史移位寄存器中分别存储有最近的三个已执行阶段的线程推测深度值。
CN 201010278549 2010-09-07 2010-09-07 串行程序线程级推测执行能力评估方法和评估器 Expired - Fee Related CN102063289B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010278549 CN102063289B (zh) 2010-09-07 2010-09-07 串行程序线程级推测执行能力评估方法和评估器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010278549 CN102063289B (zh) 2010-09-07 2010-09-07 串行程序线程级推测执行能力评估方法和评估器

Publications (2)

Publication Number Publication Date
CN102063289A CN102063289A (zh) 2011-05-18
CN102063289B true CN102063289B (zh) 2013-10-16

Family

ID=43998580

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010278549 Expired - Fee Related CN102063289B (zh) 2010-09-07 2010-09-07 串行程序线程级推测执行能力评估方法和评估器

Country Status (1)

Country Link
CN (1) CN102063289B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699458B (zh) * 2013-06-28 2017-02-01 中国科学院计算技术研究所 一种提高动态冗余多线程性能和降低功耗开销的方法及系统
CN105260165B (zh) * 2015-10-10 2018-01-05 西安交通大学 基于smt的线程级推测系统中推测线程数目的动态控制方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
CN101290592B (zh) * 2008-06-03 2010-10-13 浙江大学 一种mpsoc上多道程序共享spm的实现方法

Also Published As

Publication number Publication date
CN102063289A (zh) 2011-05-18

Similar Documents

Publication Publication Date Title
US9715408B2 (en) Data-aware workload scheduling and execution in heterogeneous environments
Che et al. Pannotia: Understanding irregular GPGPU graph applications
Lorenzon et al. Parallel computing hits the power wall: principles, challenges, and a survey of solutions
CN101908003B (zh) 并行化查询的多核调度
Genbrugge et al. Chip multiprocessor design space exploration through statistical simulation
JP2014500562A (ja) 自動的にプログラムを複数の並列スレッドに分解するハードウェア及びソフトウェアシステム用のシステム、装置、及び方法
CN103562866A (zh) 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US20130318538A1 (en) Estimating a performance characteristic of a job using a performance model
CN104572260A (zh) 用于实现事务内存区域提升的代码版本控制的方法和设备
Tiwari et al. Predicting optimal power allocation for cpu and dram domains
Lira et al. Hk-nuca: Boosting data searches in dynamic non-uniform cache architectures for chip multiprocessors
US10936367B2 (en) Provenance driven job relevance assessment
CN102063289B (zh) 串行程序线程级推测执行能力评估方法和评估器
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
Booth et al. Phase detection with hidden markov models for dvfs on many-core processors
Rawlins et al. A cache tuning heuristic for multicore architectures
Lewis et al. QmiraXT-A Multithreaded QBF Solver.
Lin et al. Tessel: Boosting Distributed Execution of Large DNN Models via Flexible Schedule Search
Eggenberger et al. Globally asynchronous locally synchronous simulation of nocs on many-core architectures
Li et al. mPlogP: A parallel computation model for heterogeneous multi-core computer
Bielby Ultra low power cooperative branch prediction
Dublish Managing the memory hierarchy in GPUs
Peng et al. Static cost estimation for data layout selection on GPUs
Zang et al. CaPPS: cache partitioning with partial sharing for multi-core embedded systems
Saba et al. Anytime algorithms for gpu architectures

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131016

Termination date: 20200907

CF01 Termination of patent right due to non-payment of annual fee