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

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

3天内不再提示

SMP是什么 启动方式介绍

麦辣鸡腿堡 来源:TrustZone 作者:Hcoco 2023-12-05 15:23 次阅读

SMP是什么?

SMP 英文为Symmetric Multi-Processing ,是对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。

CMP 英文为Chip multiprocessors,指的是单芯片多处理器,也指多核心。其思想是将大规模并行处理器中的SMP集成到同一芯片内,各个处理器并行执行不同的进程。

(1)CPU数:独立的中央处理单元,体现在主板上就是有多少个CPU槽位

(2)CPU核心数(CPU cores):在每一个CPU上,都可能有多核(core),每个核中都有独立的ALU,FPU,Cache等组件,可以理解为CPU的物理核数。(我们常说4核8线程中的核),指物理上存在的物体。

(3)CPU线程数(processor逻辑核):一种逻辑上的概念,并非真实存在的物体,只是为了更好地描述CPU的运作能力。简单地说,就是模拟出的CPU核心数。

不过在这里我们这里指的是多个单核CPU组合到一起,每个核都有自己的一套寄存器

一个系统存在多个CPU,成本会更高和管理也更困难。多核算是轻量级的SMP,物理上多核CPU还是封装成一个CPU,但是在CPU内部具有多个CPU的核心部件,可以同时运行多个线程/进程。但是需要CPU核心之间要共享资源,比如缓存。对程序员来说,它们之间的区别很小,大多数情况可以不做区分。我们在嵌入式开发中,大部分都是用的多核CPU。

这里我们就把这个SMP启动转换成多核CPU启动。

2、启动方式

程序为何可以在多个cpu上并发执行:他们有各自独立的一套寄存器,如:程序计数器pc,栈指针寄存器sp,通用寄存器等,可以独自 取指、译码、执行,当然内存和外设资源是共享的,多核环境下当访问临界区 资源一般 自旋锁来防止竞态发生。

soc启动的一般会从片内的rom, 也叫bootrom开始执行第一条指令,这个地址是系统默认的启动地址,会在bootrom中由芯片厂家固化一段启动代码来加载启动bootloader到片内的sram,启动完成后的bootloader除了做一些硬件初始化之外做的最重要的事情是初始化ddr,因为sram的空间比较小所以需要初始化拥有大内存 ddr,最后会从网络/usb下载 或从存储设备分区上加载内核到ddr某个地址,为内核传递参数之后,然后bootloader就完成了它的使命,跳转到内核,就进入了操作系统内核的世界。

bootloader将系统的控制权交给内核之后,他首先会进行处理器架构相关初始化部分,如设置异常向量表,初始化mmu(之后内核就从物理地址空间进入了虚拟地址空间的世界,一切是那么的虚无缥缈,又是那么的恰到好处)等等,然后会清bss段,设置sp之后跳转到C语言部分进行更加复杂通用的初始化,其中会进行内存方面的初始化,调度器初始化,文件系统等内核基础组件 初始化工作,随后会进行关键的从处理器的引导过程,然后是各种实质性的设备驱动的初始化,最后 创建系统的第一个用户进程init后进入用户空间执行用户进程宣誓内核初始化完成,可以进程正常的调度执行。

系统初始化阶段大多数都是主处理器做初始化工作,所有不用考虑处理器并发情况,一旦从处理器被bingup起来,调度器和各自的运行队列准备就绪,多个任务就会均衡到各个处理器,开始了并发的世界,一切是那么的神奇。

soc在启动阶段除了一些特殊情况外(如为了加快启动速度,在bl2阶段通过并行加载方式同时加载bl31、bl32和bl33镜像),一般都没有并行化需求。因此只需要一个cpu执行启动流程即可,这个cpu被称为primary cpu,而其它的cpu则统一被称为secondary cpu。为了防止secondary cpu在启动阶段的执行,它们在启动时必须要被设置为一个特定的状态。(有时候为了增加启动速度,必须对时间敏感的设备,就可能启动的时候整个从核并行跑一些任务)

当primary cpu完成操作系统初始化,调度系统开始工作后,就可以通过一定的机制启动secondary cpu。显然secondary cpu不再需要执行启动流程代码,而只需直接跳转到内核中执行即可。

主流程启动初始化一般来说都是主核在干的,当系统完成了初始化后就开始启动从核。 这就像在启动的大门,只有主核让你过了,其他的先在门外等着。当cpu0启动到kernel后,就会去门口,把它们的门禁卡给它们,卡上就写的它们的目的地班级是哪里。如果没有这个门禁卡的cpu,说明地址为0,就继续在原地等着。

故其启动的关键是如何将内核入口地址告知secondary cpu,以使其能跳转到正确的执行位置。

aarch64架构实现了两种不同的启动方式,spin-table和psci。

其中spin-table方式非常简单,但其只能被用于secondary cpu启动,功能比较单一。

随着aarch64架构电源管理需求的增加(如cpu热插拔、cpu idle等),arm设计了一套标准的电源管理接口协议psci。该协议可以支持所有cpu相关的电源管理接口,而且由于电源相关操作是系统的关键功能,为了防止其被攻击,该协议将底层相关的实现都放到了secure空间,从而可提高系统的安全性。

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

    关注

    68

    文章

    19078

    浏览量

    228725
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10795

    浏览量

    210701
  • 多核
    +关注

    关注

    0

    文章

    43

    浏览量

    12308
  • SMP
    SMP
    +关注

    关注

    0

    文章

    71

    浏览量

    19608
收藏 人收藏

    评论

    相关推荐

    【深圳SMP03,SMP03】

    `SMP03,30G信号源,二手SMP03 SMP03,30G信号源,二手SMP03型号:R & S SMP02,
    发表于 02-01 16:32

    SMP04|SMP22|信号源|SMP04 现金回收

    找不到联系方式,请在浏览器上搜索一下,旺贸通仪器仪 SMP04 SMP22SMP0420G信号源,SMP04,SMP02 20G信号源,二手
    发表于 12-31 17:51

    RT-Thread SMP介绍与移植资料分享

    次级 CPU 自身硬件部分的初始化不能由 CPU0 完成,因为其自身硬件不能由其它 CPU 访问。CPU0 启动流程在 SMP 平台上,启动核心 CPU0 的启动流程和单核 CPU 上
    发表于 04-27 14:38

    RT-Thread框架下的SMP支持

    ipi_isr_handler)调度与同步临界区保护是需要特别注意的。对于 SMP 通过关中断的方式并不能阻止多个 CPU 对共享资源的并发访问,需要通过自旋锁机制进行保护(在次级 CPU 启动中就
    发表于 02-13 15:02

    SMP-04采样保持四放大器和SMP-08 SMP-18采样

    SMP-04采样保持四放大器和SMP-08 SMP-18采样保持八放大器的应用:
    发表于 06-03 14:54 34次下载
    <b class='flag-5'>SMP</b>-04采样保持四放大器和<b class='flag-5'>SMP</b>-08 <b class='flag-5'>SMP</b>-18采样

    SMP技术

    SMP技术 SMP英文全称为Symmetrical Multi-Processing,意指“对称多处理”技术,是指在一个计算机上汇集了一组处理器—即多CPU,各CPU之
    发表于 12-17 14:08 4503次阅读

    启动启动方式

    启动器是一种集软启动、软停车、轻载节能和多功能保护于一体的电机控制装备。实现在整个启动过程中无冲击而平滑的启动电机,而且可根据电动机负载的特性来调节
    的头像 发表于 09-19 17:04 2.3w次阅读

    RT-Thread文档_RT-Thread SMP 介绍与移植

    RT-Thread文档_RT-Thread SMP 介绍与移植
    发表于 02-22 18:31 9次下载
    RT-Thread文档_RT-Thread <b class='flag-5'>SMP</b> <b class='flag-5'>介绍</b>与移植

    表面贴装封装技术SMP介绍

    SMP是指采用表面贴装技术 (Surface Mounted Technology, SMT) 将集成电路安装到PCB 上。
    的头像 发表于 03-06 14:41 6789次阅读

    SMP是什么?多核芯片(SMP)的启动方法

    SMP 英文为Symmetric Multi-Processing ,是对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。
    的头像 发表于 07-26 09:26 1.7w次阅读
    <b class='flag-5'>SMP</b>是什么?多核芯片(<b class='flag-5'>SMP</b>)的<b class='flag-5'>启动</b>方法

    RT-Thread SMP启动流程

    SMP(Symmetric Multi-processing) :对称多处理,在一个计算机上汇集了一组处理器 (多 CPU), 各 CPU 之间共享内存子系统以及总线结构。
    的头像 发表于 08-03 15:10 1069次阅读
    RT-Thread <b class='flag-5'>SMP</b><b class='flag-5'>启动</b>流程

    SMP多核启动cpu操作函数

    其中spin-table启动方式的回调如下: const struct cpu_operations smp_spin_table_ops = {.name= "spin-table
    的头像 发表于 12-05 16:04 644次阅读
    <b class='flag-5'>SMP</b>多核<b class='flag-5'>启动</b>cpu操作函数

    介绍几种常见的电机启动方式

    电机控制的方法有很多种,包括直接启动、软启动、变频启动、星-三角启动等。不同的启动方式适用于不同
    的头像 发表于 12-11 14:42 2343次阅读

    电机控制具体是指什么?有哪些启动方式

    电机控制的方法有很多种,包括直接启动、软启动、变频启动、星-三角启动等。不同的启动方式适用于不同
    的头像 发表于 12-14 15:51 982次阅读

    单相电机的启动方式是什么?如何启动

    单相电机是一种常见的电机类型,广泛应用于家用电器、工业设备和各种小型机械中。由于其结构简单、成本低廉、维护方便等特点,单相电机在许多领域得到了广泛应用。然而,单相电机的启动方式与三相电机有所不同
    的头像 发表于 10-23 09:15 162次阅读