第21课.cache和MMU
1.Cache概述
Cache实际上也是一块存储空间,最大的优点就是速度快.CPU和SDRAM通信速度慢,取指令,读写数据都需要等待,所以中间出现了一个Cache用来解决这个问题.
程序具有局部性的特性,cache就是利用这种局部多次访问的特性,将指令或者数据暂存一份到Cache中,下次访问速度上就会提高很多.
时间局部性:在同一段时间里,有极大的概率访问同一地址的指令或数据
空间局部性: 有极大概率访问到相邻空间的指令/数据
当使用Cache的时候,CPU假设需要读取A的内容,实际上回缓存大于A地址的内容,会缓存A到Cache Line大小的内容到Cache中.Cache Line可以简单的理解为CPU Cache中的最小缓存单位。2440中这个单位是32字节.
2.DCache和Write buffer
3.协处理器指令
这里C7中不同的寄存器,对应的是不同的功能
CP15协处理器指令
CP15的R1寄存器是控制寄存器
Register 7
4.MCR和MRC
5.ICache代码分析
enable_icache:
/* 设置协处理器使能icache */
mrc p15, 0, r0, c1, c0, 0
orr r0, r0, #(1<<12) /* r0 = r0 or (1<<12) */
mcr p15, 0, r0, c1, c0, 0 //吧修改好的r0写给cp15的c1寄存器
mov pc, lr /* 修改完后,返回
*/
注意:只有当MMU启动时才能使用DCache,ICache的使用不需要开MMU
6.MMU简介
内存管理单元简称MMU。它负责虚拟地址(VA)到物理地址(PA)的映射,并提供硬件机制的内存访问权限检查
没启动MMU时,CPU,Cache,MMU外设等所有部件使用的都是物理地址
启动MMU后,CPU对外发出虚拟地址VA,VA被转换为MVA供Cache,MMU使用,在这里MVA被转换为PA,最后使用PA读写实际设备
注:
启动MMU后,CPU看到的,用到的都是VA。![](https://img2018.cnblogs.com/blog/1557439/202002/1557439-20200207111514198-1875007790.jpg)
7.一级页表的描述符格式
MMU访问权限控制
CP15 C2[14:31] 页基址
CP15 C3[0:31] 域控制
CP15 C1 ICache、DCache、MMU控制开关
注:
"域"决定是否对某块内存进行权限检查。S3C2440有16个域CP15寄存器C3中每两位对应一个域
"AP"决定如何对某块内存进行权限检查
8.内存的访问检查权限
其中S、R是有CP15的C1进行控制的