芯片杂谈 -- 常聊的内核包含哪些模块

news2024/9/20 18:34:48

目录

1. R52内核速览

2. 处理器模块详解

3.内核的功能安全测什么?

4.小结


最开始接触到汽车MCU大都来自NXP、Infineon、Renesas,例如MPC5748、TC275、RH850 P1X等等;

而各大OEM、供应商等等发布的JD通常都会要求熟悉AURIX、PowerPC、G3KM等等内核。

其实我从来没明白这个所谓熟悉,是哪种程度?而面试者通常也不会问太多内核的东西。

但是出于好奇,我去研究了目前非常火的ARM Cortex-R52 处理器,总结一下内核里的东西,算是一个入门小科普。

1. R52内核速览

Cortex-R52处理器是一款中等性能、有序、超标量处理器,主要用于汽车和工业应用。参考模型如下图所示:

 该处理器包含如下部件:

  • Core,内核;
  • TCM,Tightly Coupled Memories,最靠近内核的一段RAM,不能cache,速度最快;对应Tricore的DSPR\PSPR等。
  • 总线接口,AXIM\S、Flash 接口、LLPP(Low-latency Peripheral Port)接口;
  • GIC,Generic Interrupt Controller中断控制器;
  • PMC,Programmable MBIST Controller,用于执行内部MBSIT测试等

  • ....

目前已经有大厂基于此核做区域控制器,例如S32Z、E。

根据文档描述每个处理器(Processor)可以下挂1-4个内核(Core),因此从这里就引出了Cluster的概念,以S32Z为例,它总共分为了2个Cluster:

每个Cluster里包含4个内核,如果需要锁步,那就配置为两对锁步核使用;也可以一个cluster配置锁步,另一个cluster配置4个普通核;更有甚者可以直接配置2*4个普通核使用。

那如果是配置为8个核使用,没有锁步,处理器的功能安全如何保证?

为此,我们就必须对处理器的内存进行一些测试,那么就有必要搞懂里面到底包含了哪些模块。

2. 处理器模块详解

R52内核采用 Harvard memory 架构,从内部视角看就分为了两个独立路径来访问指令和数据,如下所示:

从上图,我们可以看到,指令侧仅仅是取指,所以是一个单向接口;数据侧可以读写数据,但是只有从AXIM取写数据,所以Flash接口是一个单向接口,AXIM是一个双向的。除此之外,R52提供了A\B\C TCM,可以实现最快速地访问,因此这块RAM里面可以运行时间要求很高的代码。

有了上述逻辑之后,我们进一步来看Core里面应该包括哪些模块?

由于没有找到R52内部的细节,所以从基于M33依葫芦画瓢总结如下:

首先是获取数据的指令侧和数据侧,在ARM内核中均使用BIU(Bus Interface Unit)用于总线仲裁,处理Flash接口、AXIM接口的访问冲突;

其次,我们汇编常用的load store指令,则有LSU(Load Store Unit)控制访问其他外设系统等;

当LSU完成基本操作后后,统一送到DPU(Data Processing Unit)进行处理,DPU是内核最重要的单元,它包含了ALU(Arithmetic and Logic Unit)、异常响应、取指译码执行等。异常的来源通常有GIC提供。

为了加快运行速度,PFU(Prefetch Unit)可以从Cache中预取指令,送到DPU进行处理。

总结下来,一个Core内部至少应该包括如下单元:

  • DPU:Data Processing Unit,取指译码执行指令、处理异常;
  • LSU:Load Store Unit,控制外设访问的load、store操作;
  • PFU:Prefetch Unit,预取Cache指令;
  • BIU:Bus Interface Unit,处理不同总线接口访问冲突;
  • TCU:TCM Control Unit,控制TCM的load store操作;

至于R52内部还有哪些单元,看后续有无公开资料可以看看。 

3.内核的功能安全测什么?

首先可以确定的是,online test模式下,内核LBIST是没法做了,不然芯片重启了都完蛋,PBIST上电搞一次可以了,后面就持续监控,那能做的只有MBIST;

MBIST在R52里是由PMC-52进行控制,那具体可以测什么内容呢?

TCM是可以测试的,其次就是核里自带的Cache,包括指令Cache、数据Cache。

其实从这点来看,TC3xx的MTU设计还是非常厉害的,它仅用MTU+SSH就可以覆盖全芯片的Memory测试,而如果使用R52内核的MCU会如何设计MBIST,确实非常让人好奇。

4.小结

用了很小的篇幅来描述内核里的各种单元,有个初步印象,后续准备多多对比几家汽车MCU的内核,看看那些自研内核会不会有相似之处。

就酱,债见!

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

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

相关文章

智能客服的演变:从传统到向量数据库的新时代

国产数据库的发展在21世纪初取得了显著的进展。根据不完全统计,目前在国内已有超过300种不同的数据库在案。这一现象在40年前几乎是不可想象的,标志着中国在数据库领域取得了巨大的突破和多样化选择。对于对老一辈的故事或数据库发展史充满兴趣的朋友们&…

从gerrit上拉取未合入的代码工程

一. 简介 本文简单学习一下,如何将 gerrit上未合入的代码拉取到本地。 二. 从gerrit上拉取未合入的代码工程 有时候本地的代码经过 自动化编译通过,提交到 gerrit上,但是有时候在代码实现上还需要做一些更改。这时候就需要从 gerrit上将这…

企业如何筛选达人进行投放?投放效果如何统计?

投放已经成为企业品牌营销策略的重要组成部分,如何去筛选出各平台的优质达人,以达到最大的投放效果,增强市场的竞争力呢?很多企业可能会借助一些官方投放平台数据进行分析,比如星图、蒲公英等。也可以用声量通进行账号…

精选干货!分享5款免费论文生成软件

在当今学术研究和写作领域,AI论文生成工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是五款免费且功能强大的AI论文生成软件推荐: ### 1. 千笔-AIPassPaper…

【逐行注释】自适应Q的AUKF|MATLAB代码(附下载链接)

文章目录 逐行注释的说明运行结果自适应UKF介绍实现过程 部分代码各模块解释 逐行注释的说明 每一行都标有中文注释: 是我自己一个字一个字打的,如果有错别字等问题,欢迎指正。 运行结果 三轴的估计值、真值、滤波前的值对比&#xff1a…

家庭用超声波清洗机哪个品牌好用?好用的眼镜清洗机推荐

在我们的日常生活中,像眼镜、项链和耳环这些频繁使用的个人物品,经常面临灰尘积聚和细缝中难以触及的污渍问题。超声波清洗机凭借其深入微细缝隙的清洁能力,成为了解决这一难题的理想工具,确保了这些珍贵小物的彻底清新。不过现在…

魔搭上创建数据集

本文将介绍如何在魔搭上创建数据集,首先登录后通过网页创建数据库集。 通过 git 命令 clone 数据集 创建数据集,初始化训练数据和测试数据 train.csv,test.csv,注意 csv 的首行为列名称 创建子数据集,魔搭上子数据集…

智能监控中图像质量增强方法研究

粗略的构思步骤 摘要 本文深入探讨了智能监控系统中图像质量增强的关键技术,通过融合深度学习、传统图像处理算法及生成对抗网络(GAN)的优势,提出了一套高效且鲁棒的图像质量提升方案。本文详细描述了技术框架的每一个组成部分,深入剖析了技术原理,并详细阐述了实现步骤…

leecode100题-双指针-三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 答案中不可以包含重复的三元组。 示例 1: 输入…

Kubernetes------Service

目录 一、属性说明 二、定义和基本配置 1、定义 2、创建Service 2.1、typeClusterIP 2.2、typeNodePort 2.3、固定IP访问 三、Service、EndPoint、Pod之间的关系 四、服务发现 1、基于Service中IP访问外部服务 2、基于Service中域名访问外部服务 五、Ingress的安装和使…

react js 路由 Router

完整的项目,我已经上传了 资料链接 起因, 目的: 路由, 这部分很难。 原因是, 多个组件,进行交互,复杂度比较高。 我看的视频教程 1. 初步使用 安装: npm install react-router-dom 修改 index.js/ 或是 main.js 把 App, 用 BrowserRouter 包裹起来 2. Navigate 点击…

JAVA基础: while循环,for循环,break和continue关键字,数组详解

1 while循环 while(boolean结果)语句/语句组 每次循环做什么事 循环条件 循环条件改变。 循环嵌套 在一个循环中,出现了另一个循环。 无限循环 循环条件永远为真。 int i 10 ; while(i > 0){//....i ; }------------------------- while(true){}2 break关键…

mysql的整理

插入数据: INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); insert into employee(id,workno,name,gender,age,idcard,entrydate) values(1,1,Itcast,男,-1,123456789012345678,2000-01-01); insert into employee values(3,3,韦一笑,男,38,1…

如何利用 CSS 渐变实现多样化背景效果

前言 总在平常看到像这样的图片 背景是如何实现的呢 背景效果的多样性和美观性直接影响用户体验。CSS 渐变为设计师提供了一种强大且灵活的方法来创建引人注目的背景。渐变是颜色之间平滑过渡的效果,通过调整渐变类型和设置,你可以轻松实现从简单到复杂…

和弦图制作软件有哪些,和弦音乐制作软件推荐

在音乐创作与教学领域,和弦图作为视觉化展现音乐和声结构的工具,扮演着至关重要的角色。随着技术的发展,众多和弦图制作软件应运而生,旨在简化创作流程,提升学习效率。然而,面对琳琅满目的选项,…

【Linux】多线程:线程控制

目录 一、创建线程:pthread_create 二、线程终止:pthread_exit、return、pthread_cancel 三、线程等待:pthread_join 四、线程分离:pthread_detach 五、如何创建并使用多线程 六、对线程进行封装 一、创建线程&#xff1a…

ModuleNotFoundError: No module named ‘keras.layers.core‘怎么解决

问题 ModuleNotFoundError: No module named keras.layers.core,如图所示: 如何解决 将from keras.layers.core import Dense,Activation改为from tensorflow.keras.layers import Dense,Activation,如图所示: 顺利运行&#xf…

中秋快到了,要给哪些国外客户送祝福(附贺卡模板)

马上就要中秋节了,在这里提前祝小伙伴们中秋节快乐,身体健康,阖家团圆,业绩越来越好,公司越来越好,一切都越来越好! 中秋节是我们非常重要的几个传统节日之一了,除了我们自己庆祝之…

深入理解Java中的clone对象

目录 1. 为什么要使用clone 2. new和clone的区别 3. 复制对象和复制引用的区别 4.浅克隆和深克隆 5. 注意事项 1. 为什么要使用clone 在实际编程过程中,我们常常遇到这种情况:有一个对象 A,需要一个和 A 完全相同新对象 B,并…

【【通信协议之ARP的FPGA实现其一】】

通信协议之ARP的FPGA实现其一 介绍 ARP 协议分为 ARP 请求和 ARP 应答,源主机发起查询目的 MAC 地址的报文称为 ARP 请求,目的主机响应源主机并发送包含本地 MAC 地址的报文称为 ARP 应答。当主机需要找出这个网络中的另一个主机的物理地址时&#xff0…