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

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

3天内不再提示

多核同构SMP--调度算法分析

jf_NsPBt3VS 来源:风火轮技术团队 2023-07-10 11:10 次阅读

随着智能产品的需求不断提高,慢慢的单芯片单核处理器已经不能满足我们的需求,于是就在一个芯片上集成两个或多个核心,进而转向了多核处理器的发展,多核处理器具有更高的计算密度和更强的并行处理能力,所以它也是大趋势。多核处理器从硬件的角度来区分,又分为同构和异构:

多核同构处理器:一个处理器的多个核心的体系架构是一样的,如:T113

多核异构处理器:一个处理器中包含不同体系架构的核心,如:STM32MP157

多核处理器从软件的角度来区分,又分为SMP和AMP:

SMP:又称对称多处理(Symmetric multiprocessing),只有一个操作系统(OS)实例上运行多个核心,一个OS同等的管理各个内核,为各个内核分配工作负载,系统中所有的内核平等地访问内存资源和外设资源。

AMP:又称非对称多处理(Asymmetric Multi-Processing),每个核心运行自己的OS或同一OS的独立实例,或者说不运行OS,如运行裸机,每个内核有自己独立的内存空间,也可以和其它内核共享部分内存空间,每个核心相对独立地运行不同的任务,但是有一个核心为主要核心,它负责控制其它核心以及整个系统的运 行,而其它核心负责“配合”主核心来完成特定的任务。

本篇文章围绕SMP展开讲解。

什么是SMP

对称多处理器结构 , 英文名称为 "Symmetrical Multi-Processing" , 简称SMP。SMP又称为UMA, 全称"Uniform Memory Access", 中文名称"统一内存访问架构"。

在 " 对称多处理器结构 " 的 系统中 , 所有的处理器单元的地位都是平等的 , 一般指的是服务器设备上 , 运行的 多个 CPU , 没有 主次/从属 关系,都是平等的。

这些处理器共享所有的设备资源, 所有的资源对处理器单元具有相同的可访问性, 如: 内存, 总线等,多个CPU处理器共享相同的物理内存, 每个CPU访问相同的物理地址, 所消耗的时间是相同的;

93292f72-1d44-11ee-962d-dac502259ad0.png

SMP的优缺点

优点 :避免了结构障碍, 其最大的特点是所有的资源共享。缺点:SMP架构的系统, 扩展能力有限, 有瓶颈限制。如: 内存瓶颈限制, 每个CPU处理器必须通过相同的总线访问相同的内存资源, 如果CPU数量不断增加, 使用同一条总线, 就会导致内存访问冲突; 这样就降低了CPU的性能;

操作系统如何满足SMP

公平共享: CPU的负载, 需要公平地共享, 不能出现某个CPU空闲, 造成资源浪费。

可设置线程(进程)与CPU亲和性: 可以为某些类型的线程(进程)与指定的处理器设置亲和性, 可以针对性地匹配线程(进程)与处理器。

线程(进程)迁移: 可以将线程(进程)在不同的CPU处理器之间进行迁移 。

总结:操作系统的SMP对称多处理器结构调度,核心就是将线程(进程)迁移到合适的处理器上, 并且可以保持各个处理器的负载均衡。

SMP调度方式

作者总结SMP的调度算法可以分为三种:

①线程(进程)默认核心0运行,可以指定亲和性:

当用户创建线程(进程)时,可以指定挂在到指定核心运行。当任务挂在到指定核心,那么该任务只能在该核心上运行。

当用户创建线程(进程)时,没有指定挂在到指定核心运行,线程(进程)默认挂在到核心0。该任务核心0上运行。

9347b582-1d44-11ee-962d-dac502259ad0.png

问题:

优点:可以规定某个核心专注的做某一件事或某一类事。

缺点:核心0的负载会很大,它需要调度其他核心不调度的任务。

适用场景:

项目需要指定核心专一处理某一件事情的时候,可以使用这种调度算法

②线程(进程)默认均分到不同核心,可以指定亲和性。

当用户创建线程(进程)时,可以指定挂在到指定核心运行。当任务挂在到指定核心,那么该任务只能在该核心上运行。

当用户创建线程(进程)时,没有指定挂在到指定核心运行,系统会判断每个核心的任务数,将该任务放在任务数最少的核心中。

9361111c-1d44-11ee-962d-dac502259ad0.png

问题:

优点:将任务平分给每个核心,每个核心的负载会相对均衡。

缺点:可能存在某个核心分配的任务都是比较轻的,某个核心分配的任务比较重。导致核心中的任务比较轻的,会更加容易进入空闲状态,核心中的任务比较重的,可能会一直处于忙碌状态,这样也会导致每个核心的负载不均衡。

适用场景:

项目中,所有的任务的复杂程度都差不多,可以均分到每个核心上,这样可以提高系统性能。

③线程(进程)根据核心负载获取任务调度,可以指定亲和性。

当用户创建线程(进程)时,可以指定挂在到指定核心运行。当任务挂在到指定核心,那么该任务只能在该核心上运行。

当用户创建线程(进程)时,没有指定挂在到指定核心运行,将该任务挂载一个总任务队列中,当某个核心调度空闲时,就从总任务队列中获取一个任务运行。运行完毕之后归还给总任务队列。

937bc5e8-1d44-11ee-962d-dac502259ad0.png

问题:

优点:根据每个核心的负载,均分整个系统的任务调度,提供了每个核心的利用率。

缺点:调度算法比较复杂

适用场景:

项目中不需要关心任务的具体运行到那个核心。

总结

上述的调度算法,只有第三种满足:①公平共享;②可设置线程(进程)与CPU亲和性;③线程(进程)迁移。

调度算法,第一种和第二种,只满足三个条件的某一部分。

不用的调度适用于不同的场景,需要根据实际的需求选择相应的调度算法。

审核编辑:汤梓红

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

    关注

    68

    文章

    19259

    浏览量

    229647
  • 芯片
    +关注

    关注

    455

    文章

    50714

    浏览量

    423119
  • SMP
    SMP
    +关注

    关注

    0

    文章

    74

    浏览量

    19654
  • 操作系统
    +关注

    关注

    37

    文章

    6801

    浏览量

    123280
  • 调度算法
    +关注

    关注

    1

    文章

    68

    浏览量

    11977

原文标题:总结

文章出处:【微信号:风火轮技术团队,微信公众号:风火轮技术团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    异构多核处理器系统的特点及基于加权优先级的任务调度算法分析

    异构多核处理器以其芯片面积利用率高、处理器功耗低、应用程序的并行化程度高等诸多优势成为处理器体系结构发展的一个重要方向,同时它的出现给计算机学科发展带来了新的挑战。研究发现多核处理器任务调度的优劣对处理器的执行时间、任务
    的头像 发表于 12-04 10:03 5754次阅读
    异构<b class='flag-5'>多核</b>处理器系统的特点及基于加权优先级的任务<b class='flag-5'>调度</b><b class='flag-5'>算法</b><b class='flag-5'>分析</b>

    一种改进的SEDF调度算法

    【摘要】:Xen由于其很低的性能损失,而逐渐成为最受欢迎的虚拟化管理工具之一.但是,它的SEDF调度算法存在在SMP下不能支持全局负载平衡的问题.本文针对此问题提出一种名为IEDF的改进算法
    发表于 04-24 10:03

    多核处理器设计九大要素

    访问的仲裁机制将是CMP处理器研究的重要内容。  6 操作系统设计: 任务调度、中断处理、同步互斥  对于多核CPU,优化操作系统任务调度算法是保证效率的关键。一般任务
    发表于 04-13 09:48

    AliOS Things SMP系统及其在esp32上实现示例

    摘要: AliOS Things实现了基本的SMP调度框架,支持多CPU体系的系统运行和调度机制。任务可以动态在多核间进行切换或者绑定运行;高优先级任务可以最大化利用空闲资源核运行。基
    发表于 05-15 12:45

    多核处理器分类之SMP与NUMA简析

    多核处理器,在每个多核处理器芯片内部的L2和L3可以采用共享缓存或SMP方式,而在多个芯片间采用DSM结构互连。原作者:老秦谈芯
    发表于 06-07 16:46

    中国首颗ARM+RISC-V异构多核MCU伴随IAR在上海国际嵌入式展亮相

    的CPU内核运行同一套程序(一般通过CoreID来实现不同的CPU内核执行不同的操作),AMP指的是不同的CPU内核运行不同的程序。只有同构多核才能实现SMP同构
    发表于 06-15 18:32

    最迟预分配容错实时调度算法设计与分析

    提出一种多类型任务集的容错实时调度算法,详细分析算法调度机制,证明了该算法的正确性,并给出了
    发表于 11-20 12:01 17次下载

    基于DiffServ模型的调度算法

    区分服务(DiffServ)模型中不同队列调度算法对网络性能有不同的影响。该文介绍了DiffServ实现模型,分析比较了目前4种典型队列调度算法
    发表于 04-13 09:29 14次下载

    抢占阈值调度算法分析与研究

    本文详细论述了应用于静态优先级实时系统的抢占阈值调度算法。描述了算法实现和任务集合可调度性判定公式的推导,分析
    发表于 08-04 08:32 6次下载

    网格任务调度算法研究

    网格任务调度算法是影响网格成功与否的关键技术之一。本文总结了网格计算系统的体系结构和特征,分析了网格任务调度算法的基本原理和性能指标,并对各
    发表于 08-14 10:27 10次下载

    一种多核混合分区调度算法设计与实现

    一种多核混合分区调度算法设计与实现_郝继锋
    发表于 01-07 19:00 1次下载

    一种基于分组的多核嵌入式实时调度算法

    一种基于分组的多核嵌入式实时调度算法_康鹏
    发表于 01-07 21:39 0次下载

    多核嵌入式系统内联网络优化调度

    处理核之间的通信问题是多核系统中不可避免的问题,根据具体应用,进行核间内联网络的定制和设计是一个可行的研究方向。针对该问题提出了任务节点的通信调度算法,通过采用点对点连接作为内联网络的方式,在不增加
    发表于 12-01 11:34 1次下载
    <b class='flag-5'>多核</b>嵌入式系统内联网络优化<b class='flag-5'>调度</b>

    嵌入式多核处理器任务调度研究

    针对多核处理器在调度多个任务时效率不高的问题,提出了一种基于粒子群优化算法的嵌入式多核多线程系统任务调度
    发表于 01-17 17:49 1次下载
    嵌入式<b class='flag-5'>多核</b>处理器任务<b class='flag-5'>调度</b>研究

    异构多核处理器任务调度算法

    在异构多核处理器条件下,Min-Min算法调度性能较好但在系统实时响应方面存在不足。最小空闲时间优先调度算法( LSF)、最早截止时间优先
    发表于 02-07 11:07 2次下载