天天看点

A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第六章)

A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第六章)

  1. 改进AMP能效
    • Kumar通过动态估计程序对资源的需求,然后将其映射到合适的core上,以节省能源
    • Sawalha提出了一种动态调度的技术。应用程序行为随程序阶段的变化而变化,动态地调整映射可以显著地降低能耗。方法:间隔10K条指令(指令窗口),根据当前指令块的执行信息,估计当前工作集的签名,判断是否程序行为已经发生了变化。如果发生变化,则估计每个类型的核上该线程的EDP,选择最小的EDP的core执行。签名和EDP会被纪录下来,之后可以查找重复使用
    • Nishtala提供了一种基于程序的计算和存储需求的调度策略。计算和存储需求可以通过检测提交指令数和LLC的缺失率来反映。对于高IPS和低LLC缺失率的线程调度到大核上执行,低IPS和高LLC缺失率的线程调度到小核上执行
    • Padmanabha提出传统的线程迁移策略无法快速应对细粒度的性能变化(数百条指令)。解决:存储当前程序的上下文和每个阶段的执行历史,利用这些历史信息进行预测阶段变化,然后提前将程序迁移到合适的核上执行
    • Zhang提出了使用一组规则指导线程调度。实现设定一组判断规则(决策树),然后根据线程运行时行为,例如cache misses,取指周期,停顿周期等信息,进行规则判断,最终给出能效最高的映射方案
  2. 改善AMP性能
    • 带有相关关系的线程,以推测的方式在小核上并行执行,从而提高性能。但是推测错误会损失能量,因此需要动态的线程级别的推测管理
    • Luo提出了一种机制用于决定推测执行的线程在哪一种类型的core(SMT和CMP)上执行,从而能够提高能效。当推测的线程和正常的线程冲突太多,此时推测的线程放在独立的CMP中执行,能效会更高,反之亦然。当TLP较高时,使用单独的CMP能够提高性能;当cache缺失率较高或者同步操作导致的停顿过于频繁时,SMT能够提供更高的能效。
    • Liu提出了一种动态调度的技术,用于在功耗限制的情况下,提高性能。该技术采用了一种新的算法,将通用的映射问题转换为一个0-1的整数线性程序,并且提供了一种算法复杂度为n2的解决方法
    • Becchi提出在AMP中,动态线程迁移策略能够比静态的策略提供更大的性能改进
  3. 解决多线程应用的瓶颈
    • 在AMP中如果使用一个简单的调度策略,在某些情况下可能不会提升MT程序的性能,甚至还会降低性能(多线程程序中的CS代码,串行代码却运行在了小核上)
    • Suleman提出了将线程中的CS代码在大核上运行,以加速执行,同时减少线程的串行化。只在大核上执行CS代码,可以避免在缓存之间频繁迁移锁和共享数据。当多个CS争用大核时,必须能够保证选择其中一个CS执行,其它在小核执行,否则需要大核支持SMT
    • Lakshminarayana提出大多数在一起创建的线程的执行时间接近(并行程序的特点,一个代码多个线程)。此时在线程创建时,纪录这个特征,在多个线程中选择剩余执行时间最长的放在大核上执行,以提高性能
    • Saez提出了一种在AMP中调度单线程和多线程程序的技术。通过比较不同程序的utility factor来决定哪一个程序应该放在更快的cores上执行。UF代表着当前程序占用所有的快的core和一些其它的更慢一点的cores和当前程序只在慢的cores上运行时的加速比。
    • Joao提出,在MT程序中,性能受限的原因:较慢线程的影响(cache miss等),瓶颈的影响(CS)。这两种加速方法在结合时,需要考虑分别带来的好处(取决于程序当前的阶段,输入,HW0)。论文针对这两种方法,提供了一种度量方式,从而能够决定哪一个应该在大核上执行
    • Markovic提出了一种硬件中的线程的lock section-aware 调度策略(TLSS) 。为了避免修改OS的调度策略,OS始终只会认为线程会被调度在相同的逻辑核上,而不是真实AMP中的物理核。此时利用TLSS将逻辑核中运行的线程映射到物理核中。论文认为,当一个core最近从执行内核代码过渡到了用户代码,标明一个线程达到了一个同步点并等待一个lock。此时TLSS会尽可能将该线程调度到物理的大核上加速执行。如果没有发现这种情况,TLSS会将目前在小核上运行的线程,在下一个硬件切换映射时,将其迁移到大核
  4. AMP中的公平性保证
    • Petrucci利用一种彩票调度的方法减少AMP中线程的不公平性。首先需要监视当前线程在当前核中的性能,并估计该线程在其他的核上的性能。然后为每个线程分配一定数量的彩票,彩票的数量取决于在大核上运行和在小核上运行线程的能效比。根据每个线程得到的彩票的数量进行调度(抽签),越多越有可能放在大核上执行。
    • Van提出以性能为导向或者固定的调度策略都会导致较大的不公平性。同时论文提出了两种保证更公平并且高性能的调度策略
      • “等时间”调度在每个核心类型上运行每个线程(或工作负载)的时间是相等的
      • “等进度”调度,目标是在每个核心类型上完成相同数量的工作
    • Saez提出一种改善公平性并且能够保证一定的吞吐量。主要思考是保证每个程序经历了相同的由于线程迁移而带来的减速。对于单线程程序,使用计数器纪录当前程序相对于整个程序占用一个大核的执行情况的进展(当前进展/在大核执行的进展)。对于多线程程序,纪录当前线程相对于同一个程序中其它线程的进展情况。如果纪录的相对进展情况超过某个阈值,则需要迁移线程。
  5. 保持应用的优先级
    • 为高优先级程序保留相同的内核(大核或者小核)
    • 为高优先级程序保留不同类型的核,低优先级程序使用剩余的核
      A Survey of Techniques for Architecting and Managing Asymmetric Multicore Processors(第六章)
  6. AMP中避免性能差异
    • 在AMP中将线程调度到不同的核上,有时会有非常大的性能差距,这个时候就需要尽可能避免这种差异
    • Balakrishnan提出了一种asymmetry-aware(已知异构特性的)OS调度器。该调度器会将应用从慢的核迁移到快的核,以保证一个更快的核只会在更慢的核之后空闲,即快的核会一直工作
    • Li提出了一种OS调度器,它会纪录每个核在启动时的计算能力,并且在运行是根据每个核的计算能力分配负载,已实现负载平衡。当更快的核没有得到充分利用时,线程会被迁移到这些核。
    • Morad提出在多个共同运行的多线程应用,串行线程会和并行线程一起竞争处理器资源。因此他们提出一种调度策略,赋予串行线程更高的优先级,从而更有可能在更快的核上执行。当多个应用都有串行线程时,只有一个线程在更快的核上执行,执行时间固定,其它的线程在剩余的核上执行。
  7. 针对特定应用领域的AMP优化技术
    • Ko提出在移动设备中,应用会显示出非常不同的应用需求。例如多媒体应用会有很高的CPU利用率,而后台进程则只有很少的CPU利用率。因此将所有的后台任务分配给一个小核。当大核无任务时,自动关闭,节约能源
    • Ra也是针对于移动领域,他们将一个高性能应用处理器AP和低功耗处理器LP组合,提供更高的能效。传感器任务和缓冲任务在LP上执行,计算密集程序在AP上执行
    • Zhu针对的是移动端的浏览器,Web页面的加载时间对于用户影响非常大,同时低功耗也是最大化电池寿命的必要条件。因此他们提出一种调度技术,将Web页面加载工作调度到AMP中最适合的核上执行,同时提供最有的DVFS设置,从而满足严格的执行时间限制同时节省能源
    • Muhlbauer提出对于并行查询处理任务,大核或者小核能够提供更好的EDP,取决于LLC能够容纳所有工作集。论文构建了一个分段多元线性回归模型,用于估计 给定的核的类型和特定的工作负载参数 的工作负载的性能和能源消耗,从而将负载调度到能够最小化EDP的核上执行

继续阅读