飞腾CPU体系结构(十四)

1. MMU原理

MMU的大致工作原理是:

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

2. TLB

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

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

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. “是否允许执行”主要体现为对指令的获取控制上。
UXN PXN EL1权限级 EL0权限级
0 0 可取指 可取指
0 1 可取指 不可取指
1 0 不可取指 可取指
1 1 不可取指 不可取指
  1. 飞腾CPU采用多级页表结构,
  1. 上一级页表的页表项包括了下一级页表的物理地址和映射属性。
  2. 上级页表项的映射属性会对下级页表项的映射属性进行约束。
APTable[2:1] 对下一级页表访问控制属性的约束
00 不限制
01 EL0权限级不可访问
10 所有权限级不可写
11 所有权限级不可写,且EL0权限级不可读

飞腾CPU体系结构(十四)相关推荐

  1. 飞腾CPU体系结构(四)

    第四节 处理器状态 1. 处理器状态 处理器状态主要包括条件标志,异常屏蔽标志.执行状态和权限级等信息.飞腾CPU的当前处理器状态不是单一系统寄存器来描述的,是由若干系统寄存器一起来描述的. 在AAr ...

  2. 飞腾CPU体系结构(十)

    飞腾CPU体系结构(十) 1.高速缓存模型 为了优化整体性能,飞腾CPU芯片内部提供L1高速缓存和L2高速缓存,有些飞腾CPU也提供芯片内部的L3高速缓存,本节不对这个情况进行赘述. 靠近流水线的高速 ...

  3. 飞腾CPU体系结构(十二)

    飞腾CPU体系结构(十二) 1. CPU物理地址空间 飞腾CPU支持的物理地址宽度为44位,物理地址空间实际上只有16TB.系统主存(芯片外部内存)和IO外设(例如SoC设备.PCIe设备)都在这个物 ...

  4. 飞腾CPU体系结构简单介绍(一)

    第一章 飞腾CPU体系结构简介 ARM体系结构是一种精简指令集体系结构RISC,具有以下基本特点:通用寄存器数量较多:采用统一寻址模式,系统主存和外设分布在CPU物理地址空间的不同范围:采用load/ ...

  5. 飞腾CPU体系结构(五)

    飞腾CPU体系结构(五)-- 通用寄存器 1. 64位通用寄存器 在AArch64执行状态下,飞腾CPU提供31个64位通用寄存器Xn(n=0/1/-/30),其中X30用作跳转链接寄存器. 某些指令 ...

  6. 飞腾CPU体系结构(九)

    飞腾CPU体系结构(九) 向量访存指令主要包括LD1/ST1. LD2/ST2.LD3/ST3和LD4/ST4四种. LD1/ST1一般针对一个向量寄存器,也有两个.三个或四个向量寄存器的模式. LD ...

  7. 飞腾CPU体系结构(十一)

    飞腾CPU体系结构(十一) 1. 预取机制 飞腾CPU为了提升性能,支持从外部内存中预取数据到L1或L2缓存中.如果某个缓存块内容不在L1/L2缓存中,当该缓存块的某个地址单元被第一访问时,就会遇到内 ...

  8. 飞腾CPU体系结构(八)

    飞腾CPU体系结构(八)--标量访存指令 在阅读之前,请先查看<飞腾CPU体系结构(五)>的SIMD和浮点寄存器.飞腾CPU还提供了32个128 位SIMD和浮点寄存器,这32个128位寄 ...

  9. 飞腾CPU体系结构之虚拟地址

    飞腾CPU体系结构之虚拟地址 1. 基本概念 虚拟地址:程序运行时指令和数据对应的地址. 虚拟地址空间:一个进程运行时指令和数据能访问到的虚拟地址范围. 注意事项: 每个进程拥有自己的虚拟地址空间,进 ...

最新文章

  1. 青少年编程竞赛交流群周报(第039周)
  2. 图论 ---- E. Bear and Forgotten Tree 2(判补图的联通性技巧 图遍历的优化 条件拆分)
  3. 流水账之都市:我是一个客居者
  4. 图像傅里叶变换,幅度谱,相位谱
  5. jqPlot图表插件使用说明(一)
  6. Python学习笔记:常用内建模块1
  7. 【Tiny4412】最小网络文件系统制作
  8. Iometer 性能测试:理论/应用性能测试
  9. 无法定位程序输入点dxgiget_美国ABB TZIDC 智能定位器调试方法
  10. Mybatis主要内容
  11. 利python写用赌博游戏函数版赏析:
  12. 七年也扶不起的苹果 Siri
  13. 国密SM4对称算法实现说明(原SMS4无线局域网算法标准)
  14. PhysioBank 存档数据目录
  15. 【学术】自然语言处理国内外著名会议、期刊
  16. 基于 arm 设计开发工具包的 Arm Cortex-M3 处理器设计(第二章:示例微处理器组成及各个Verilog文件功能及作用)
  17. 安徽师范大学计算机学院在哪个校区,2021年安徽师范大学有几个校区,大一新生在哪个校区...
  18. 圆柱体的投影特点_圆柱体三面投影作图方法分析
  19. 小编教你如何打印出一张好看的思维导图
  20. 混战多年,K12在线教育的故事讲到哪了?

热门文章

  1. list-style和list-style-type的区别
  2. firebug php,FirePHP ― php版的firebug_php
  3. 安装AdventureWorks2008后没有AdventureWorks2008数据库的解决办法
  4. KVM最初的2小时——KVM从入门到放弃
  5. 【iPhone广告】历代iPhone广告语
  6. 关于Android Service真正的完全详解,你需要知道的一切
  7. 《惢客创业日记》2021.02.15-16(周一)什么是理想主义者?
  8. 支持向量机与SMO优化算法
  9. 关于shopee的文化冲突
  10. 计算机视觉与互动投影