飞腾CPU体系结构(十四)
飞腾CPU体系结构(十四)
1. MMU原理
MMU的大致工作原理是:
64位虚拟地址首先分成虚拟页帧号和页内偏移量两部分,虚拟页帧号即页表项索引;根据页表项索引,在进程的页表里查找到对应页表项,然后将页表项的物理页帧号和页内偏移量组合成物理地址,最后根据映射属性进行访存操作。
2. TLB
因为页表是软件预先设定在系统主存中的,如果每次地址翻译都要去访存才能获取页表项,这一定会严重降低系统性能。因此,MMU提供了页表项的高速缓存TLB。
- 可以简单地将TLB理解为页表项在高速缓存中的副本。
- 当TLB失效时,MMU到内存页表中获取相应的页表项内容,并将其装载到TLB中;
- 如果内存页表中的页表项是无效的(一般情况是无有效的物理页帧号),飞腾CPU就会触发页故障异常。
- 页故障异常处理软件就会分配物理页帧,并将内存页表中的页表项完善,处理完成页故障异常后会重新执行寻址指令。
3. 飞腾的TLB实现
飞腾CPU不提供对TLB写的操作指令,只提供TLB失效指令。
- TLB的写更新完全是硬件设计来实现,当MMU访问TLB没有命中时,MMU就会在内存中的进程页表中查找相应的页表项,并将页表项内容更新到TLB中。
- 飞腾CPU提供一条TLB失效指令TLBI,并提供多种操作选项,可以实现所有TLB失效,以及某个地址范围的TLB失效等操作。
4. 映射属性
MMU将虚拟地址翻译成物理地址后,会根据映射属性进行访存操作。映射属性包括访问控制和内存类型等属性。内存类型属性可以参考第五节高速缓存中的内存属性内容;因此,我们这里仅仅介绍EL0和EL1权限级相关的访问控制属性。
- 访问控制属性主要描述了相应的虚拟页帧是否允许读、写和执行等操作。
- “是否允许读/写”主要体现为针对Load/Store指令的数据访问控制上。
AP[2:1] | EL1权限级 | EL0权限级 |
---|---|---|
00 | 读写 | 不可访问 |
01 | 读写 | 读写 |
10 | 只读 | 不可访问 |
11 | 只读 | 只读 |
- “是否允许执行”主要体现为对指令的获取控制上。
UXN | PXN | EL1权限级 | EL0权限级 |
---|---|---|---|
0 | 0 | 可取指 | 可取指 |
0 | 1 | 可取指 | 不可取指 |
1 | 0 | 不可取指 | 可取指 |
1 | 1 | 不可取指 | 不可取指 |
- 飞腾CPU采用多级页表结构,
- 上一级页表的页表项包括了下一级页表的物理地址和映射属性。
- 上级页表项的映射属性会对下级页表项的映射属性进行约束。
APTable[2:1] | 对下一级页表访问控制属性的约束 |
---|---|
00 | 不限制 |
01 | EL0权限级不可访问 |
10 | 所有权限级不可写 |
11 | 所有权限级不可写,且EL0权限级不可读 |
飞腾CPU体系结构(十四)相关推荐
- 飞腾CPU体系结构(四)
第四节 处理器状态 1. 处理器状态 处理器状态主要包括条件标志,异常屏蔽标志.执行状态和权限级等信息.飞腾CPU的当前处理器状态不是单一系统寄存器来描述的,是由若干系统寄存器一起来描述的. 在AAr ...
- 飞腾CPU体系结构(十)
飞腾CPU体系结构(十) 1.高速缓存模型 为了优化整体性能,飞腾CPU芯片内部提供L1高速缓存和L2高速缓存,有些飞腾CPU也提供芯片内部的L3高速缓存,本节不对这个情况进行赘述. 靠近流水线的高速 ...
- 飞腾CPU体系结构(十二)
飞腾CPU体系结构(十二) 1. CPU物理地址空间 飞腾CPU支持的物理地址宽度为44位,物理地址空间实际上只有16TB.系统主存(芯片外部内存)和IO外设(例如SoC设备.PCIe设备)都在这个物 ...
- 飞腾CPU体系结构简单介绍(一)
第一章 飞腾CPU体系结构简介 ARM体系结构是一种精简指令集体系结构RISC,具有以下基本特点:通用寄存器数量较多:采用统一寻址模式,系统主存和外设分布在CPU物理地址空间的不同范围:采用load/ ...
- 飞腾CPU体系结构(五)
飞腾CPU体系结构(五)-- 通用寄存器 1. 64位通用寄存器 在AArch64执行状态下,飞腾CPU提供31个64位通用寄存器Xn(n=0/1/-/30),其中X30用作跳转链接寄存器. 某些指令 ...
- 飞腾CPU体系结构(九)
飞腾CPU体系结构(九) 向量访存指令主要包括LD1/ST1. LD2/ST2.LD3/ST3和LD4/ST4四种. LD1/ST1一般针对一个向量寄存器,也有两个.三个或四个向量寄存器的模式. LD ...
- 飞腾CPU体系结构(十一)
飞腾CPU体系结构(十一) 1. 预取机制 飞腾CPU为了提升性能,支持从外部内存中预取数据到L1或L2缓存中.如果某个缓存块内容不在L1/L2缓存中,当该缓存块的某个地址单元被第一访问时,就会遇到内 ...
- 飞腾CPU体系结构(八)
飞腾CPU体系结构(八)--标量访存指令 在阅读之前,请先查看<飞腾CPU体系结构(五)>的SIMD和浮点寄存器.飞腾CPU还提供了32个128 位SIMD和浮点寄存器,这32个128位寄 ...
- 飞腾CPU体系结构之虚拟地址
飞腾CPU体系结构之虚拟地址 1. 基本概念 虚拟地址:程序运行时指令和数据对应的地址. 虚拟地址空间:一个进程运行时指令和数据能访问到的虚拟地址范围. 注意事项: 每个进程拥有自己的虚拟地址空间,进 ...
最新文章
- 青少年编程竞赛交流群周报(第039周)
- 图论 ---- E. Bear and Forgotten Tree 2(判补图的联通性技巧 图遍历的优化 条件拆分)
- 流水账之都市:我是一个客居者
- 图像傅里叶变换,幅度谱,相位谱
- jqPlot图表插件使用说明(一)
- Python学习笔记:常用内建模块1
- 【Tiny4412】最小网络文件系统制作
- Iometer 性能测试:理论/应用性能测试
- 无法定位程序输入点dxgiget_美国ABB TZIDC 智能定位器调试方法
- Mybatis主要内容
- 利python写用赌博游戏函数版赏析:
- 七年也扶不起的苹果 Siri
- 国密SM4对称算法实现说明(原SMS4无线局域网算法标准)
- PhysioBank 存档数据目录
- 【学术】自然语言处理国内外著名会议、期刊
- 基于 arm 设计开发工具包的 Arm Cortex-M3 处理器设计(第二章:示例微处理器组成及各个Verilog文件功能及作用)
- 安徽师范大学计算机学院在哪个校区,2021年安徽师范大学有几个校区,大一新生在哪个校区...
- 圆柱体的投影特点_圆柱体三面投影作图方法分析
- 小编教你如何打印出一张好看的思维导图
- 混战多年,K12在线教育的故事讲到哪了?
热门文章
- list-style和list-style-type的区别
- firebug php,FirePHP ― php版的firebug_php
- 安装AdventureWorks2008后没有AdventureWorks2008数据库的解决办法
- KVM最初的2小时——KVM从入门到放弃
- 【iPhone广告】历代iPhone广告语
- 关于Android Service真正的完全详解,你需要知道的一切
- 《惢客创业日记》2021.02.15-16(周一)什么是理想主义者?
- 支持向量机与SMO优化算法
- 关于shopee的文化冲突
- 计算机视觉与互动投影