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
    +关注

    关注

    135

    文章

    9499

    浏览量

    388714
  • 多核处理器
    +关注

    关注

    0

    文章

    110

    浏览量

    20621
  • 线程
    +关注

    关注

    0

    文章

    508

    浏览量

    20759

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【玩转多核异构】T153核心板RISC-V核的实时性应用解析

    飞凌嵌入式FET153-S核心板的异构多核架构展现出了卓越的通信性能,能够为诸多应用提供高效可靠的核心支撑,特别适用于对实时性和稳定性要求极高的智能应用场景。
    的头像 发表于 11-14 09:40 8282次阅读
    【玩转<b class='flag-5'>多核</b><b class='flag-5'>异构</b>】T153核心板RISC-V核的实时性应用解析

    【飞凌T527N开发板试用】异构RISC-V核心使用体验

    、专门用于特定任务的“片上系统服务核心” 。这为整个SoC(系统级芯片)带来了根本性的优势。 T527的异构RISC-V核心主要带来三大层面的好处: 效率与功耗优化 :实现任务分工,大
    发表于 08-19 21:45

    【老法师】多核异构处理器中M核程序的启动、编写和仿真

    有很多研究单片机的小伙伴在面对多核异构处理器时,可能会对多核的启动流程感到困惑——因为不熟悉GCC编程和GDB调试,所以也无法确定多核异构
    的头像 发表于 08-13 09:05 3637次阅读
    【老法师】<b class='flag-5'>多核</b><b class='flag-5'>异构</b>处理器中M核程序的启动、编写和仿真

    PCIe协议分析仪能测试哪些设备?

    场景:监测GPU与主机之间的PCIe通信,分析数据传输效率、延迟和带宽利用率。 应用价值:优化大规模AI训练任务的数据加载和模型参数同步,例如在多GPU系统中测试PCIe交换机的性能
    发表于 07-25 14:09

    ARM Mali GPU 深度解读

    ARM Mali GPU 深度解读 ARM Mali 是 Arm 公司面向移动设备、嵌入式系统和基础设施市场设计的图形处理器(GPU)IP
    的头像 发表于 05-29 10:12 2991次阅读

    Arm 公司面向 PC 市场的 ​Arm Niva​ 深度解读

    面向 PC 市场的 ​ Arm Niva ​ 深度解读 ​ Arm Niva ​ 是 Arm 公司为 PC 市场推出的核心计算平台,属于其“平台优先”战略的关键布局。作为 ​
    的头像 发表于 05-29 09:56 1304次阅读

    Arm 公司面向移动端市场的 ​Arm Lumex​ 深度解读

    (CSS)​ ​ 在移动端的落地形态,Lumex 旨在通过高度集成化的软硬件方案,解决移动设备在 AI 性能、能效比与开发效率上的挑战。以下从技术架构、性能突破、应用场景、生态系统及战略价值展开
    的头像 发表于 05-29 09:54 4054次阅读

    Arm 公司面向汽车市场的 ​Arm Zena​ 深度解读

    汽车市场的落地形态,Zena 旨在解决汽车智能化转型中的算力需求、开发效率与功能安全挑战。以下从技术架构、性能优势、应用场景、生态系统及战略意义展开分析: 一、技术架构:异构集成与功能
    的头像 发表于 05-29 09:51 2081次阅读

    米尔瑞芯微多核异构低功耗RK3506核心板重磅发布

    。 低延时、高实时性RK3506采用了AMP多核异构,具备强大的实时性能使得一颗芯片便能灵活搭配多种操作系统,确保系统能够快速响应各类输入信
    发表于 05-16 17:20

    全志科技多核异构SoC助力行业智能化创新

    近日, “第十二届开源操作系统年度技术会议”在北京举行,全志科技受邀参会。会上,全志进行了题为《多核异构SoC在行业应用中软件方案的思考与实践》的分享。分享从市场和技术洞察、方案设计创新、场景化应用落地三个维度展开
    的头像 发表于 04-18 09:11 1029次阅读
    全志科技<b class='flag-5'>多核</b><b class='flag-5'>异构</b>SoC助力行业智能化创新

    AI SoC#全志T527八核工业级高性能人工智能芯片解读

    全志T527是一款面向工业控制、边缘计算、车载终端及人工智能领域的多核异构性能处理器,其设计融合了高效能计算、多媒体处理、AI加速及工业级
    的头像 发表于 03-22 15:21 4792次阅读
    AI SoC#全志T527八核工业级高<b class='flag-5'>性能</b>人工智能芯片解读

    HarmonyOS NEXT 原生应用/元服务-DevEco Profiler性能优化过程

    流程概览 在开发应用时,开发者会对应用的运行情况有一个预期的指标,当应用在某些方面不能满足预期的指标或者表现不佳时,意味着您的应用可能存在性能问题,需要对应用进行性能优化以达到您的预期。应用的
    发表于 02-19 15:28

    RK3399处理器:高性能多核异构计算平台

    RK3399是一款高性能多核异构计算平台,集成了强大的CPU、GPU以及丰富的多媒体和接口功能。其独特的双Cortex-A72+四Cortex-A53大小核CPU结构,使得RK3399在处理复杂
    的头像 发表于 02-08 18:04 2394次阅读

    如何优化总线系统性能

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

    仿真系统性能优化技巧

    在现代工业和科学研究中,仿真系统扮演着越来越重要的角色。它们不仅能够帮助我们预测复杂系统的行为,还能在没有实际物理原型的情况下进行实验和测试。然而,随着仿真模型的复杂度增加,性能优化
    的头像 发表于 12-19 14:47 4073次阅读