1.计算机存储体系
越往上,越快越贵容量越小
越往下容量越大越慢
2.cache有无对比
没有cache的时候,cpu直接和主存储器进行数据传输,很慢。
有了cache以后,现在cache查找有无cpu需要的数据,有的话直接使用,没有再到主存储器去寻找,找到以后,把数据存到cache里面,以便下次再用到该数据会快很多,cache是比主存储器快很多但是容量小,分为指令cache和数据cache的。
3.虚拟地址:程序中使用的地址
物理地址:实实在在的物理存储设备在系统中的地址。
最终我们应用程序是要访问物理地址,但是鉴于物理地址小,且有可能多个应用程序会同时访问同一个物理地址引起冲突,所以引入虚拟地址,通过映射以后对存储机制进行扩充范围和避免冲突。而重点是如何实现映射机制。
4.MMU作用:把虚拟地址转换成物理地址
(1)上面的图是ARM11之前的结构,要访问cache直接就可以。
(2)下面的图则是ARM11之后包括arm11,要访问cache就要先将地址进行映射,才能到物理地址访问cache。
(3)MMU和cache都是由协处理器cp15控制的
5.代码:
(1)使得I/D cache已有的数据失效
(2)直接关闭cache和MMU
(3)具体实现
主要是MMU和Dcache,至于Icache很宽松。主要是怕在下载和启动内核的过程中,使用到的数据存在Dcache而不放到内存。
@关闭MMU和Cache
disable_mmu:
mcr p15,0,r0,c7,c7,0
mrc p15,0,r0,c1,c0,0
bic r0,r0,#0x07
mcr p15,0,r0,c1,c0,0
mov pc, lr
各种平台的CP15的操作是一样的。
(4)思考:
使得之前的数据失效的Rd参数和关闭MMU的Rd是不是要一样???