0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

面向ARM异构多核系统的性能分析与效能优化

倩倩 来源:算力基建 作者:算力基建 2022-09-22 14:56 次阅读

268adf22-3a2e-11ed-9e49-dac502259ad0.png

01背景介绍

性能和能耗之间的平衡是设计新处理器的核心问题之一,因为超过90%的处理器最终用于嵌入式能源受限设备,例如智能手机物联网传感器。异构系统,结合不同的处理器类型,为不同类型的工作负载提供高能效处理。第一个异构系统将处理器与不同的指令集架构(ISA)相结合。最近,单ISA非对称多核处理器(AMP)开始流行。它们的优势是显而易见的——因为处理器共享相同的架构,操作系统线程调度程序可以在运行时做出关于将哪个任务/线程映射到哪个处理器/内核的决定,这不仅取决于工作负载的特征,还取决于通过单个处理器/内核的运行时负载。另一方面,这为调度问题引入了额外的自由度,使其更加复杂。

26b8bd7a-3a2e-11ed-9e49-dac502259ad0.png

非对称多核处理器上的多线程多道程序工作负载,具有一个大核和一个小核。仅控制CPU核心亲和性会导致次优运行时优化决策。工作负载,这些应用程序具有潜在的不平衡线程,并且线程总数可能高于内核数。虽然向前迈出了重要一步,但WASH仅控制核心亲和力,并且以有限的方式这样做。前者意味着我们无法以整体方式处理核心分配和线程调度来加速最关键的线程。后者意味着WASH只真正控制每个线程的调度域,即允许线程使用的内核组。每个线程的实际核心由底层LinuxCFS调度程序选择,其启发式忽略异构性和线程关键性。

02COLAB方案概览

COLAB是一种用于非对称多核处理器的运行时优化策略,它能够针对线程调度中的所有三个主要因素-核心敏感度、线程关键性和公平性做出协调决策。

1.核心敏感度:每种类型的核心都旨在处理不同类型的工作负载。例如,在ARM big.LITTLE系统中,大内核主要用于性能关键型工作负载或具有指令级并行(ILP)的工作负载。在它们上执行其他类型的工作负载不会显著提高性能,但会显著增加能耗。为了构建高效的AMP调度程序,我们需要预测哪些线程适合哪种内核。

2.线程关键性:更快地执行工作负载的单个线程并不总是转化为整个工作负载的更好性能。如果应用程序的线程不平衡或以不同的速度执行,例如因为不同的线程在不同类型的内核上运行,则应用程序将仅以其最慢或最关键的线程(阻塞大部分其他线程的线程)运行线程)。一个好的AMP调度程序会尽可能地加速这些线程,而不管核心敏感度如何。

3.负载均衡:在多道程序工作负载中,单独加速单个应用程序是不够的,如果它会惩罚其他应用程序。理想情况下,我们需要负载均衡来平衡所有应用程序中资源共享的负面影响。在同构系统中,这很容易通过以循环方式在CPU上为每个应用程序提供固定大小的时间片来实现。AMP使这个简单的解决方案变得不可行。由于每个内核的性能不同,不同内核类型上相同的CPU时间会导致执行的工作量完全不同。

26f3019c-3a2e-11ed-9e49-dac502259ad0.png

系统分为运行时调度过程和离线建模过程。运行时调度器内置在OS内核中,由

i)一个核心分配器组成,用于处理公平性和核心敏感性;

ii)实现瓶颈加速的线程选择器;

iii)基于机器学习的运行时模型,它预测异构内核上线程的加速和功耗。离线建模处理用于通过离线训练构建运行时模型。

COLAB调度程序的主要新颖之处在于它可以以协作的方式处理多个运行时因素(核心敏感性、瓶颈加速和公平性),以实现高系统性能和能源效率。

运行时分析

核心分配器:支持AMP的核心分配器主要受线程的核心敏感度因素指导,它量化了将线程从小核心迁移到大核心带来的性能优势。将high-speedupthread(在大核心上享有较大的加速)从小核心迁移到大核心通常比迁移low-speedupthread 提供更多好处。然而,考虑到瓶颈因素,它量化了线程阻塞其他线程的程度,揭示了这种启发式在多道程序工作负载上的问题。以前的方法只是将预测的瓶颈加速和加速结合在一起。这可能会导致次优的调度决策,其中瓶颈线程和高速加速线程都累积在大核心的运行队列中,更好的核心分配策略将避免瓶颈加速和加速的简单组合,而是专注于协作环境,其中大核心专注于高速瓶颈线程,小核心处理低加速瓶颈线程而无需额外迁移。此外,核心分配器试图通过有效地共享异构硬件并尽可能避免让资源闲置来实现AMP的相对公平。简单地将就绪线程均匀地映射到不同类型的内核上并不能实现真正的公平性,因为不同类型的内核最终具有不同数量的线程优先级。因此,应采用分层分配来保证整体公平性,从而避免频繁将线程迁移到空运行队列的需要。

线程选择器:线程选择器决定接下来将执行每个内核的运行队列中的哪个线程。线程选择器通常会优先考虑瓶颈线程,以避免线程被阻塞太久而导致性能损失。在多线程多程序环境中,可能需要同时加速来自不同程序的多个瓶颈线程。不像之前的瓶颈加速调度程序那样简单地检测瓶颈线程并将它们全部分配给大核,线程选择器需要做出协作决策——理想情况下,大核和小核核心将同时运行瓶颈线程。核心敏感性通常对线程选择器并不重要,它做出的决定完全由瓶颈加速来指导。一个例外是大核心的运行队列为空并且调用线程选择器时。只有在这种情况下,才应考虑就绪线程的核心敏感性的加速因素。必要时,大核甚至可以抢占小核上的线程执行。最后,线程选择器还关注公平性。通过更新线程选择器的时间间隔来缩放线程的时间片已被证明可以保证线程的相等进度并实现多线程单程序工作负载的公平性。然而,仅仅确保所有线程的平等进程是不够的,不足以保证跨程序的公平性。线程选择器应确保每个单独的程序都能平等地进行使用大核和小核来加速瓶颈为此提供了机会。线程选择器试图通过尽快加速所有程序的瓶颈线程来确保程序之间的公平性。

271aa526-3a2e-11ed-9e49-dac502259ad0.png

运行时协作

核心分配器和线程选择器协作以实现性能和能耗之间的良好折衷,同时确保公平。模型的流程图如下图所示。

28c6ffe6-3a2e-11ed-9e49-dac502259ad0.png

基于加速预测和瓶颈识别的运行时模型,通过定期将就绪线程分类(使用标签)分为两个不同的类别来促进协作。

核心分配标签:在大核心上具有高预测加速的线程将被标记为大核心上的高优先级。具有低预测加速和阻塞级别的线程,即非关键线程,将在小核心上获得高优先级(在大核心上获得低优先级)。剩余线程在大核或小核上获得相同的优先级——然后可以自由分配这些线程以平衡核的负载。

线程选择标签:具有高阻塞级别的线程将被标记为本地线程选择的高优先级。无论它们是在大核还是小核上执行,都将给予这些线程相同的优先级。该标签仍然记录了当前核心的类型——如果存在具有空运行队列的相同类型的核心,线程总是优先被相同类型的核心选择。在小核心上运行的线程也被标记,因为它们可能会在合适的时候被抢占在大核心上迁移和执行,但运行线程永远不会优先于等待就绪线程。

标签后处理:在标记过程之后,公平性、核心敏感性和瓶颈加速由线程上的标签表示,并且可以由核心分配器、线程选择器或两者一起处理。基于这种协调模型,核心分配器和线程选择器从就绪线程集中处理不同的优先级队列——它们的决策不会像WASH这样的混合多因素直接排名。相反,他们提供了一个基于时间片的协作方案。

协同多因素模型处理的另一个重要问题是确保线程的平等进展,我们不会干扰线程选择的优先级和决策,而是根据在大内核上运行的线程的预测加速值,通过按比例缩放的时间片方法在线程中实现相等的进展。大核上的线程片比小核上的相对短。线程选择功能更频繁地被触发以交换大核上的执行线程,这保证了在所有核上执行的线程的相对等进度。运行时模型会定期提取性能计数器,该计数器代表AMP上多线程多程序工作负载的当前执行环境。模型计算更新的运行时因素包括预测的加速值和阻塞计数。此信息附加到线程并报告回多因素贴标机以供下一轮使用。

03总结

本期报告着重介绍了COLAB运行时优化框架,该框架针对非对称多核处理器(AMP)上的多线程多道程序工作负载。AMP在当今处理器市场尤其是嵌入式系统中占据重要部分。COLAB是第一个通用调度程序,通过对核心敏感性、线程关键性和调度公平性做出协作决策,优化了影响AMP调度的所有这三个因素-核心亲和力、线程关键性和调度公平性。COLAB调度程序在性能方面分别比最先进的WASH、ARMGTS 和LinuxCFS调度程序高出21%、20%和25%,平均系统吞吐量高了6%、2%和15%,与WASH和ARMGTS相比,COLAB实现了平均5%的节能。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9164

    浏览量

    369041
  • 多核处理器
    +关注

    关注

    0

    文章

    109

    浏览量

    19976
  • 线程
    +关注

    关注

    0

    文章

    505

    浏览量

    19746

原文标题:面向ARM异构多核系统的运行时性能分析与效能优化

文章出处:【微信号:算力基建,微信公众号:算力基建】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何优化总线系统性能

    总线系统是计算机和其他电子设备中用于传输数据的关键组件。性能优化可以提高数据传输速率、降低延迟,并增强系统的可靠性和扩展性。 1. 理解总线系统
    的头像 发表于 12-31 09:54 155次阅读

    如何优化DCS系统性能

    优化DCS(分布式控制系统系统性能是确保工业自动化过程高效、稳定运行的关键。以下是一些具体的优化措施: 一、硬件
    的头像 发表于 11-13 09:19 680次阅读

    如何优化SOC芯片性能

    优化SOC(System on Chip,系统级芯片)芯片性能是一个复杂而多维的任务,涉及多个方面的优化策略。以下是一些关键的优化措施: 一
    的头像 发表于 10-31 15:50 684次阅读

    使用Arthas火焰图工具的Java应用性能分析优化经验

    分享作者在使用Arthas火焰图工具进行Java应用性能分析优化的经验。
    的头像 发表于 10-28 09:27 358次阅读
    使用Arthas火焰图工具的Java应用<b class='flag-5'>性能</b><b class='flag-5'>分析</b>和<b class='flag-5'>优化</b>经验

    如何优化FPGA设计的性能

    、延迟、吞吐量等。这些指标应根据系统性能需求和资源限制来确定。 分析约束 :了解并考虑所有相关的设计约束,如功耗、成本、可制造性等,以确保优化方案的实际可行性。 二、逻辑设计
    的头像 发表于 10-25 09:23 462次阅读

    【米尔NXP i.MX 93开发板试用评测】1、异构核心通信的技术内容

    多核系统通常包含具有不同性能和功能的不同类型处理器核心,例如,一个系统可能同时包含高性能ARM
    发表于 09-21 20:24

    CPU单核性能多核性能的区别

    CPU的单核性能多核性能在多个方面存在显著的差异,这些差异主要体现在处理能力、应用场景、性能瓶颈以及技术发展等方面。以下是对两者区别的详细探讨。
    的头像 发表于 09-02 14:42 8109次阅读

    浅谈国产异构双核RISC-V+FPGA处理器AG32VF407的优势和应用场景

    处理器和FPGA的配置。 高性能与低功耗 : RISC-V架构以其低功耗和高效能著称,而FPGA在并行处理和高性能计算方面也有显著优势。两者的结合可以在保证性能的同时降低功耗。 成
    发表于 08-31 08:32

    复旦微PS+PL异构多核开发案例分享,基于FMQL20SM国产处理器平台

    FMQL20S400M是复旦微四核ARM Cortex-A7@1GHz(PS端)+85K可编程逻辑资源(PL端)异构多核SoC处理器。创龙科技基于FMQL20S400M设计的工业核心板
    发表于 08-22 14:04

    66AK2L06多核DSP+ARM KeyStone II片上系统(SoC)数据表

    电子发烧友网站提供《66AK2L06多核DSP+ARM KeyStone II片上系统(SoC)数据表.pdf》资料免费下载
    发表于 08-07 11:24 0次下载
    66AK2L06<b class='flag-5'>多核</b>DSP+<b class='flag-5'>ARM</b> KeyStone II片上<b class='flag-5'>系统</b>(SoC)数据表

    66AK2Hxx多核DSP+ARM® KeyStone II片上系统(SoC)数据表

    电子发烧友网站提供《66AK2Hxx多核DSP+ARM® KeyStone II片上系统(SoC)数据表.pdf》资料免费下载
    发表于 08-07 09:34 0次下载
    66AK2Hxx<b class='flag-5'>多核</b>DSP+<b class='flag-5'>ARM</b>® KeyStone II片上<b class='flag-5'>系统</b>(SoC)数据表

    如何在RK3562J的AMP双系统实现裸核中断嵌套机制

    ,例如可以基于RK HAL硬件抽象层适配指定的RTOS等。 在处理器核心方面: 瑞芯微多核异构系统支持SoC中同构的ARM Cortex-A核心独立运行。也支持SoC中
    发表于 07-29 16:29

    一文解析嵌入式多核异构方案,东胜物联RK3588多核异构核心板系列一览

    嵌入式人工智能快速发展,对于高性能计算需求越来越大。为了解决性能与功耗的平衡、通过并行化加速计算等,越来越多地嵌入式处理器使用同构多核异构多核
    的头像 发表于 06-17 15:45 2379次阅读
    一文解析嵌入式<b class='flag-5'>多核</b><b class='flag-5'>异构</b>方案,东胜物联RK3588<b class='flag-5'>多核</b><b class='flag-5'>异构</b>核心板系列一览

    多核异构通信框架(RPMsg-Lite)

    ,还优化了能耗,为众多领域带来了革命性的变革。 异构多核系统是指在一个芯片上集成多种不同类型的处理器核心,这些核心可能采用不同的指令集架构(ISA),具备不同的
    的头像 发表于 03-08 18:20 6027次阅读
    <b class='flag-5'>多核</b><b class='flag-5'>异构</b>通信框架(RPMsg-Lite)

    YY3568多核异构(Linux+RT-Thread)--启动流程

    概要 上一篇文章,介绍了多核异构的方案,RPmsg-lite多核通信框架的内容。--《多核异构通信框架(RPMsg-Lite)》 本篇文章我
    的头像 发表于 03-07 08:41 2779次阅读
    YY3568<b class='flag-5'>多核</b><b class='flag-5'>异构</b>(Linux+RT-Thread)--启动流程