声明及感谢,此文章为参照朱有鹏老师的linux课程总结的。 在此表示感谢!
首先来说cache是一种内存, 叫高速缓存。
从容量来说: CPU < 寄存器 < cache < DDR
从速度来说: CPU > 寄存器 > cache > DDR
cache的存在是因为 它的速度比寄存器慢, 但是比DDR的块, CPU在运行时, 在于DDR进行交互时,由于DDR的速度远远比不上CPU的速度, 因此DDR的速度就会把CPU的速度给拉低. 因此就需要cache 来进行缓冲, 他们之间有了cache 帮助进行交互, 就会使得CPU的性能上能够很好的发挥,
icache 是内部的高速缓存.
咱们程序员对icache 操作最多就是开启与关闭, 至于cpu 与 icache 及与DDR的数据或者指令交互,都是CPU自己内部完成的.
在x210汇编代码中 对cp15(协处理器)操作进行开关icache
mrc p15,0,r0,c1,c0,0; // 读出cp15的c1到r0中
// bic r0, r0, #(1<<12) // bit12 置0 关icache
orr r0, r0, #(1<<12) // bit12 置1 开icache
mcr p15,0,r0,c1,c0,0;
看了 https://blog.csdn.net/fulinus/article/details/8296853
作者是 fulinux 现在这里表示感谢,
对上面代码重新分析,
感觉应该是 请求p15协处理器 读取 c1的值到 r0中
随之修改r0中的值,
最后再通过协处理器将 修改后的r0的值写入到c1中.