基于SMT的线程级推测系统中推测线程数目的动态控制方法技术方案

技术编号:12733127 阅读:56 留言:0更新日期:2016-01-20 16:24
本发明专利技术公开了一种基于SMT的线程级推测系统中推测线程数目的动态控制方法,主要通过动态检测每个循环运行时的并行执行特征来判定每次循环调用所需分配的推测线程数目,以达到充分挖掘循环潜在并行性能和提高处理器资源有效利用率的目的。在进行线程分配之前,需要对所选循环进行运行时的性能剖析,动态监测和估算所有激发线程在整个循环推测执行过程中所带来的正向和负向性能干扰作用。在此基础上,将所有激发线程按照自身所属的推测级为单位,对当前线程分配下的各个推测级进行相应的性能评估和能效评估。最后,再根据各个推测级的评估结果,预测所选循环在下次循环调用中所需分配的推测线程数目,以确保整个循环的高能效推测执行。

【技术实现步骤摘要】

本专利技术属于计算机领域,涉及线程级并行与线程级推测技术,特别涉及基于SMT的线程级推测系统中推测线程数目的动态控制方法
技术介绍
线程级推测(Thread-LevelSpeculation,TLS),作为一种主流的线程级并行技术,能够从非规则串行程序中识别和提取出多个具有潜在控制与数据依赖的线程。这些线程在执行模型的作用下,按照正确的串行语义进行激发、执行、验证和提交,用于实现整个程序的自动化推测并行。在传统推测执行过程中,每个循环所需的推测线程的个数总是被简单地假定与当前处理器核的个数保持一致,同时认为其潜在的并行性能能够随着处理器核数目的增加而获得相应的线性提升。然而,每个循环的性能总是受到所分配处理器资源的限制。不合适的处理器资源分配,不仅会引发频繁的线程间数据依赖违规,而且还会造成低效率的处理器资源利用,导致每个循环难以在有效的代价开销下达到预期的执行效果。特别地,当多个线程同时执行在SMT处理器上时,所有线程将会始终共享所在处理器上的所有硬件资源。当所分配的推测线程数目减少时,对于那些具有频繁数据依赖的循环,其潜在的线程间性能干扰能够得到有效地改善。相比之下,那些具有较高数据独立性的循环将会因所分配的推测线程数目过少而不能充分发挥潜在的并行性能,从而极大地影响整个循环的性能提升。反之,当所分配的推测线程数目增多时,随着线程指令派遣的增加,所有正在并行执行的线程将会迅速占用所有可用的处理器资源。一旦线程所需的处理器资源处于饱和状态时,将会很容易引发频繁的资源竞争,导致部分具有较高并行优先权的线程因缺乏可用的处理器资源而产生额外的执行延迟,最终影响整个程序的并行效率。
技术实现思路
本专利技术的目的在于提供一种基于SMT的线程级推测系统中推测线程数目的动态控制方法,该方法能够对每个循环所需的推测线程数目进行不断地预测和动态调整,以实现整个程序的动态自适应线程分配过程。为达到上述目的,本专利技术采取以下的技术方案来实现:一种基于SMT的线程级推测系统中推测线程数目的动态控制方法,包括以下步骤:步骤一,在编译时采取贪心的循环选择的基础上,结合运行时的循环调度策略和当前线程分配的需求,选择候选循环在所分配的处理器资源上进行推测并行和循环性能剖析;步骤二,在循环性能剖析中,根据线程内和线程间的性能影响作用,提取出循环推测执行过程中的正向线程性能干扰和负向线程性能干扰,并计算得到相应的正向性能估计值和负向性能估计值;步骤三,识别出每个线程在推测并行过程中所属的推测级,再以各个推测级为单位,利用单个线程的正向性能估计值和负向性能估计值来估算和量化在当前线程分配下各个推测级的并行代价开销,用于对整个循环的执行结果进行性能评估和能效评估;步骤四,根据整个循环的评估结果,采用线程分配算法预测整个循环在不同循环调用过程中所需的推测线程数目,并将此结果反馈到循环性能表中,用于指导不同循环调用间的线程分配和资源调度;步骤五,利用循环性能表中当前循环的线程分配信息计算所激发线程的相对位置,进行推测线程和处理器核之间的动态映射以及资源调度,完成整个循环在所分配的处理器资源上的一次推测执行;步骤六,若当前循环在一次推测执行结束时,经性能评估和能效评估之后,仍未找到所需的推测线程数目,那么在后续的循环调用过程中,将会重复步骤一至步骤五,直到找到合适的线程分配结果为止;若当前循环在一次推测执行结束时已经找到所需的推测线程数目,将会停止对当前循环进行再次线程分配,并在后续的循环调用过程中重复利用当前所找到的推测线程数目,直到整个程序执行结束,至此即完成了SMT的线程级推测系统中对于推测线程数目的动态控制。所述步骤二中得到正向性能估计值和负向性能估计值的具体步骤如下:2-1)利用线程执行周期分解技术,构建基于硬件的线程周期计数框架,根据处理器流水线指令调度阶段中分派槽的占用与空闲状态的分析与统计,得到对每个线程指令执行周期的动态监测;2-2)在动态监测过程中,借助于四个周期计数组件来分解和计算每个线程的执行时间,即基本周期计数组件,流水线前端周期计数组件,流水线后端周期计数组件和推测等待周期计数组件,每个周期计数组件都由一个或多个计数器组成,将每个周期计数组件中所有计数器所统计的分派槽的个数除以整个处理器的分派带宽即得到每个周期计数组件的执行时间;2-3)根据各个周期计数组件的执行时间以及线程内和线程间的相互性能影响,定义正向线程性能干扰和负向线程性能干扰,其中正向线程性能干扰指所有非推测指令的执行时间以及在线程推测过程中各种数据预提取和数据共享情形所缩短的有效执行时间的总和,负向线程性能干扰指所有推测指令的执行时间以及因线程的推测执行所引发的额外执行时间的总和;然后利用行为调整手段对已发生并行行为变化的周期计数组件进行相应的性能预测和行为校正,以得到正向线程性能干扰和负向线程性能干扰各自准确的执行时间,即正向性能估计值和负向性能估计值。所述步骤三中推测级通过以下公式计算得到:A)若当前线程所分配的处理器核ID大于等于非推测线程所分配的处理器核ID,则当前线程的推测级通过等式dist=curr_cxt-non_spec_cxt得到;B)若当前线程所分配的处理器核ID小于非推测线程所分配的处理器核ID,则当前线程的推测级通过等式dist=curr_cxt+MAX_NUM_CONTEXT-non_spec_cxt得到;其中,curr_cxt和non_spec_cxt分别表示当前线程和非推测线程所分配的处理器核ID,dist表示当前线程相对于非推测线程所计算获得的推测级结果,MAX_NUM_CONTEXT表示运行时处理器中所有可用的处理器核的个数。所述步骤三中整个循环的性能评估和能效评估通过以下步骤得到:3-1)根据线程的正向性能估计值和负向性能估计值,将每个推测级i的并行代价划分为四个部分,表示推测级i的基本正向并行代价,指在推测级i上所有非推测指令的执行时间以及各种数据预提取和数据共享情形所缩短的的执行时间总和,表示推测级i的基本负向并行代价,指在推测级i上所有推测指令的执行时间以及因线程的推测执行所引发的额外执行时间的总和,和分别表示推测级i的推测正向并行代价和推测负向并行代价,通过识别和计算各个周期计数组件行为调整中的正向性能估计值和负向性能估计值得到;3-2)通过计算推测级i中所有线程的正向性能估计值和负向性能估计值,将基本正向并行代价和推测正向并行代价的总和记作推测级i的总正向并行代价开销将基本负向并行本文档来自技高网
...
基于SMT的线程级推测系统中推测线程数目的动态控制方法

【技术保护点】
一种基于SMT的线程级推测系统中推测线程数目的动态控制方法,其特征在于,包括以下步骤:步骤一,在编译时采取贪心的循环选择的基础上,结合运行时的循环调度策略和当前线程分配的需求,选择候选循环在所分配的处理器资源上进行推测并行和循环性能剖析;步骤二,在循环性能剖析中,根据线程内和线程间的性能影响作用,提取出循环推测执行过程中的正向线程性能干扰和负向线程性能干扰,并计算得到相应的正向性能估计值和负向性能估计值;步骤三,识别出每个线程在推测并行过程中所属的推测级,再以各个推测级为单位,利用单个线程的正向性能估计值和负向性能估计值来估算和量化在当前线程分配下各个推测级的并行代价开销,用于对整个循环的执行结果进行性能评估和能效评估;步骤四,根据整个循环的评估结果,采用线程分配算法预测整个循环在不同循环调用过程中所需的推测线程数目,并将此结果反馈到循环性能表中,用于指导不同循环调用间的线程分配和资源调度;步骤五,利用循环性能表中当前循环的线程分配信息计算所激发线程的相对位置,进行推测线程和处理器核之间的动态映射以及资源调度,完成整个循环在所分配的处理器资源上的一次推测执行;步骤六,若当前循环在一次推测执行结束时,经性能评估和能效评估之后,仍未找到所需的推测线程数目,那么在后续的循环调用过程中,将会重复步骤一至步骤五,直到找到合适的线程分配结果为止;若当前循环在一次推测执行结束时已经找到所需的推测线程数目,将会停止对当前循环进行再次线程分配,并在后续的循环调用过程中重复利用当前所找到的推测线程数目,直到整个程序执行结束,至此即完成了SMT的线程级推测系统中对于推测线程数目的动态控制。...

【技术特征摘要】
1.一种基于SMT的线程级推测系统中推测线程数目的动态控制方法,其特征在于,包括
以下步骤:
步骤一,在编译时采取贪心的循环选择的基础上,结合运行时的循环调度策略和当前线程
分配的需求,选择候选循环在所分配的处理器资源上进行推测并行和循环性能剖析;
步骤二,在循环性能剖析中,根据线程内和线程间的性能影响作用,提取出循环推测执行
过程中的正向线程性能干扰和负向线程性能干扰,并计算得到相应的正向性能估计值和负向性
能估计值;
步骤三,识别出每个线程在推测并行过程中所属的推测级,再以各个推测级为单位,利用
单个线程的正向性能估计值和负向性能估计值来估算和量化在当前线程分配下各个推测级的
并行代价开销,用于对整个循环的执行结果进行性能评估和能效评估;
步骤四,根据整个循环的评估结果,采用线程分配算法预测整个循环在不同循环调用过程
中所需的推测线程数目,并将此结果反馈到循环性能表中,用于指导不同循环调用间的线程分
配和资源调度;
步骤五,利用循环性能表中当前循环的线程分配信息计算所激发线程的相对位置,进行推
测线程和处理器核之间的动态映射以及资源调度,完成整个循环在所分配的处理器资源上的一
次推测执行;
步骤六,若当前循环在一次推测执行结束时,经性能评估和能效评估之后,仍未找到所需
的推测线程数目,那么在后续的循环调用过程中,将会重复步骤一至步骤五,直到找到合适的
线程分配结果为止;若当前循环在一次推测执行结束时已经找到所需的推测线程数目,将会停
止对当前循环进行再次线程分配,并在后续的循环调用过程中重复利用当前所找到的推测线程
数目,直到整个程序执行结束,至此即完成了SMT的线程级推测系统中对于推测线程数目的
动态控制。
2.根据权利要求1所述的基于SMT的线程级推测系统中推测线程数目的动态控制方法,
其特征在于,所述步骤二中得到正向性能估计值和负向性能估计值的具体步骤如下:
2-1)利用线程执行周期分解技术,构建基于硬件的线程周期计数框架,根据处理器流水
线指令调度阶段中分派槽的占用与空闲状态的分析与统计,得到对每个线程指令执行周期的动
态监测;
2-2)在动态监测过程中,借助于四个周期计数组件来分解和计算每个线程的执行时间,
即基本周期计数组件,流水线前端周期计数组件,流水线后端周期计数组件和推测等待周期计
数组件,每个周期计数组件都由一个或多个计数器组成,将每个周期计数组件中所有计数器所
统计的分派槽的个数除以整个处理器的分派带宽即得到每个周期计数组件的执行时间;
2-3)根据各个周期计数组件的执行时间以及线程内和线程间的相互性能影响,定义正向
线程性能干扰和负向线程性能干扰,其中正向线程性能干扰指所有非推测指令的执行时间以及
在线程推测过程中各种数据预提取和数据共享情形所缩短的有效执行时间的总和,负向线程性
能干扰指所有推测指令的执行时间以及因线程的推测执行所引发的额外执行时间的总和;然后
利用行为调整手段对已发生并行行为变化的周期计数组件进行相应的性能预测和行为校正,以
得到正向线程性能干扰和负向线程性能干扰各自准确的执行时间,即正向性能估计值和负向性
能估计值。
3.根据权利要求1所述的基于SMT的线程级推测系统中推测线程数目的动态控制方法,
其特征在于,所述步骤三中推测级通过以下公式计算得到:
A)若当前线程所分配的处理器核ID大于等于非推测线程所分配的处理器核ID,则当前
线程的推测级通过等式dist=curr_cxt-non_spec_cxt得到;
B)若当前线程所分配的处理器核ID小于非推测线程所分配的处理器核ID,则当前线程
的推测级通过等式dist=curr_cxt+MAX_NUM_CONTEXT-non_spec_cxt得到;
其中,curr_cxt和non_spec_cxt分别表示当前线程和非推测线程所分配的处理器核ID,
dist表示当前线程相对于非推测线程所计算获得的推测级结果,MAX_NUM_CONTEXT表示
运行时处理器中所有可用的处理器核的个数。
4.根据权利要求2所述的基于SMT的线程级推测系统中推测线程数目的动态控制方法,
其特征在于,所述步骤三中整个循环的性能评估和能效评估通过以下步骤得到:
3-1)根据线程的正向性能估计值和负向性能估计值,将每个推测级i的并行代价划分为
四个部分,表示推测级i的基本正向并行代价,指在推测级i上所有非推测指令的执行
时间以及各种数据预提取和数据共享情形所缩短的的执行时间总和,表示推测级i的
基本负向并行代价,指在推测级i上所有推测指令的执行时间以及因线程的推测执行所引发的
额外执行时间的总和,和分别表示推测级i的推测正向并行代价和推测负向并
行代价,通过识别和计算各个周期计数组件行为调整中的正向性能估计值和负向性能估计值得
到;
3-2)通过计算推测级i中所有线程的正向性能估计值和负向性能估计值,将基本正向并
行代价和推测正向并行代价的总和记作推测级i的总正向并行代价开销将基本负向并行代价和推测负向并行代价的总和记作推测级i的总负向并行代
价开销3-3)将推测级i中总正向并行代价开销和推测负向...

【专利技术属性】
技术研发人员:赵银亮李美蓉王启明侍加强刘凯张磊
申请(专利权)人:西安交通大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1