飞腾CPU体系结构(十四)

飞腾CPU体系结构(十四)

1. MMU原理

MMU的大致工作原理是:

64位虚拟地址首先分成虚拟页帧号和页内偏移量两部分,虚拟页帧号即页表项索引;根据页表项索引,在进程的页表里查找到对应页表项,然后将页表项的物理页帧号和页内偏移量组合成物理地址,最后根据映射属性进行访存操作。

2. TLB

因为页表是软件预先设定在系统主存中的,如果每次地址翻译都要去访存才能获取页表项,这一定会严重降低系统性能。因此,MMU提供了页表项的高速缓存TLB。

  1. 可以简单地将TLB理解为页表项在高速缓存中的副本。
  2. 当TLB失效时,MMU到内存页表中获取相应的页表项内容,并将其装载到TLB中;
  3. 如果内存页表中的页表项是无效的(一般情况是无有效的物理页帧号),飞腾CPU就会触发页故障异常。
  4. 页故障异常处理软件就会分配物理页帧,并将内存页表中的页表项完善,处理完成页故障异常后会重新执行寻址指令。

MMU和TLB

3. 飞腾的TLB实现

飞腾CPU不提供对TLB写的操作指令,只提供TLB失效指令。

  1. TLB的写更新完全是硬件设计来实现,当MMU访问TLB没有命中时,MMU就会在内存中的进程页表中查找相应的页表项,并将页表项内容更新到TLB中。
  2. 飞腾CPU提供一条TLB失效指令TLBI,并提供多种操作选项,可以实现所有TLB失效,以及某个地址范围的TLB失效等操作。

4. 映射属性

MMU将虚拟地址翻译成物理地址后,会根据映射属性进行访存操作。映射属性包括访问控制和内存类型等属性。内存类型属性可以参考第五节高速缓存中的内存属性内容;因此,我们这里仅仅介绍EL0和EL1权限级相关的访问控制属性。

  1. 访问控制属性主要描述了相应的虚拟页帧是否允许读、写和执行等操作。
  1. “是否允许读/写”主要体现为针对Load/Store指令的数据访问控制上。
AP[2:1]EL1权限级EL0权限级
00读写不可访问
01读写读写
10只读不可访问
11只读只读
  1. “是否允许执行”主要体现为对指令的获取控制上。
UXNPXNEL1权限级EL0权限级
00可取指可取指
01可取指不可取指
10不可取指可取指
11不可取指不可取指
  1. 飞腾CPU采用多级页表结构,
  1. 上一级页表的页表项包括了下一级页表的物理地址和映射属性。
  2. 上级页表项的映射属性会对下级页表项的映射属性进行约束。
APTable[2:1]对下一级页表访问控制属性的约束
00不限制
01EL0权限级不可访问
10所有权限级不可写
11所有权限级不可写,且EL0权限级不可读
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值