2012/02/16

 

虚拟地址到物理地址的转换

在ARM CPU中,最多会用到两级页表:以段(Section, 1MB)的方式进行转换时用到一级页表,以Page的方式进行转换时用到两级页表。也分为大页(64KB)、小页(4KB)和极小页(1KB)。条目也称为“描述符”(Descriptor)。有段描述符、大页描述符、小页描述符和极小页描述符 – 它们保存段、大页、小页、极小页的起始物理地址;粗页表描述符、细页表描述符—它们保存二级页表的物理地址。

(1)      根据给定的虚拟地址找到一级页表中的条目

(2)      如果此条目是段描述符,返回物理地址

(3)      否则此条目是二级页表描述符,继续利用虚拟地址在二级页表中找到下一个条目

(4)      如果第二个条目是页描述符,则返回物理地址,转换结束。

(5)      其他情况出错

7.1.4 TLB

从虚拟地址到物理地址的转换得知:使用一级页表进行地址转换时,每次读写数据需要访问两次内存;使用两级页表时,每次读写需要访问3次内存。高速、容量相对较小的存储起来存储近期用到的页表条目。“转译查找缓存”Translation Lookaside Buffers, TLB。如果TLB中不含有能转换这个VM的描述符,MMU访问页表找到描述符后再进行地址转换和权限检查,并将这个描述符填入TLB中。一般需要:在启动MMU之前Invalidate整个MMU,改变页表时,Invalidate所涉及的虚拟地址对应的TLB中的条目。

 

Cache hit; Cache miss

(1)      开启MMU前,使无效ICaches、DCaches和Write buffer

(2)      关闭MMU前,清空ICaches、DCaches,将脏的数据写到主存上

(3)      如果代码有变,使无效ICaches,这个CPU取指时会重新读取主存

(4)      如果DMA操作可以被Cache的内存时,将内存的数据发送出去时,要清空Cache;将内存的数据读入时,要使无效Cache

(5)      改变页表中地址映射关系时要慎重考虑

(6)      开启ICaches和DCaches,要考虑是否与主存一致

(7)      对于I/O地址空间,不使用Cache和Write buffer。如寄存器,非内存的外设

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值