关于Aurix的内存,缓存Cache,PSPR等的理解

admin 2024年3月4日18:14:01评论12 views字数 3101阅读10分20秒阅读模式
点击上方
01 AURIX的芯片手册
关于Aurix的内存,缓存Cache,PSPR等的理解
02 内存

内存在电脑中起着举足轻重的作用。内存一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)

RAM作为主存的主要部分,按其结构分为:

动态随机存取存储器 (Dynamic Random Access Memory,DRAM), 同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM), 静态随机存取存储器(Static Random-Access Memory,SRAM)。

可以理解为FLASH是一个静态的存储【也就是只读存储器(ROM)】,可以用来存储函数或者常量,也就是定义的这部分烧录到芯片里,执行内容不会有改变。即便掉电,里面的数据也不会丢失。

RAM是一个动态的存储,可以读数据,也可以写数据。RAM可以在运行过程中,可以当flash用。但是如果掉电,RAM里的数据不会保存,一旦掉电,数据就全没了。

举例:一个手机里存着我们很多的数据,如果手机关机,这些数据或者图片是存放在FLASH里的,因为FLASH是存放静态数据的,而当手机重新上电的时候,flash里的数据会通过指令传输到RAM里,之后在被系统里的函数调用,从而开机后,手机可以看到关机前的数据。

关于Aurix的内存,缓存Cache,PSPR等的理解
03 缓存

高速缓冲存储器(Cache),是位于CPU与主内存间的一种容量较小但速度很高的存储器:

关于Aurix的内存,缓存Cache,PSPR等的理解

由于CPU的速度远高于主内存,CPU直接从内存【(RAM)、(ROM)】中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。

缓存需要把内存里的数据放进来。Cache 的数据放置的策略决定了内存中的数据块会拷贝到 CPU Cache 中的哪个位置上,因为 Cache 的大小远远小于内存,所以,需要有一种地址关联的算法,能够让内存中的数据可以被映射到 Cache 中来。这个有点像内存地址从逻辑地址向物理地址映射的方法,但不完全一样。

缓存的命中:

根据要寻址的地址的tag来逐一与cache中的tag字段比较,如果有与之匹配的cache line,也就是cache hit,如果遍历整个cache,也没有找到匹配的cache line,那就是cache miss了。

关于Aurix的内存,缓存Cache,PSPR等的理解

Cache的层次设计:

Cache设计采用了指令 Cache(简称I-Cache)和数据Cache (简称D-Cache) 分开的方式。

1.在 I-Cache中存储有微处理器需要的指令,在微处理器的取指阶段,通过程序计数器PC提供给I-Cache的地址,微处理器可以获取需要的指令。

2.而D-Cache则是作为一个数据的存储,并提供对于Load/Store指令所要操作地址的数据,它地址则来自于ALU运算的结果。

I-Cache和微处理器的接口以及I-Cache和L2 I-Cache的接口都是单向的。D-Cache和微处理器的接口以及D-Cache和L2 Cache的接口是双向的。这样处理的原因在于I-Cache存储的是指令,不需要更改所存储的数据的值。而D-Cache 中存储的是数据,其值会根据指令操作的不同而改变。比如:在运行 Store 指令的时候会对 D-Cache 中相应地址进行写入数据的操作。

关于Aurix的内存,缓存Cache,PSPR等的理解
04 AURIX中的Cache

在AURIX中,CPU分为Cache和Non-Cache,CPU0的PFlash访问方式如下图:

关于Aurix的内存,缓存Cache,PSPR等的理解

Cache使能的方式是配置下面这个寄存器:

关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解

(1)使能Cache以后,每个CPU各有一段PCache/DCache区域,以便于提前缓存指令和数据(例如访问8和9的 Segment,这是打开了P-Cache后,P-Flash和LMU对应的地址)

当CPUx取指令时,会先去PCache空间查找指令,如果在PCache中查找到对应的指令,即:Cache Hit,则不必再去Physical Area搬运对应的数据,提高了指令读取的效率。如果没有找到对应的指令,即:Cache Miss,再去Physical Area搬运对应的数据到PCache空间(Program Cache refills),而搬运的过程需要额外的等待时间,等效于Non-Cached方式,指令读取时间延长;同理,当CPU取数据时,会先去DCache空间查找数据,如果在DCache中命中数据,则直接读取,如果没有命中,再去Physical Area搬运。

关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解

(2)对于Non-Cache方式读取指令和数据(例如访问10和11的 Segment,这是关闭了P-Cache后,P-Flash和LMU对应的地址),CPU需要直接访问Physical Area,而访问Physical Area区域所消耗的时间远比访问PCache/DCache区域慢的多。

关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解

P-Cache(P-Cache就是I-Cache)与D-Cache的区别

P-Cache的作用是缓存指令,D-Cache是缓存数据。指令一般不会被修改,所以P-Cache在硬件设计上是可以是只读的,这在一定程度上降低硬件设计的成本。D-Cache则是作为一个数据的存储,并提供对于Load/Store指令所要操作地址的数据,它地址则来自于ALU运算的结果。

在C语言中,内存主要分为5个区,分别为栈区、堆区、全局/静态存储区、常量存储区、代码区。其中代码区存放源程序的二进制代码,其余四个区都存储进程运行过程中需要的存储的变量。

一般,指令(P-Cache或者PSPR的内容)是放在代码区或者常量区,而数据(D-Cache或DSPR的内容)放在全局(静态)区。

关于Aurix的内存,缓存Cache,PSPR等的理解

举例:

我定义一个函数:

关于Aurix的内存,缓存Cache,PSPR等的理解

观察他的map文件里的地址:.o是他所属的C文件,下面是函数所属的地址。同样的我定义一个未初始化的全局变量,也可以找到他的地址。

上海众华律师事务所接受上海探偲商务信息咨询有限公司(以下称“委托人”的委托,指派本律师事务所胡晓光律师,就个别公司涉嫌不正当竞争,严重损害委托人合法权益事宜,作如下声明。

关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解

我定义一个全局变量:

关于Aurix的内存,缓存Cache,PSPR等的理解

他的map文件里的地址:.o是他所属的文件,下面是函数所属的地址。同样的我定义一个.bss或.data的全局变量,也可以找到他的地址。

关于Aurix的内存,缓存Cache,PSPR等的理解

linker file用来定义数据和代码具体存放在哪一块。比如它会规定存储在Flash的启动函数_START()的存储地址和BootROM里面reset vector内预设的地址匹配,这样复位以后就总会从启动函数_START()开始执行

关于Aurix的内存,缓存Cache,PSPR等的理解

如何在代码里将函数、变量、常量等由一个地址移到另一块地址:

举例:我想将代码里的函数从原来P-Cache的地址移到PSPR这个地址。要如何处理。原来P-Cache访问P-flash,现在改成PSPR访问P-flash

关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解

我在TASKING的.lsl文件中添加一个规则,这个规则的意思就是将代码中含有 PSPR_CORE2_CPULoad_Optimize 这个关键词的函数放到PSPR的地址里面。

关于Aurix的内存,缓存Cache,PSPR等的理解

代码中添加的内容是:

关于Aurix的内存,缓存Cache,PSPR等的理解

函数地址的变化:由801ea848变成50100004

关于Aurix的内存,缓存Cache,PSPR等的理解
关于Aurix的内存,缓存Cache,PSPR等的理解

上面是将某个函数换地址,也可以用上面的方式将整个文件的函数换地址,除此之外,还可以如下图将划线的内容改成CDD_SDH*,这样也可以将整个C文件的函数换个地址:

关于Aurix的内存,缓存Cache,PSPR等的理解

来源:本文为CSDN博主「梅尔文.古」的原创文章

原文链接:https://blog.csdn.net/xiandang8023/article/details/129752705

原文始发于微信公众号(谈思实验室):关于Aurix的内存,缓存Cache,PSPR等的理解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月4日18:14:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于Aurix的内存,缓存Cache,PSPR等的理解http://cn-sec.com/archives/2545421.html

发表评论

匿名网友 填写信息