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

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

3天内不再提示

如何基于时间片论法的任务调度模式充分利用MCU的资源

strongerHuang 来源:大橙子疯嵌入式 作者:大橙子疯嵌入式 2022-12-14 09:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文介绍如何基于时间片论法的任务调度模式充分利用MCU的资源,姑且先称这种方式为时间片差分调度法。

充分利用MCU的资源指的是在不影响原有的函数调度情况下合理进行分配,避免MCU大部分时间处于空跑状态(即大部分时间没有调度任何的功能函数,只是在不停地判断时间状态,从而造成的资源浪费),同时提高每个任务的调度周期的命中率(按时准点执行)

背景

时间片论法不比操作系统,操作系统可以通过任务优先级抢占当前正在执行的低优先级任务,或者高优先级任务主动睡眠释放MCU资源以便低优先级的任务可以正常执行;时间片论法必须等待当前任务执行完成后才能执行下一个任务(中断除外)。


因此,由于时间片论法的特性,很难保证某些任务能够及时得到调度运行,特别是所需要的调度任务多的情况下,常常出现不能及时调度的问题(虽然整体调度周期不变),从而影响所需要的功能,常见的做法可能通过定时中断触发的方式去执行,可是碰到一些任务函数执行时间稍微长的就会影响中断的响应等。


可以看下面的函数调度时长图,每个刻度为200us(以下称节拍),调度单位为1ms,只以200us以上的任务举例,方便进行理解

152885c0-7b4e-11ed-8abf-dac502259ad0.png

从上述图中可知以下信息:

图中一共有五个任务函数,每个任务函数的执行时间不定

任务1(黄色)周期为5ms

任务2(红色)周期为6ms

任务5(紫色)周期为5ms

任务4(蓝色)周期为12ms

任务5(绿色)周期为15ms

同一时刻触发任务调度的执行时的顺序(调度函数的顺序即可任务默认优先级):1>2>3>4>5

第25ms时任务1的调度慢了一个节拍,原因是任务2和4的调度总时长超过了调度单位时长

除了任务1大部分时间都能及时被调度,其他任务并不能被及时调度,虽然周期不变,但命中率不高(甚至等于0)

其中存在周期性的几个调度单位大部分时间处于空跑状态

…等其他仔细观察的可知信息,这里就不多说了

从获取的信息可知,大部分任务虽然整体周期没变,但是几乎很少有低优先级的任务有较高的命中率,这样就导致某些功能需要较高的命中率同时执行时间相对较长(不能放在中断中的任务函数)就不能正常工作。

如何优化

在优化之前,首先看下面这个有一定规律的函数调度时长图

153f5660-7b4e-11ed-8abf-dac502259ad0.png

还是五个任务,而规律就是函数任务公约数=最小调度周期任务,即5ms(假设小于5ms的任务大都执行时间非常短,在此可忽略不计)

任务1(黄色)周期为5ms

任务2(红色)周期为10ms

任务5(紫色)周期为20ms

任务4(蓝色)周期为10ms

任务5(绿色)周期为20ms

图中所展示的任务调度命中率也不高,也存在周期性的几个调度单位大部分时间处于空跑状态

看一下优化前后的对比图,虽然还是存在大部分时间处于空跑状态,但是命中率提高到了100%

只要保证每个任务函数耗时小于调度单位,那么就能做到命中率 100%

184bbe7a-7b4e-11ed-8abf-dac502259ad0.png

如何实现的?
从优化后的图中可以了解到,第一个时刻调度的时候只有任务1,第二个时间调度只有任务2,以此类推,就可以在一定程度上避开同一时刻多个任务需要同时等待调度,从而引发的拥堵。

可以通过每个任务计时器的倒计时初值进行调整,从而达到每个时间调度只运行一个任务的目的,提高任务的命中率。

那么接下来按照上面提到的规律去优化刚开始的那个,主要有两点:

在可接受范围内调整任务的周期,尽量保证任务函数任务公约数=最小调度周期任务

可以理解称任务公约数等于多少就代表可以在初值上类推多少个任务进行错开初次执行;可以忽略部分函数耗时特别短的任务

调整每个任务倒计时器的初值,尽量错开拥堵时刻

任务多的情况下只能够尽量避免,从而提高命中率,通过每个任务调度周期和执行时长进行推算,得到每个任务的最佳的初值

根据以上两点对上述调度任务进行优化如下:

五个任务函数在可接受范围内调整任务周期后,同时调整初值
- 任务1(黄色)周期为5ms
- 任务2(红色)周期为5ms
- 任务5(紫色)周期为5ms
- 任务4(蓝色)周期为10ms
- 任务5(绿色)周期为15ms

得到对比图:

185b6fa0-7b4e-11ed-8abf-dac502259ad0.png

此次优化将充分地利用了每个时间片的资源,虽然某一段时间内的空跑时间总和一样,但是实际上将空跑的时间进行了分散,提高了资源的使用率,从而让每个任务的命中率提高到100%。

审核编辑 :李倩

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

    关注

    147

    文章

    18613

    浏览量

    387149
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66841

原文标题:时间片论法-优化方案

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在多任务系统中,如何平衡任务调度以防止因高负载导致的再次进入低功耗模式的延迟?

    在多任务系统中,如何平衡任务调度以防止因高负载导致的再次进入低功耗模式的延迟?
    发表于 12-04 06:37

    利用DMA如何降低MCU功耗?

    利用DMA(直接内存访问)降低MCU功耗的核心在于最小化CPU介入,通过硬件自动完成数据传输任务,使CPU能尽可能长时间处于休眠状态。 CPU休眠
    发表于 11-18 07:34

    freertos关闭任务调度的方法

    #include \"FreeRTOS.h\" #include \"task.h\" /* 关闭任务调度 */ void
    发表于 11-17 06:47

    通过优化代码来提高MCU运行效率

    。 内存访问优化 充分利用缓存:如果MCU有Cache,尽量保证代码和数据的局部性,即让相关的数据在内存中连续存放。 避免内存碎片:在动态内存分配受限的系统中,尽量使用静态分配。 对齐访问:保证数据在内
    发表于 11-12 08:21

    FreeRTOS任务调度及优先级问题

    大家好,最近本人在学习FreeRTOS ,之前有过一些裸机开发的经验,目前知道了FreeRTOS的任务是基于时间轮转来调度,也就是知道了任务
    发表于 11-06 02:18

    充分利用小型化布线系统,实现空间受限型设计

    作者:Kenton Williston 投稿人:DigiKey 北美编辑 随着电子系统体积的不断缩小和功能越来越密集,设计人员面临着确保可靠互连的挑战。这一点在工业、医疗、军事以及航空航天领域尤为突出。在这些领域,不仅要求连接器结构紧凑,而且能够承受振动、热循环和其他应力。为应对这些挑战,设计人员需要那种兼具可靠性和空间效率的紧凑型互连解决方案。 本文将探讨此类互连的关键要求,包括端子密度、可靠的配接机制、耐热性以及信号和功率大小。然
    的头像 发表于 10-04 18:20 1291次阅读
    <b class='flag-5'>充分利用</b>小型化布线系统,实现空间受限型设计

    企业级HDFS高可用与YARN资源调度方案

    作为一名在大数据运维领域摸爬滚打8年的老兵,我见过太多因为基础架构不够健壮而导致的生产事故。今天,我想和大家分享一套经过实战检验的 HDFS 高可用与 YARN 资源调度方案,这套方案帮助我们团队将平台可用性从 99.5% 提升到 99.99%,年故障
    的头像 发表于 09-08 17:15 547次阅读

    利用MCU/SoC的工作范围实现低功耗

    想进一步降低功耗!但又不想牺牲产品性能……特瑞仕针对此问题的解决方案是“充分利用MCU/SoC的工作范围进行功耗优化”。
    的头像 发表于 08-04 11:22 949次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>MCU</b>/SoC的工作范围实现低功耗

    MCU上Flash

        MCU上Flash是微控制器内部集成的非易失性存储器,主要用于存储程序代码、常量数据及系统配置信息。其核心特性与功能如下: 一、定义与类型‌ 上Flash采用浮栅晶体管技术,具备断电数据
    的头像 发表于 05-06 14:26 862次阅读

    AG32 MCU 如何进入低功耗模式

    ,短启动时间和可用的唤醒源之间的最佳妥协。 AGM AG32系列MCU具有以下三种低功耗模式: (1)休眠模式Sleep mode (CPU时钟关闭,包括核心外设在内的所有外设保持
    发表于 04-21 11:29

    如何利用MES系统进行产能分析呢?

    利用MES系统进行产能分析是一个涉及数据收集、处理、分析和结果呈现的全过程。对生产过程加以监控,充分利用MES数据采集分析,实现监控生产全阶段,消除生产过程不可控问题。
    的头像 发表于 02-21 12:10 767次阅读
    如何<b class='flag-5'>利用</b>MES系统进行产能分析呢?

    Amphitrite借助NVIDIA Earth-2平台优化船舶航线

    作为 NVIDIA 初创加速计划的成员,这家初创公司帮助船舶充分利用洋流和 AI 的力量,通过 NVIDIA Earth-2 平台缩短航行时间并减少碳排放。
    的头像 发表于 02-14 10:04 953次阅读

    基于Flexus X加速MySQL镜像搭建XXL-JOB任务调度平台

    平台,展示如何利用 Flexus X 的高性能特性提升任务调度的效率和稳定性。通过详细的步骤和配置,帮助大家可以快速掌握在 Flexus X 上部署和运行 XXL-JOB 的方法,并将其应用于实际项目中。
    的头像 发表于 12-29 15:45 708次阅读
    基于Flexus X加速MySQL镜像搭建XXL-JOB<b class='flag-5'>任务</b><b class='flag-5'>调度</b>平台

    基于恩智浦 MCX N947 MCU 通过 NPU 实现 AI 咖啡胶囊识别方案

    本方案充分利用了恩智浦(NXP)高性能微控制器(MCU)MCX N947 集成的神经网络处理单元(NPU)的强大性能,旨在开发一款具有真正智能化识别能力的 AI 咖啡胶囊识别的咖啡机。 通过
    的头像 发表于 12-18 13:43 1177次阅读
    基于恩智浦 MCX N947 <b class='flag-5'>MCU</b> 通过 NPU 实现 AI 咖啡胶囊识别方案

    智慧实验室管理平台

    不清晰的挑战,导致无法充分利用现有资源,增加了测试成本和时间消耗。因此,经纬恒润基于多年测试管理经验,推出了智慧实验室管理平台,旨在解决汽车行业测试业务中现存的诸多痛点。
    的头像 发表于 12-16 16:15 1473次阅读
    智慧实验室管理平台