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

    文章

    18288

    浏览量

    222167
  • 芯片
    +关注

    关注

    447

    文章

    47801

    浏览量

    409166
  • SMP
    SMP
    +关注

    关注

    0

    文章

    68

    浏览量

    19450
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121886
  • 调度算法
    +关注

    关注

    1

    文章

    67

    浏览量

    11935

原文标题:总结

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

收藏 人收藏

    评论

    相关推荐

    一种改进的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

    tms320跑linux操作系统时如何实现多核通讯

    硬件环境:tms320c6678EVM 软件环境:CCS5.5.0 tms320跑linux操作系统时如何实现多核通讯,从论坛一些帖子知道它不支持SMP,我的理解是不能由操作系统自动分配调度多个核完成一个复杂任务。那么如何实现
    发表于 06-21 06:55

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

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

    基于raspi 3b上的SMP设计实现

    本帖主要描述raspi 3b上SMP实现,该实现主要基于现有raspi2 bsp代码基础上添加相关SMP支持,所需支持的功能主要包括:多核启动多核通信
    发表于 12-05 13:56

    RT-Thread框架下的SMP支持

    rt_hw_local_irq_disable #define rt_hw_interrupt_enablert_hw_local_irq_enable#endif因为 SMP 使用了多核调度和同步的情况相较于单个处理器更加
    发表于 02-13 15:02

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

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

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

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

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

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

    网格任务调度算法研究

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

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

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

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

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

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

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

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

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