异核通信框架(1)——SMP和AMP架构

news/2024/11/24 14:12:59/

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. 总结

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

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


http://www.ppmy.cn/news/527516.html

相关文章

OPC DA的DCom配置

目录 一、OPC DA的Dcom配置文档 1.1、OPCDA的DCOM配置PDF文档下载 1.2、DCOM在线参考配置(英文版) 二、配置OPC DA准备内容 2.1、说明 2.2、OPC运行库 三、配置OPC DA操作流程 3.1、创建用户并赋予访问权限 3.2、修改操作系统 Firewall&#xf…

STM32 HAL库编写MPU6050输出六轴原始数据, 移植DMP输出自身姿态角,欧拉角

--------------------------------------------------------- 记录自学过程 ------------------------------------------------------------- 可能有些说明不对的地方,请大家提出来,共同解决 .共同学习 .共同进步. | 程序链接(主函数读取版) | 程序链接…

六轴加速陀螺仪MPU6500/MPU6050使用及DMP库移植,含记步器功能

本篇博客为博主学习使用MPU6500完成后的学习记录,故在这只做主要讲解,如有博友看完后仍不知如何使用,可在下方留言问我,或发邮件问我(dayou1024qq.com),因邮件有QQ和微信提示,故我能…

hdl_graph_slam三维激光雷达+GPS+IMU+ODOM

系统ubuntu16.04 源代码位置参考:https://github.com/koide3/hdl_graph_slam 知乎里的算法解析说的很详细:https://zhuanlan.zhihu.com/p/89014435 hdl_graph_slam是由日本风桥科技大学的Kenji Koide在github上开源的六自由度三维激光SLAM算法。主要由…

OMAPL138EZCED4E

OMAPL138EZCED4E 规格 产品属性 制造商:Texas Instruments 产品种类:数字信号处理器和控制器 - DSP, DSC RoHS: 详细信息 产品:DSPs 系列:OMAP-L138 商标名:OMAP 安装风格:SMD/SMT 封装 / 箱体:PBGA-361 核心:ARM926EJ-S, C674x 内核数量:2 Core 比较大时钟频率:456 MHz, 456 M…

ov5640摄像头驱动的开发过程

对于在Linux下OV5640摄像头驱动开发的过程。 硬件连接电路设计 (1)OMAP4 通过 CSI2 接口连接 OV5640 传感器(MIPI 标准),使用三组差分信 号,其中一组差分传送时钟,另两组差分传送数据信号。一…

ap module omap4460

http://gitorious.org/ap-module-omap4460 DashboardRegisterLoginActivitiesProjectsTeams</

opencv2.0的移植 OMAP4460 FPU

宿主系统&#xff1a;ubuntu9.04 交叉编译器版本&#xff1a;arm-linux-gcc-4.3.2 目标系统&#xff1a;linux kernel 2.6.3.2 硬件ARM-Cotex(AM3517)开发板 2012-11-2 重新编译时 : 目标系统 ubuntu_core linux version 3.0.0-1205-omap4 硬件&#xff1…