您的位置:首页 > 其它

关闭mmu和cache

2015-08-25 19:18 225 查看
首先介绍cache,在此先了解ARM存储体系。



上图是计算机系统存储体系,嵌入式系统是属于计算机系统的,因此上图的存储体系也是嵌入式系统的存储体系。

内部存储器:包括通用寄存器,程序状态寄存器。特点是访问速度快,容量小;

TCM:如cache,主存储器,内存。特点是访问速度不及内部存储器,但容量大;

辅助存储器:速度更慢,但容量更大。

cache:



没有使用cache时,处理器是直接访问存储器的。其中存储器的速度较慢,处理器速度较快,这种速度的不一致导致了处理器访问存储器用时较长。为了解决这个问题,引进了cache。

cache是一种容量小但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝。对于程序员来说,cache是透明的,它自动决定保存哪些数据、覆盖哪些指令。当处理器需要访问存储器时,首先访问cache,若cache里面有处理器需要的数据,则直接从cache取得所需数据;若cache没有处理器需要的数据,则会从存储器中取得所需数据,并且将数据拷贝一份到cache。

cache按照功能划分为:

I-cache:指令cache,用于存放指令

D-cache:数据cache,用于存放数据

mmu



虚拟地址:程序中使用的地址

物理地址:物理存储单元实际的地址

虚拟地址的作用:①可以让进程使用更大的空间②可以解决地址冲突

mmu的作用:完成虚拟地址到物理地址的映射。



ARM11前,cache位于MMU的左端,即虚拟内存可以直接访问cache;ARM11后(包括ARM11),cache位于MMU的右端,即要访问cache首先要通过mmu将虚拟地址映射成物理地址才能访问cache。

MMU和Cache的控制都是通过协处理器CP15来实现的。

从ARM核的数据手册中可以看到,CP15存在一个control寄存器,该32位寄存器中有3位是用来控制Icache,Dcache和mmu;CP15还存在一个cache operations寄存器也是用于控制cache。所以要关闭mmu和cache,包括两部分:

①通过cache operations寄存器使cache失效

②关闭Dcache,mmu(Icache可以不用关闭)

汇编代码:

disable_mmu_cache:
mcr p15,0,r0,c7,c7,0
mrc p15,0,r0,c1,c0,0
bic r0, r0, #0x00000007
mcr p15,0,r0,c1,c0,0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: