对于读操作,只有在第1次访问指定地址时才会加载到Cache,而写操作的话,可以直接写到内存中(write-through模式)或者放到Cache里面,后面再写入(write-back模式)。 如果采用的是Write back,Cache line会被标为dirty,等到此行被evicted时,才会执行实际的写操作,将Cache Line里面的数据写入到相应的存储区。 Cache命中是访...
如果使用了可以使用DMA的SRAM,需要注意开启了CACHE,记得要配置MPU然后选择为MPU_ACCESS_NOT_CACHEABLE不可使用cahe,所以可以将DMA的数据单独指定到另一块SRAM上,然后将该RAM设置为MPU_ACCESS_NOT_CACHEABLE就可以了,否则DMA数据很有可能是不更新的。 开启CACHE的情况下操作内部flash的时候,也要注意清除D-CACHE,否则写...
对于指令缓冲,用户不用管,这里主要说的是数据缓存D-Cache。以STM32H7为例,主频是400MHz,除了TCM和Cache以400MHz工作,其它AXI SRAM,SRAM1,SRAM2等都是以200MHz工作。数据缓存D-Cache就是解决CPU加速访问SRAM。
如果CPU要写的SRAM区数据在Cache中已经开辟了对应的区域,那么会同时写到Cache里面和SRAM里面;如果没有,就用到配置no write allocate了,意思就是CPU会直接往SRAM里面写数据,而不再需要在Cache里面开辟空间了。 在写Cache命中的情况下,这个方式的优点是Cache和SRAM的数据同步更新了,没有多总线访问造成的数据一致性问题。
所以,尽管后面时间里ADC因TIMER不停触发而产生新数据并被DMA传输到SRAM,但CPU除了第一次外总是从D-Cache取数据,导致该数据永远就是第一次读到的数据而不变。 既然这样,我们可以在CPU每次针对SRAM做了读操作后,对D-Cache相应内容做无效处理,迫使CPU每次要取数据时因Cache Miss而发生读Allocate操作并更新Cache数据,...
重要的MPU和Cache知识分别放在了第23章和第24章。 3.2 STM32H7硬件框图 学习一款新的芯片,需要优先了解一下它的整体功能设计。需要的资料主要是来自官网和数据手册,比如我们V7开发板使用的STM32H743XIH6,直接在官方地址:链接(这是超链接)就可以看到对此芯片所做的介绍,页面中有一个如下的框图,对于了解STM32H7整体...
2 Cache Cache是集成在CPU内部的极高速的缓存。注意关键词“极高速”。一般来说,它的访问速度几乎可以媲美CPU。这就意味着,CPU在访问Cache的时候几乎不会浪费多少时间。不过,速度的提升是用容量作为代价的。Cache的容量很小。 3.DMA DMA=Direct Memory Access。这是一种通过硬件实现的数据传输机制。简单的说,就是...
MPU配置和Cache配置: 数据Cache和指令Cache都开启。 AXI SRAM的MPU属性: Write back, Read allocate,Write allocate。 FMC的扩展IO的MPU属性: 必须Device或者Strongly Ordered。 D2 SRAM1,SRAM2和SRAM3的MPU属性: Write through, read allocate,no write allocate。
缓存加速了指令和数据访问效率,但也带来了数据一致性(data coherency)风险,需要注意.解决一致性问题的手段是使用MPU配置内存属性.发布于 2022-12-05 12:06・IP 属地山东 内容所属专栏 电子工程师碎碎念 记录一些工作日志,调试记录,零散设计想法 订阅专栏 ...
本章节为大家讲解STM32H7学习中的一个重要知识点MPU(Memory Protection Unit,内存保护单元),早在STM32F1和F4芯片上面也是有这个功能的,但是基本用不上。但是到了H7就得用上了,因为要设置Cache。 23.1 初学者重要提示 23.2 MPU简介 23.3 MPU的功能实现