基于smt的线程级推测系统中推测线程数目的动态控制方法

文档序号:9505975阅读:184来源:国知局
基于smt的线程级推测系统中推测线程数目的动态控制方法
【技术领域】
[0001] 本发明属于计算机领域,涉及线程级并行与线程级推测技术,特别涉及基于SMT 的线程级推测系统中推测线程数目的动态控制方法。
【背景技术】
[0002] 线程级推测(Thread-Level Speculation, TLS),作为一种主流的线程级并行技 术,能够从非规则串行程序中识别和提取出多个具有潜在控制与数据依赖的线程。这些线 程在执行模型的作用下,按照正确的串行语义进行激发、执行、验证和提交,用于实现整个 程序的自动化推测并行。在传统推测执行过程中,每个循环所需的推测线程的个数总是被 简单地假定与当前处理器核的个数保持一致,同时认为其潜在的并行性能能够随着处理器 核数目的增加而获得相应的线性提升。然而,每个循环的性能总是受到所分配处理器资源 的限制。不合适的处理器资源分配,不仅会引发频繁的线程间数据依赖违规,而且还会造成 低效率的处理器资源利用,导致每个循环难以在有效的代价开销下达到预期的执行效果。
[0003] 特别地,当多个线程同时执行在SMT处理器上时,所有线程将会始终共享所在处 理器上的所有硬件资源。当所分配的推测线程数目减少时,对于那些具有频繁数据依赖的 循环,其潜在的线程间性能干扰能够得到有效地改善。相比之下,那些具有较高数据独立性 的循环将会因所分配的推测线程数目过少而不能充分发挥潜在的并行性能,从而极大地影 响整个循环的性能提升。反之,当所分配的推测线程数目增多时,随着线程指令派遣的增 加,所有正在并行执行的线程将会迅速占用所有可用的处理器资源。一旦线程所需的处理 器资源处于饱和状态时,将会很容易引发频繁的资源竞争,导致部分具有较高并行优先权 的线程因缺乏可用的处理器资源而产生额外的执行延迟,最终影响整个程序的并行效率。

【发明内容】

[0004] 本发明的目的在于提供一种基于SMT的线程级推测系统中推测线程数目的动态 控制方法,该方法能够对每个循环所需的推测线程数目进行不断地预测和动态调整,以实 现整个程序的动态自适应线程分配过程。
[0005] 为达到上述目的,本发明采取以下的技术方案来实现:
[0006] -种基于SMT的线程级推测系统中推测线程数目的动态控制方法,包括以下步 骤:
[0007] 步骤一,在编译时采取贪心的循环选择的基础上,结合运行时的循环调度策略和 当前线程分配的需求,选择候选循环在所分配的处理器资源上进行推测并行和循环性能剖 析;
[0008] 步骤二,在循环性能剖析中,根据线程内和线程间的性能影响作用,提取出循环推 测执行过程中的正向线程性能干扰和负向线程性能干扰,并计算得到相应的正向性能估计 值和负向性能估计值;
[0009] 步骤三,识别出每个线程在推测并行过程中所属的推测级,再以各个推测级为单 位,利用单个线程的正向性能估计值和负向性能估计值来估算和量化在当前线程分配下各 个推测级的并行代价开销,用于对整个循环的执行结果进行性能评估和能效评估;
[0010] 步骤四,根据整个循环的评估结果,采用线程分配算法预测整个循环在不同循环 调用过程中所需的推测线程数目,并将此结果反馈到循环性能表中,用于指导不同循环调 用间的线程分配和资源调度;
[0011] 步骤五,利用循环性能表中当前循环的线程分配信息计算所激发线程的相对位 置,进行推测线程和处理器核之间的动态映射以及资源调度,完成整个循环在所分配的处 理器资源上的一次推测执行;
[0012] 步骤六,若当前循环在一次推测执行结束时,经性能评估和能效评估之后,仍未找 到所需的推测线程数目,那么在后续的循环调用过程中,将会重复步骤一至步骤五,直到找 到合适的线程分配结果为止;若当前循环在一次推测执行结束时已经找到所需的推测线程 数目,将会停止对当前循环进行再次线程分配,并在后续的循环调用过程中重复利用当前 所找到的推测线程数目,直到整个程序执行结束,至此即完成了 SMT的线程级推测系统中 对于推测线程数目的动态控制。
[0013] 所述步骤二中得到正向性能估计值和负向性能估计值的具体步骤如下:
[0014] 2-1)利用线程执行周期分解技术,构建基于硬件的线程周期计数框架,根据处理 器流水线指令调度阶段中分派槽的占用与空闲状态的分析与统计,得到对每个线程指令执 行周期的动态监测;
[0015] 2-2)在动态监测过程中,借助于四个周期计数组件来分解和计算每个线程的执行 时间,即基本周期计数组件,流水线前端周期计数组件,流水线后端周期计数组件和推测等 待周期计数组件,每个周期计数组件都由一个或多个计数器组成,将每个周期计数组件中 所有计数器所统计的分派槽的个数除以整个处理器的分派带宽即得到每个周期计数组件 的执行时间;
[0016] 2-3)根据各个周期计数组件的执行时间以及线程内和线程间的相互性能影响,定 义正向线程性能干扰和负向线程性能干扰,其中正向线程性能干扰指所有非推测指令的执 行时间以及在线程推测过程中各种数据预提取和数据共享情形所缩短的有效执行时间的 总和,负向线程性能干扰指所有推测指令的执行时间以及因线程的推测执行所引发的额外 执行时间的总和;然后利用行为调整手段对已发生并行行为变化的周期计数组件进行相应 的性能预测和行为校正,以得到正向线程性能干扰和负向线程性能干扰各自准确的执行时 间,即正向性能估计值和负向性能估计值。
[0017] 所述步骤三中推测级通过以下公式计算得到:
[0018] A)若当前线程所分配的处理器核ID大于等于非推测线程所分配的处理器核ID, 则当前线程的推测级通过等式dist = curr_cxt_non_spec_cxt得到;
[0019] B)若当前线程所分配的处理器核ID小于非推测线程所分配的处理器核ID,则当 前线程的推测级通过等式 dist = curr_cxt+MAX_NUM_CONTEXT_non_spec_cxt 得到;
[0020] 其中,curr_cxt和non_spec_cxt分别表示当前线程和非推测线程所分配的处 理器核ID,dist表示当前线程相对于非推测线程所计算获得的推测级结果,MAX_NUM_ CONTEXT表示运行时处理器中所有可用的处理器核的个数。
[0021] 所述步骤三中整个循环的性能评估和能效评估通过以下步骤得到:
[0022] 3-1)根据线程的正向性能估计值和负向性能估计值,将每个推测级i的并行代价 划分为四个部分,表示推测级i的基本正向并行代价,指在推测级i上所有非推测 指令的执行时间以及各种数据预提取和数据共享情形所缩短的的执行时间总和, 表示推测级i的基本负向并行代价,指在推测级i上所有推测指令的执行时间以及因线程 的推测执行所引发的额外执行时间的总和,分别表示推测级i的推测正向 并行代价和推测负向并行代价,通过识别和计算各个周期计数组件行为调整中的正向性能 估计值和负向性能估计值得到;
[0023] 3-2)通过计算推测级i中所有线程的正向性能估计值和负向性能估计值,将基本 正向并行代价和推测正向并行代价的总和记作推测级i的总正向并行代价 开销,將基本负向并行代价贫―^和推测负向并行代价的总和记作推测级i的 总负向并行代价开销〇#1
[0024] 3-3)将推测级i中总正向并行代价开销和推测负向并行代价两者之 间的差值记作推测级i的预测串行执行时间,并将各个推测级的预测串行执行时间总和记 作整个循环的预测串行执行时间,再减去整个循环的实际并行时间则得到当前线程分配下 整个循环推测执行的并行收益,用于对当前线程分配下整个循环的执行结果进行性能评 估;
[0025] 3-4)采用基于推测级的代价评估和基于非推测级的代价评估对当前线程分配下 整个循环的执行结果进行能效评估,具体包括以下步骤:
[0026] a)基于推测级的代价评估是将两者之间的差值作为评估标准,用于判 定推测级i的并行执行效率,若S ,:表明推测级i利于循环并行性能的提升,将会被 保留并在下次循环调用中继续进行推测并行;当μ 时,表明推测级i不利于循环并 行性能的提升,在下次循环调用过程中将不再派遣任何线程到此推测级上进行推测执行;
[0027] b)基于非推测级的代价评估是通过非推测级的总正向并行代价与其它所有推测 级的总正向并行代价之和的比值得到的,用于评估当前线程分配下非推测级的执行效率, 若当前非推测级的代价评估结果大于等于其上一次的代价评估结果,则当前线程分配不利 于整个循环并行性能的提升,若当前非推测级的代价评估结果小于其上一次的代价评估结 果,则当前线程分配有利于高能效的循环推测并行。
[0028] 所述步骤四中循环调用过程中所需的推测线程数目具体通过以下步骤得到:
[0029] 4-1)若当前循环从未进行过线程分配,则初始时分配的推测线程数目等于所有可 用的处理器核的个数,否则依据当前循环的前两次循环调用中循环迭代次数是否相等来判 定线程分配结果,若不等,则仅以最近一次循环调用中线程分配的结果为准来指导线程分 配,若相等,则根据当前循环所处的线程分配模式进行进一步的判定;
[0030] 4-2)若当前循环已找到恰当的推测线程数目,表明当前循环的线程分配模式为固 定模式Fixed Mode,直接将已找到的线程分配结果分配给当前循环的后续循环调用,进行 重复利用即可;
[0031] 4-3)若当前循环仅根据性能评估结果来判定推测线程数目,表明当前循环的线程 分配模式为步进模式Stepping Mode,需要利用当前线程分配的结果和所设置的步长两者 之间的差值来判定下次循环调用所需分配的推测线程数目;其中所设置的步长为每次循环 调用所需减少的推测线程的个数;
[0032] 4-4)若当前循环仅根据能效评估结果来判定推测线程数目,表明当前循环的线程 分配模式为激进模式Aggressive Mode,估算当前循环非推测级所占比值,若当前非推测级 所占比值小于上次循环调用所得到的非推测级比值,则直接转换为步进模式,并按照步进 模式分配当前循环所需的推测线程数目;否则依次对每个推测级分别进行正向性能估计和 负向性能估计,直至某个推测级的正向性能估计值小于相应的负向性能估计值时为止,在 此过程中,累计所有正向性能估计值大于负向性能估计值的推测级的个数,并将此统计结 果作为线程分配的标准,用于决定下次循环调用所需分配的推测线程数目;
[0033] 4-5)当前循环在得到所需的推测线程数目之后,调度与所需的推测线程数目相等 的处理器核分配给当前循环进行推测执行;
[0034] 4-6)在循环推测执行过程中,计算当前循环的并行收益,对当前线程分配结果进 行性能评估,若当前循环调用的并行收益小于上次循环调用的并行收益,则更新当前线程 分配模式为固定模式,表明已找到合适的推测线程数目;否则保持当前线程分配模式不变, 并在后续循环调用中继续查找当前循环所需的推测线程数目。
[0035] 所述步骤四和步骤五中的循环性能表中包含以下信息:循环标识符,当前循环调 用所分配的起始处理器核的位置,当前循环调用所允许分配的推测线程数目,当前循环调 用之前连续两次循环调用的循环迭代次数以及所分配的推测线程数目,上次循环调用的非 推测级所占比值,以及上次循环调用的并行收益。
[0036] 所述步骤五中获得推测线程和处理器核之间的动态映射的具体步骤如下:
[0037] 5-1)若当前循环从未进行过线程分配,则所有的处理器核均对当前循环可用,并 按照循环方式计算和查找当前线程的
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1