目录
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的内核,看看那些自研内核会不会有相似之处。
就酱,债见!