异核通信框架(1)——SMP和AMP架构
创始人
2025-05-31 15:00:27

0.前言

        我是菜鸡,很久没有发表文章了。老样子,今天推荐一本书《局外人》。别像主人公似的认为任何事情都没有意义。

目录

1. SMP和 AMP架构

1.1 同构和异构

        1.1.1  同构

        1.1.2  异构

1.2 SMP和AMP

1.2.1  对称多处理结构(SMP)

1.2.2  非对称多处理结构(AMP)

1.2.3  边界多处理结构(BMP)

2. 总结


1. SMP和 AMP架构

        1971 年, Intel 公司设计出一款 4 位的 4004 微处理器,它是第一款商用处理器,很快 Intel又推出了 8 位的 8008 处理器和 16 位的 8086 处理器,那时候的 4004 芯片、8008 芯片和 8086 芯片上都只有一个核(单核 CPU),随着需求的提高和功耗问题,慢慢的发现一个核不够用了, 于是就在一个芯片上建造两个或者多个核,进而转向多核处理器发展了。多核CPU 具有更高的 计算密度和更强的并行处理能力,多核化趋势改变了 IT 计算的面貌。

1.1 同构和异构

        从硬件的角度来分,多核处理器可以分为同构和异构,如下图所示。

同构(左图)和异构(右图)


        1.1.1  同构

        如果所有的 CPU 或核心的架构都一样,那么称为同构。例如,三星的 Exynos4210、飞思卡尔的 I.MX6D以及 TI 的OMAP4460,它们有两个架构相同的 Cortex-A9 内核,都属于同构。

        1.1.2  异构

        如果所有CPU 或核心的架构有不一样的,那么就称为异构。例如,ST 推出的 STM32MP157,有两个 Cortex-A7 核和一个 Cortex-M4 核,Xilinx 的 ZYNQ7000 系列,有两个 Cortex-A9 核和 FPGA,TI 的达芬奇系列 TMS320DM8127 有一个 DSP C674x 核和一个Cortex-A8 核,这些处理器有不一样结构的核,所以都属于异构。


1.2 SMP和AMP

        从软件的角度来分,多核处理器平台的操作系统体系有:SMP(Symmetric multiprocessing,对称多处理)结构、AMP(Asymmetric Multi-Processing,非对称多处理)结构和 BMP(b ound multi-processing,边界多处理)结构。

1.2.1  对称多处理结构(SMP)

        SMP 结构是指只有一个操作系统(OS)实例运行在多个 CPU 上,一个 OS 同等的管理各个内核,为各个内核分配工作负载,系统中所有的内核平等地访问内存资源和外设资源。因为 异构处理器的各个内核结构不同,如果一个 OS 去管理不同的内核,这种情况实现起来比较复杂,所以一般运行在SMP 结构下的通常都是同构处理器。Windows、Linux 和Vxworks 等多种 操作系统都支持SMP 结构。

         如下图所示,在 SMP 结构下,一个 OS 负责协调两个处理器,两个处理器共享内存,每个核心运行的应用程序(APP1 和APP2)的地址是相同的,通过MMU(Memory Mana gement Unit,内存管理单元)把它们映射到主存的不同位置上。

 SMP 结构


1.2.2  非对称多处理结构(AMP)

        AMP 结构是指每个内核运行自己的OS或同一OS的独立实例,或者说不运行OS,如运行裸机,每个内核有自己独立的内存空间,也可以和其它内核共享部分内存空间,每个核心相对 独立地运行不同的任务,但是有一个核心为主要核心,它负责控制其它核心以及整个系统的运 行,而其它核心负责“配合”主核心来完成特定的任务。这里,主核心我们就称为主处理器, 其它核心我们就称为协处理器或者远程处理器。这种结构最大的特点在于各个操作系统都有本 身独占的资源,其它资源由用户来指定多个系统共享或者专门分配给某一个系统来使用,系统 之间可以通过共享的内存来完成通信。

        如下图是STM32MP157的资源简图,STM32MP157的Cortex-A7内核可以运行Linux操作系统,Cortex-M4 内核可以运行裸机或者其它 RTOS(实时操作系统),RTOS 如 OneOS、FreeRTOS、RT-Thread 和UCOS 等。Cortex-A7和Cortex-M4都有自己独占的资源,也有共享的 资源,这些资源由用户来分配,双核之间可通过共享内存来进行通信。

 在AMP 系统设计中,一般需要解决两个问题:

(1)生命周期管理(内核启动顺序)问题;

(2)内核间通信问题。

        配置 AMP 系统最好的方法是使用一个既满足控制又满足通信要求的统一框架,而OpenAMP 就是当前多核架构使用的最多的标准框架,许多芯片供应商都提供了 OpenAMP 的 实现。基于OpenAMP,生命周期管理是通过Remoteproc 来实现的,内核间通信是通过RPMsg 来管理的,关于两者的实现方式是我们后面介绍。


1.2.3  边界多处理结构(BMP)

        BMP 和SMP 类似,也是由一个操作系统同时管理所有CPU 内核,但是开发者可以指定某个任务在某个核中执行,这里就不再详细介绍BMP 结构了。

        前面讲的AMP 和SMP 有着明显的差别,但两者之间也有着联系,例如,在一个芯片上,可能多个架构相同的内核被配置为一个 SMP 子系统,而此时另外的内核跑的是其它的操作系统, 从整体来看就是AMP 结构了,从逻辑上来分,这个SMP 子系统看起来像是一个单核,可以看 做包含在这个大的AMP 系统中。例如 STM32MP157 的两个Cortex-A7内核跑的是同一个 Linux 操作系统,这两个Cortex-A7 内核就可以看做是一个SMP 子系统,而Cortex-M4内核可以跑 裸机或者RTOS,那么 STM32MP157 这款芯片从整体上看就是AMP 结构了。


2. 总结

        上面这些来自正点原子,最近在学习异核通信的,讲解的不错,容易理解。

        深挖某一点要比广泛涉猎很浅的理解要有效果的多,因为你深挖中学会的还有整个贯通思维,这点对以后的成长作用是很大的。

相关内容

热门资讯

【实验报告】实验一 图像的... 实验目的熟悉Matlab图像运算的基础——矩阵运算;熟悉图像矩阵的显示方法࿰...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
大模型落地比趋势更重要,NLP... 全球很多人都开始相信,以ChatGPT为代表的大模型,将带来一场NLP领...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
kuernetes 资源对象分... 文章目录1. pod 状态1.1 容器启动错误类型1.2 ImagePullBackOff 错误1....
STM32实战项目-数码管 程序实现功能: 1、上电后,数码管间隔50ms计数; 2、...
TM1638和TM1639差异... TM1638和TM1639差异说明 ✨本文不涉及具体的单片机代码驱动内容,值针对芯...
Qt+MySql开发笔记:Qt... 若该文为原创文章,转载请注明原文出处 本文章博客地址:https://h...
Java内存模型中的happe... 第29讲 | Java内存模型中的happen-before是什么? Java 语言...
《扬帆优配》算力概念股大爆发,... 3月22日,9股封单金额超亿元,工业富联、鸿博股份、鹏鼎控股分别为3.0...
CF1763D Valid B... CF1763D Valid Bitonic Permutations 题目大意 拱形排列࿰...
SQL语法 DDL、DML、D... 文章目录1 SQL通用语法2 SQL分类3 DDL 数据定义语言3.1 数据库操作3.2 表操作3....
文心一言 VS ChatGPT... 3月16号,百度正式发布了『文心一言』,这是国内公司第一次发布类Chat...
CentOS8提高篇5:磁盘分...        首先需要在虚拟机中模拟添加一块新的硬盘设备,然后进行分区、格式化、挂载等...
Linux防火墙——SNAT、... 目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条...
部署+使用集群的算力跑CPU密... 我先在开头做一个总结,表达我最终要做的事情和最终环境是如何的,然后我会一...
Uploadifive 批量文... Uploadifive 批量文件上传_uploadifive 多个上传按钮_asing1elife的...
C++入门语法基础 文章目录:1. 什么是C++2. 命名空间2.1 域的概念2.2 命名...
2023年全国DAMA-CDG... DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义...
php实现助记词转TRX,ET... TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的...
【分割数据集操作集锦】毕设记录 1. 按要求将CSV文件转成json文件 有时候一些网络模型的源码会有data.json这样的文件里...
Postman接口测试之断言 如果你看文字部分还是不太理解的话,可以看看这个视频,详细介绍postma...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
4、linux初级——Linu... 目录 一、用CRT连接开发板 1、安装CRT调试工具 2、连接开发板 3、开机后ctrl+c...
Urban Radiance ... Urban Radiance Fields:城市辐射场 摘要:这项工作的目标是根据扫描...
天干地支(Java) 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:...
SpringBoot雪花ID长... Long类型精度丢失 最近项目中使用雪花ID作为主键,雪花ID是19位Long类型数...
对JSP文件的理解 JSP是java程序。(JSP本质还是一个Servlet) JSP是&#...
【03173】2021年4月高... 一、单向填空题1、大量应用软件开发工具,开始于A、20世纪70年代B、20世纪 80年...
LeetCode5.最长回文子... 目录题目链接题目分析解题思路暴力中心向两边拓展搜索 题目链接 链接 题目分析 简单来说࿰...