|
在嵌入式软件开发中,有时候会要求把某一块内存设置为不可缓存 (non-cacheable) 状态,这是为什么呢? 今天的这篇文章带大家简单了解一下嵌入式软件开发中有关 Cache 的知识。
当 CPU 和某一个其它模块 (比如 DMA) 都可以对某一块内存进行操作时 (比如 DMA 的 Descriptor, 其本质就是一块可以被 CPU 和 DMA 操作的内存),就需要把这块内存设置为不可缓存 (non-cacheable) 状态。
这是因为只有 CPU 会使用 Cache, 而其它模块是不会使用 Cache 的。为了确保其它模块从这块内存中读取的信息,确实是 CPU 刚刚写入的信息,就需要让 CPU 不使用缓存,保证它确实即时地把信息写入内存。
除了让 CPU 不使用缓存之外,还有一种替代的办法,就是在每次 CPU 写入内存的时候使用 writeback 操作,这样也可以确保每次 CPU 都可以即时把信息写入内存。 |
|