多核架构的基本概念

目录

1.为什么使用多核

2.多核分类

2.1 同构和异构

2.2 SMP和AMP

3 小结


1.为什么使用多核

这个问题个人认为可以从两个方面来看:

  • 性能问题

随着汽车ECU对集成化的要求越来越高,把多个ECU功能集中到一个多核MCU的需求也越来越明显。

以汽车制动相关的One-Box为例,在设计上集成ESC功能,机械上和制动相关的eBooster共用一套液压系统,相比传统的真空助力器,两者协调工作,能够精准高效地支持驾驶员或智能驾驶系统的制动请求。

以往单核MCU在主频、存储等资源上捉襟见肘,例如在电机控制上高频中断(50us-100us)是常见应用,如果只是单核处理,系统负载上到90%非常正常;因此如果能有一个核单独运行处理这些,另一个核做常规应用和底层软件,就能更好地提升系统性能。

  • ECU不同工作负载对芯片的不同需求

这个最常见就是智驾域和座舱域,需要兼顾高性能和高实时性,高性能主要负责大数据运算,高实时性主要用于控制。

以座舱域为例,目前多基于SoC+MCU的组合,如下图:

左侧MCU作为车内通讯接口,负责CAN数据的解析和转发、电源管理、诊断故障处理、功能安全管理等,常见芯片如RH850-F1KM、TC377;

右侧SoC主要负责高性能计算,例如IVI各种娱乐应用、视频、摄像头数据处理,芯片例如高通6155、8155、8195等等;

同样的,随着电子电气架构的不断演进变革,计算硬件单元更加集中,ECU 芯片的数量也会大幅减少,软件不再基于特定的 ECU 来开发,因此需要使用支持不同工作负载的计算芯片(System on Chip)和标准化的编程接口。

2.多核分类

所谓多核(Multicore),其实就是在同一Die上面有多个CPU,这些CPU通过芯片内部总线互联起来,因此多核可以以不同视角来进行分类。

2.1 同构和异构

从硬件视角来看,多核架构可以分为同构多核和异构多核。

同构多核(Homogenous):具备相同微架构的core集成到一颗芯片;

异构多核(Heterogeneous):不同微架构的Core集成到一颗芯片;

从目前常用的车规MCU趋势来看,在一颗芯片上可能会同时看到同构和异构多核,我们以英飞凌TC37x为例,它包含内核有TriCore、Cortex-M3(HSM)、MCS(GTM)、XC800(SCR)等,如下图所示(蓝色箭头表示异构,绿色方框表示同构):

在上图中我们可以看到,除了同构和异构,在TriCore里还有一个Checker Core,这就是我们看过但是基本不怎么在意的锁步多核(LockStep Multicore)。

为啥会有锁步多核这个东西呢?这还得从功能安全角度来看,在这个视角里,有一类故障会让软件感到非常痛苦,那就是瞬态故障(Transient Fault):非永久存在但会偶发的故障。一般这个故障由辐射引起,极端情况下辐射会造车内核寄存器、存储器上的值发生变化,虽然这时候软件或者硬件都无故障,但仍旧出现了偏离预定行为的现象。这类错误无法预见,Debug也可能无法复现,基于此,锁步多核出现了,这一对锁步核的两个core会执行同一份代码,一般情况在输入时CheckCore会延迟几个时钟周期执行,在输出时主Core会相应延迟相同周期,由硬件比较输出是否一致,不一致则出现lockstep错误。

锁步核的出现,能够在极大减少软件开销的情况下时系统达到高功能安全等级(例如ASIL D)。

2.2 SMP和AMP

那么从软件角度来看,多核系统又可以分为SMP和AMP。

SMP(Symmetric Multi-Processing,对称处理):所有核运行同一套程序;

AMP(Asymmetric Multi-Processing,非对称处理):不同核运行不同程序;

需要注意的是,SMP只能在同构多核的硬件架构下实现,因为内核指令集、寄存器等均相同,在软件实现就不太需要考虑平台兼容的问题,但需要通过Core ID来调度当前任务执行,如TC3xx的iLLD代码:

AMP表示不同核运行不同程序,不管在同构还是异构多核硬件下都可以实现,但是由于指令集、操作系统的不同,对于公共资源的访问会存在竞争,为了避免资源冲突,AMP设计上还需要提供访问共享硬件组件的标准化接口。

举个例子,TriCore执行正常的应用任务,但HSM运行的是加解密服务任务,二者交互通过IPC、Mailbox,如果共享资源(RAM)没有做好权限划分就很容易出现问题。

3 小结

需要注意的是,AMP&SMP、同构&异构是在不同视角下对于多核架构的定义,同构多核的硬件架构既可以支持SMP,还可以支持AMP的软件设计,但是异构多核的硬件架构只能支持AMP软件设计,如下图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub | 发布到GitHub仓库并联文件夹的方式

推送到Github 推送步骤如果你只想更新单个文件,只需在第 4 步中指定该文件的路径即可。可能问题一 效果 推送步骤 更新 GitHub 仓库中的文件通常涉及以下步骤: 克隆仓库: 首先,你需要将 GitHub 上的仓库克隆到本地。使用 git …

掌握 In-Context Learning (ICL):构建高效 Prompt 的技巧与调优策略

掌握 In-Context Learning (ICL):构建高效 Prompt 的技巧与调优策略 ICL(In-Context Learning) 是一种在大型语言模型(如GPT-3、PaLM等)中使用的技术,它允许模型在没有显式微调的情况下,通过提…

【ArcGIS】绘制各省碳排放分布的中国地图

首先,准备好各省、自治区、直辖市及特别行政区(包括九段线)的shp文件: 通过百度网盘分享的文件:GS(2022)1873 链接:https://pan.baidu.com/s/1wq8-XM99LXG_P8q-jNgPJA 提取码&#…

论负载均衡技术在Web系统中的应用

论负载均衡技术在Web系统中的应用 引言 在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳…

MATLAB 车牌识别代码讲解

本文将逐步解析一段用于车牌识别的 MATLAB 代码,涵盖从图像读取到处理的各个环节。我们将通过以下步骤详细讲解每个部分的功能和实现。 1. 初始化和读取图像 clear all clc PS imread(图片.jpg); 2. 显示原图 subplot(1,2,1); imshow(PS) …

【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0

目录 一、相关面试题 1. HTTP 与 HTTPS 有哪些区别? 2. HTTPS 的工作原理?(https 是怎么建立连接的) (1)ClientHello (2)SeverHello (3)客户端回应 &a…

FastAPI 请求体解析:基础概念与综合应用

FastAPI 请求体解析:基础概念与综合应用 本文深入探讨了 FastAPI 中的请求体概念,强调使用 Pydantic 模型来声明请求体数据结构。通过具体示例,展示了如何定义请求体、可选参数及默认值,提升数据验证和类型提示的便利性。文章还说…

Python并发编程库:Asyncio的异步编程实战

Python并发编程库:Asyncio的异步编程实战 在现代应用中,并发和高效的I/O处理是影响系统性能的关键因素之一。Python的asyncio库是专为异步编程设计的模块,提供了一种更加高效、易读的并发编程方式,适用于处理大量的I/O密集型任务…

Golang--数组、切片、映射

1、数组 1.1 数组类型 var 数组名 [数组大小]数据类型 package main import "fmt"func main(){//1、定义一个数组var arr1 [5]intarr1[0] 100arr1[1] 200fmt.Println(arr1) //[100 200 0 0 0] } 1.2 数组的初始化方式 package main import "fmt" func …

windows查看net网络监听端口命令和工具(ipconfig、netstat、tasklist、TCPView)

文章目录 使用命令提示符(CMD)查看网络连接和配置使用 netstat 命令查看监听端口查看特定的端口查看TCP监听端口tasklist查看对应进程ID的程序Get-NetTCPConnection 命令使用 TCPView工具使用命令提示符(CMD) 查看网络连接和配置 ipconfig :显示所有网络 适配器的当前 TC…

在VS中安装chatGPT

2、在VSCode中打开插件窗口 3、输入ChatGPT 4、这里有个ChatGPT中文版,就它了 5、安装 6、这时候侧边栏多了一个chatGPT分页图标,点击它 7、打个招呼 8、好像不行 9、看一下细节描述 10、根据要求按下按下快捷键 Ctrl Shift P 11、切换成国内模式 12、…

写了个建表语句 review 的 prompt

初衷 作为一个所谓的 “项目负责人”,我的工作之一,就是 review 大家提交的建表语句。 但大多数情况下,我发现提交的 sql 中包含了大量明显的 “低级问题”。 之所以说低级,并不是我傲慢无礼,而是大多数这些明显的需…

Linux下的Debugfs

debugfs 1. 简介 类似sysfs、procfs,debugfs 也是一种内存文件系统。不过不同于sysfs一个kobject对应一个文件,procfs和进程相关的特性,debugfs的灵活度很大,可以根据需求对指定的变量进行导出并提供读写接口。debugfs又是一个Li…

go 包管理

Go语言所依赖的所有的第三方库都放在GOPATH目录下面 gomodule是Go语言默认的依赖管理工具 Modules是相关Go包的集合,是源代码交换和版本控制的单元,用于指定使用哪些源文件 GO111MODULEoff禁用gomodule,编译时从GOPATH和vendor文件夹中查找包…

Fooocus图像生成软件本地部署教程:在Windows上快速上手AI创作

文章目录 前言1. 本地部署Fooocus图像生成软件1.1 安装方式1.2 功能介绍 2. 公网远程访问Fooocus3. 固定Fooocus公网地址 前言 本篇文章将介绍如何在本地Windows11电脑部署开源AI生图软件Fooocus,并结合Cpolar内网穿透工具轻松实现公网环境远程访问与使用。 Foooc…

Linux高阶——1103——Signal信号机制

1、信号机制 在linux和unix系统下,如果想要处置(挂起,结束)进程,可以使用信号,经典消息机制,所以进程包括系统进程都是利用信号处置进程的 kill -l——查看所有系统支持的信号 1-31号信号——Unix经典信号&#xff…

修改HarmonyOS鸿蒙图标和名字,打包后安装到真机,应用图标丢失变成透明,修改名字也不生效,还是默认的labeL解决方案教程

HarmonyOS鸿蒙打包hap 安装应用到桌面没有图标,用hdc安装到真机,打包后应用图标丢失变成透明,名字也还是默认的label的bug,以下是解决方案 以下是修改方案: 1、修改应用名字: 2、修改应用图标&#xff1a…

Python小游戏20——超级玛丽

首先,你需要确保你的Python环境中安装了pygame库。如果还没有安装,可以使用以下命令进行安装: bash pip install pygame 运行效果展示 代码展示 python import pygame import sys # 初始化pygame pygame.init() # 设置屏幕尺寸 screen_width …

CTF-WEB: python模板注入

漏洞是如何产生的? Python模板注入漏洞通常出现在使用模板引擎生成动态内容的应用中。如果用户输入没有经过适当的处理直接插入模板中,就可能会导致模板注入漏洞。一个常见的例子是使用Jinja2模板引擎时,如果直接渲染用户输入,则…

从富文本窥探苹果的代码秘密

从富文本窥探苹果的代码秘密 背景 在我们的业务场景下,为突出诸如 “利益点”和“利率” 等特性以推动订单成交,引入了 “富文本” 这一概念。富文本具备丰富格式的文本展示与编辑功能。然而,恰是由于富文本具有 “多样式”“复杂排版” 等特…