MMU和Cache

cpu访问这边快而SDRAM应答非常慢,怎么提高程序执行效率。

程序局部性原理:

时间局部性:在同一段时间里,有极大的概率访问同一地址的指令或者数据

空间局部性:有极大概率访问到相邻空间的指令或者数据

答:在2440中有一个指令Cache,和一个DATA指令,会把一小段程序放入指令Cacche中,把变量

放入Data Cache中,这样cpu就不用访问SDRAM,直接访问Cache.,如果Cache中没有,就访问SDRAM中的。
不是使能MMU,data Cache不会启动的

Cache是针对于cpu读的情况,write buffer是针对于cpu写的情况。

0--0 NO Cache NO BUFFER 这些是针对和适用于GPIO寄存器,cpu是直接操作硬件。

1--0 有Cache NO BUFFER

指令:mrc:coprocessor----Register 把协处理器里面的值赋值给cpu里面的寄存器

           MCR:register----coprocessor-- 把cpu里面寄存器的值赋值给协处理器里面的寄存器

 

                                         主cpu的r1写入协处理p15的c1里面

MMU:

 

当APP比较多的时候,不可能重新编译,也不可能预测它所处的地址,所以必须引入虚拟地址,
虽然应用程序APP1~APPn保存在内存地址(物理地址)各不一样,但是cpu运行他们时,他们都位于一样的虚拟地址上。
物理地址和虚拟地址怎么相互转化,所以就引入了MMU
 

VA:虚拟地址   PA:物理地址

VA和PA通过MMU,把cpu发出的虚拟地址通过MMU转化为物理地址。


引入虚拟地址原因。
1.让APP(应用程序)以同样的链接地址来编译

2 原因二:如图:让大容量APP可在资源少的系统上运行,通过映射,当SDRAM已满的时候,然后再通过替换。
.

3.MMU不仅只有地址映射的功能,还有权限管理(禁止APP访问其他空间)的功能。

MMU怎么把VA转为PA:

1级页表:在一级页表中每一个条目对应1M

要把表格的基地址告诉MMU

怎么使用MMU:

 

a.在内存中创建页表(就是上面那个图上的表格)
b.把页表基址告诉MMU
c.设置协处理器p15,启动MMU
 

条目,描述符的格式:

域:arm9有16个域,每个域用2位表示权限。
条目/描述符:AP

     1.设置domain;查看CP15's 的 C3寄存器,确定域权限(domain的作用)

     

2.AP 如果域权限是01,使用AP来决定

如图:

 

如果VA相同(虚拟地址) 每切换一个进程,都要修改一下MMU的页表,改变映射,这样开销特别大,所以引用下面的方法

引入MUA:

\

规则:求MUA

 

 

PA=APP2所在内存

PA=APP1所在内存

现在就只需要根据不同的PID(进程号)建立不同的映射,不会出现切换进程,页表就需要重新建立的情况

虚拟地址范围一般是0~4G,0xffff ffff
条目数=4G/1M=4096个
每个条目数:32位
页表大小:4096*4=16K

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值