嵌入式中cache使用及数据操作一致性机制

       嵌入式中RAM实际使用的地址空间会出现不连续的情况,如片上RAM2块,片外DRAM 1块,映射后可能出现如下情况:

       在使用cache时,就要特别注意,要注意每一块RAM地址空间的配置,每一块可以被配置成cache映射区和cache非映射区。

在嵌入式系统中,一般会存在多master(主设备)情况,如典型的master:CPU0,CPU1, DMA0, DMA1, SATA, NANDC等。

      一般典型的嵌入式32位地址空间映射如下图示:

                                                                                   


       对在cache映射区的地址空间操作,就要考虑memory存储的内容一致性。多master内如果有cache存在时就要考

虑数据分散的一致性问题。要确保多master读取写入数据时整体的一致性。可以通过总线探测,cache等及时回刷等技术来实现

对某一地址空间存储的数据一致性保证。

       对不在cache映射区的地址空间操作,每次master操作该地址空间时,都会去RAM中直接读取数据,可以保证RAM中数据一致性。


       保证了某内存地址数据的唯一性后,就能保证多master同时能够使用到想要的数据吗?这是不可能的,多master同时读取数据时,

又涉及到多master对总线的抢占使用问题。如果多master同时在使用总线访问RAM,由于总线仲裁机制原因,可能会出现某个master

读取的数据出现老数据和新数据混合现象造成数据混乱,导致程序出错。

        因此,需要保证某一个master在执行某个代码片段时使用数据的正确性,让多个master顺序使用某RAM地址空间的存续数据。

硬件原子操作数据指令应运而生,如load/store、swp、总线探测等指令。这种指令可以保证访问RAM时原子性操作,基于此,

操作系统之上的互斥锁,自旋锁,信号量,读写锁等得以实现。这些锁机制都要基于底层硬件的原子指令来实现。

        否则锁机制就是一句空话。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值