DSP学习笔记1
C66X 存储控制器
1.C66X存储控制器包括L1P存储控制器、L1D存储控制器、L2存储控制器、外部存储控制器(EMC)和扩展存储控制器(XMC)
2.C6678的L1P存储控制器和L1D存储控制器都可以部分或者全部设置成一路Cache,Cache容量可以支持4KB、8KB、16KB和32KB。复位后都被配置为全Cache,大小为32KB。
3.L2可以部分设置成4路Cache,C6678最大为512KB。
4.对于C6678,器件复位后L2全为SRAM,对于每个内核,L2 SRAM的本地起始地址为0x00800000h。全局访问地址为:
内核 | L2 SRAM全局地址 |
---|---|
核0 | 0x10800000 |
核1 | 0x11800000 |
核n | 0x10800000+n*0x1000000 |
注意:对于L2 SRAM的DMA访问必须使用全局地址。
写回(writeback)和失效(invalidata)机制
cache_wb() 缓存写回
核心作用:强制将指定地址范围内,存在于CPU高速缓存中所有修改过(即“脏”Dirty)的数据副本,立即写回/刷新到主存中。
使用场景:
1.通过DMA将内存中的数据搬移到某个接口前,需要把缓存中的数据先写回到内存中,确保搬移的数据是最新的。
2.当本CPU内核修改了某部分共享内存,需要把缓存中新修改的数据写回,确保其他内核访问的共享数据是最新的。
cache_inv() 缓存失效
核心作用:丢弃指定地址范围内当前存在缓存中的数据副本,并将该区域标记为“无效”或“空”。当CPU下一次尝试访问该区域内的任何一个地址时,它将发现缓存中该数据无效,因此会强制从主存中重新加载最新的数据到缓存中。
使用场景:
1.DMA将数据从接口搬移到某块地址后,CPU要访问这部分数据前要进行缓存失效,确保CPU访问的是最新数据。
2.当某个CPU内核要访问其他内核修改的共享内存数据时,要进行缓存失效,确保CPU访问的是最新数据。