为了加速CPU获取指令和数据的速度,开发过程中,会选择开启Cached(缓存)功能。大家在阅读英飞凌芯片手册的时候,是否注意过如下的内存划分,Segment 8和Segment A的前16M空间大小划分一致,如下所示(eg:英飞凌tc3xx):

这两个段(Segment)内存区域有什么区别吗?划分的这两个段内存区域只是逻辑分区(Logical Area)的不同,实际这两个逻辑区对应同一个物理内存区(Physical Area),不同点:CPU访问Cached区和Non-Cached区的速度不同。为什么速度会不同呢?因为Cached区是一块速度更快的RAM区,CPU用一个时钟Cycle即可访问此区域,而访问Non-Cached区,需要多个时钟Cycle。
eg:CPU0的PFlash访问方式如下所示:

(1)使能Cached以后,每个CPU各有一段PCache/DCache区域,以便于提前缓存指令和数据(访问8 Segment)。当CPUx取指令时,会先去PCache空间查找指令,如果在PCache中查找到对应的指令,即:Cache Hit,则不必再去Physical Area搬运对应的数据,提高了指令读取的效率。如果没有找到对应的指令,即:Cache Miss,再去Physical Area搬运对应的数据到PCache空间(Program Cache refills),而搬运的过程需要额外的等待时间,等效于Non-Cached方式,指令读取时间延长;同理,当CPU取数据时,会先去DCache空间查找数据,如果在DCache中命中数据,则直接读取,如果没有命中,再去Physical Area搬运。(2)对于Non-Cached方式读取指

本文详细分析了英飞凌Aurix TC3XX微控制器的Cache功能,包括PFlash指令和数据读取的加速原理,CPU内存访问路径,以及DCache和PCache的配置和空间分配。通过启用Cache,CPU能够更快地访问指令和数据,提高系统性能。

280

被折叠的 条评论
为什么被折叠?



