ARM存储管理(一)

转换过程:

一:概念

       1:几个模型:

l  段(section):对应1MB大小(20位)

l  微页(Tiny Page:对应1KB大小(10位)

l  小页(Small Page:对应4KB大小(12位)

l  大页(Large Page:对应64KB大小(16位)

       2:地址转换表的两级模型:

l  一级表:包括段表或指向二级表

l  二级表:包括各种页表

翻译过程总是从取一级表开始,与段式相比,页的翻译还需要取二级表

二:过程

       1:翻译表基址

当片上的TLBtranslation table buffer)里没有所需的虚拟地址对应的项时,启动翻译过程。此时要用到翻译表基址寄存器(TLTR---CP15REG2TLBR只有[31:14]位是有意义的,其余位应该为零,所以一级表必须16KB对齐。

         2:取一级表

TLBR[31:14],加上虚拟地址VA[31:20]位,再加两个0位一起组成了一个32位的物理地址,该地址选中一个4字节的翻译表项(TLTE),称为一级描述符

 

        

 3:一级描述符

每个TLTE都是一个描述符,说明了其所关联的1MB虚拟地址是如何映射的(它管的是VA[19:0]位到物理地址的映射关系)。最低两位的组合标志着四种可能:

l  [1:0]=0b00:虚拟地址不进行映射,此时访问该TLTE会引发翻译异常,软件可以将位            [31:2]用于其他目的。

l  [1:0]=0b10:该TLTE表示一个段描述符。

l  [0]=1:该TLTE表示一个二级表指针,给出一个二级粗页表或二级细页表的物理地址(bit[1]==0对应corse table—CTbit[1]==1对应fine table--FT)。每种表说明了其所关联的1MB虚拟地址是如何映射的。一个二级粗表为1KB,可映射大、小页。一个二级细表为4KB,可映射大、小、微页。

 

           3.1:段描述符

 3.2:粗页表描述符

l  [1:0]  粗页表指针标志(0b01

l  [4:2]  这几位是Implementation Defined

l  [8:5]   domain filed,指明该描述符控制16个域中的一个。

l  [9]      未定义,为0

l  [31:10]二级粗表的指针,也是二级fetch操作的地址,显然二级粗表必须1KB对齐。

如果一级fetch得到的是一个粗表描述符,则会进行二级fetch,并得到一个二级描述符。

 

         3.3:细表描述符

l  [1:0]  细页表指针标志(0b11

l  [4:2]  这几位是Implementation Defined

l  [8:5]   domain filed,指明该描述符控制16个域中的一个。

l  [11:9]          未定义,为0

l  [31:12]二级细表的指针,也是二级fetch操作的地址,显然二级粗表必须4KB对齐。

如果一级fetch得到的是一个细表描述符,则会进行二级fetch,并得到一个二级描述符。

 

       4:二级描述符

每个二级粗表项对应4KB虚拟地址的映射,而二级细表项对应1KB虚拟地址映射。每一项都是一个页描述符,分别可以描述一块大于4KB1KB大小的页,此时同一个描述符会被多次使用,以确保不同虚拟地址都访问相同的物理页。根据二级描述符的最低两位:

l  [1:0]=0b00 此时所关联的虚拟地址不映射

l  [1:0]=0b01 此时该项位大页描述符,表述64KB的虚拟地址。在一个二级细表中,大页描述符必须重复64次,而在二级粗表中,大页描述符要重复16次,以此确保其所关联的所有虚拟地址都被描述。

l  [1:0]=0b10

l  [1:0]=0b11

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值