【入门-02】中央处理单元

编辑:CrazyRabbit
日期:2022年7月27日

本文是英飞凌官方培训的笔记摘录,入门篇第二节课。

1. TriCore内核架构

【入门-02】中央处理单元_第1张图片
TriCore是32位RISC架构内核,具有MCU的实时性,同时有支持DSP指令。
对于一个内核架构,用户一般会了解:

  • 内核的编程模式,如:内核的寄存器,数据类型,存储模式,寻址模式,指令集,
  • 内核的中断处理系统,内核的Trap处理系统,
  • 操作系统中任务执行时的管理员权限设定,任务中断、函数调用发生时上下文切换的硬件实现方式
  • 内核的保护机制,内核的内存管理方式

对于内核架构,可以下载英飞凌的Core Architecture文档:
【入门-02】中央处理单元_第2张图片

2. 内核架构简图

左上角是内核架构的一个简图:
【入门-02】中央处理单元_第3张图片
如图,中间部分包含了CPU取指单元(Instruction Fetch Unit)、执行单元(Execution Unit)、通用寄存器(General Purpose Register)。
左边的FPU是支持单精度浮点运算的单元;右边的CPS(CPU Slave Interface)是CPU作为Slave划分到AURIX TC3xx的内部SRI总线后,其他的总线Master访问该CPU内核寄存器的接口。
上边的PMI(Program Memory Interface)是CPU从Program Memory取指的接口单元;下边的DMI(Data Memory Interface)是CPU从Data Memory取数据的接口单元。

3. 关键特性

左下角是TriCore的关键特征:
【入门-02】中央处理单元_第4张图片

3.1 时间保护系统

Temporal Protection System,时间保护系统,可以帮助用户更好的管理系统中的任务执行时间
【入门-02】中央处理单元_第5张图片
CPU的时间管理单元TPS(Temporal Protection System),采用了3个自减计数器。计数器根据CPU的系统时钟进行计数,用户需要根据系统中任务的时间要求对计数器进行设定,在OS调用任务时,开启计数。如果计数器自减至零,当前任务还未完成,那么就会产生不可屏蔽的Trap,而不是中断。这样可以实时的通知任务已经超时,以确保任务实时的完整性。

3.2 内存保护系统

Memory Protection Unit(MPU),内存保护系统,帮助用户更好的管理任务对内存的访问区间。
【入门-02】中央处理单元_第6张图片
一般在系统设计中,特别是如今功能安全要求的提升,系统中会有不同安全等级的任务,对于芯片内部连续寻址的内存空间,必须保证不同的任务只可以访问被允许的内存空间,这就需要MPU提供内存保护的功能。
TC3xx系列中的内存保护单元,即MPU,属于Range Based保护机制。也就是可以按照内存区间进行访问限制的设置。可以分为数据保护区间和代码保护区间。TC3xx支持最多18个数据保护区间和10个代码保护区间。由用户来定义保护区间的地址范围。
右边的图可以看到有4个Set(Set是保护集合),对于一个任务,可以选择一个保护集合,其中保护了任务执行时可以访问的多个数据保护区和多个代码保护区。图中黄色的是代码保护区,绿色的是数据保护区。当切换下一个任务时,可以让CPU切换至另一个保护集合,而新的保护集合则包含了当前这个任务运行时CPU可以访问的多个数据保护区和多个代码保护区。这么做的目的是为了让任务可以实现快速的切换。
对于数据保护区间,可以对该范围设置使能数据的读操作或写操作。CPU运行某个任务,通过DMI访问内存中的数据,MPU会检查访问的地址是否在使能了读操作或写操作的内存区间内,来决定当前的数据访问是否被允许。如果违反,会产生Trap。
对于代码保护区间,可以对该范围设置使能代码指令的取出操作(也就是读操作),CPU运行某个任务,通过PMI访问内存中某个指令,如果访问的地址属于使能了代码指令取出操作的区间,即可以取指,否则会产生Trap。

3.3 指令集

Wide Range of Supported Instructions,丰富的指令集,可以帮助用户更好的对系统的软件进行优化,平衡代码的运行时间和内存占用情况。
【入门-02】中央处理单元_第7张图片
TriCore的相同指令,有16位长度的或者32位长度的,可以优化代码占用的内存空间。支持的数据格式,比如Char,unsiged int,signed int,float,16或32位的有符合小数。

  • 基本的指令,如:地址运算指令,取指指令,上下文切换指令
  • 高级的指令:对位域的操作指令,按位逻辑的运算指令,最大值最小值比较指令,跳转指令
  • 协处理器:之前提到的单精度浮点运算单元
  • 16位长度的指令:存取指令,算数运算指令,分支跳转指令
  • DSP功能指令:MAC(乘法累加指令),Saturated Math(饱和运算指令),这些指令可以按照DSP的常用寻址模式进行寻址,比较有代表性的寻址方式是环状寻址和位移寻址。

4. 系统架构

TriCore内核集成到TC3xx系列的产品,涵盖了从单核产品到六核产品,集成后很重要的一点是对有些内核增加了锁步核
锁步核跟主核执行系统的指令,但由于设计的多样性,可以保证运行实现的差异化和硬件实现上的差异化。这样的设计可以很大程度上避免了失效,从而帮助系统实现更高的安全等级。
【入门-02】中央处理单元_第8张图片
从上面这张图,可以看到TC3xx多核架构的总线布局上,分成了多个Cross Bar系统总线,如六核产品中,两个系统总线SRI0和SRI1。SRI0上挂4个内核,SRI1上挂2个内核,两个总线之间通过一个总线桥进行连接。采取这种多总线的设计,可以防止过去Bus Master过多而造成整体性能的下降,可以保证更快的总线访问速度。

5. 应用举例

过去在系统采用单核产品时,都是一个CPU顺序执行所有任务,但是汽车应用的系统需求越来越复杂,如果想继续满足实时性的要求,提供系统的性能,必然会采取多核架构的产品。
【入门-02】中央处理单元_第9张图片
多个CPU并行执行,把整体负荷分配到了多个CPU上,可以减轻单核的负担。但如何充分的应用多核架构也并不简单,用户需要充分的了解AURIX的TriCore内核、内存、总线等一系列功能,充分利用其提升效率的点。并且在任务分配、任务调度时避免出现多个内核空闲或繁忙,不均衡的状态,真正发挥多核的协同工作,从而提高整体运行效率。

你可能感兴趣的:(嵌入式开发,单片机,AURIX,英飞凌)