当前位置:网站首页>MMU 介绍-[TBL/page table work]
MMU 介绍-[TBL/page table work]
2022-08-03 05:23:00 【SEVENTHD7】
MU的作用,主要是完成地址的翻译,无论是main-memory地址(DDR地址),还是IO地址(设备device地址),在开启了MMU的系统中,CPU发起的指令读取、数据读写都是虚拟地址,在ARM Core内部,会先经过MMU将该虚拟地址自动转换成物理地址,然后在将物理地址发送到AXI总线上,完成真正的物理内存、物理设备的读写访问
1、MMU(内存管理单元)原理
MMU的三大作用:
1.虚拟地址映射到物理地址
2.物理地址访问权限管理
3.cache缓存控制(比如:物理页是否允许缓存等)
1.1 TLB
TLB 硬件原理大概如下图
由于TLB本质上是cache,而cache特点就是速度快,存储小、成本高特点,因此TLB不可能太大,TLB优势在于其局部性。所谓局部性就是当一个内存地址被访问之后,那么其周围附近内存地址也很有可能在将来一段时间内会被引用。同时由于物理地址是按照页对齐方式进行管理,同样在一个页内对应的虚拟地址本质上都是转换成相同物理地址,以及分级转换同样减少了映射数组维护大小。
TLBs take advantage of the principle of locality. That is, if a memory address is referenced, it is likely that nearby memory addresses will be referenced in the near future. In the context of paging, the proximity of memory addresses required for locality can be broad—it is equal to the page size. Thus, it is possible for a large number of addresses to be translated by a small number of page translations. This high degree of locality means that almost all translations are performed using the on-chip TLBs.
1.1.1 TLB 的作用
TLB 的作用,简单来说就是页表cache,也称快表.
MMU的工作过程就是就是查询页表的过程。如果把页表放在内存中,CPU读取指令和数据的时候需要访问两次主内存,查询内存中页表得到物理地址(页表level 决定访问次数),访问内存物理地址读取指令数据。有了TLB后,MMU只需命中TLB,得到物理地址,访问一次主内存就可以得到数据。开销小了很多。
TLB 内部存放的基本单位是页表条目(页表项),下图很清楚的表示了TLB的变换原理(假设内存页大小是 4KB,TLB 中有 64 项,采用直接映射方式 )
基本步骤如下:
因为页大小是 4KB,所以虚拟地址的 0-12bit 作为页内地址偏移。TLB 表有 64 项,所以虚拟地址的 13-18bit 作为 TLB 表项的索引。
- 假如虚拟地址的 13-18bit 是 1,那么就会查询 TLB 的第 1 项,从中取出标识,与虚拟地址的 19-31 位作比较,如果相等,表示 TLB 命中,反之,表示 TLB 失靶。
- TLB 失靶时,可以由硬件将需要的页表项加载入 TLB,也可由软件加载,具体取决于处理器设计,OR1200 没有提供硬件加载页表项的功能,只能由软件实现。
- TLB 命中时,此时翻译得到的物理地址就是 TLB 第 1 项中的标识(即物理地址 13-31 位,TLB表项的数据部分)与虚拟地址 0-12bit (页内偏移)的结合。
在地址翻译的过程中还会结合 TLB 项中的辅助信息判断是否发生违反安全策略的情况,比如:要修改某一页,但该页是禁止修改的,此时就违反了安全策略,会触发异常。
1.2 Table Walk Unit
Table Walk Unit的作用:当TLB miss的时候,该部件负责查询页表实现地址转换。
使用table walk unit硬件单元来查找page table的方式被称为hardware TLB miss handling,通常被CISC架构的处理器(比如IA-32)所采用。它要在page table中查找不到,出现page fault的时候才会交由软件(操作系统)处理。
与之相对的通常被RISC架构的处理器(比如Alpha)采用的software TLB miss handling,TLB miss后CPU就不再参与了,由操作系统通过软件的方式来查找page table。使用硬件的方式更快,而使用软件的方式灵活性更强。IA-64提供了一种混合模式,可以兼顾两者的优点。
ARMV8中,发生TLB miss后,hardware page table walk自动启动开始扫描内存中的pagetable,若找到相应PTE(page table entry),则自动完成TLB entry的重填工作;
如果找不到,则发出一个page fault异常,然后OS接管处理page fault。内核中有do_page_fault函数,该函数从硬盘中调换页面进内存,更新页表,然后重新执行引起TLB miss的那条指令,hardware page table walk重新执行,完成TLB重填的工作
2、在不同异常等级中使用MMU
下图是一个linux kernel系统中宏观的虚拟地址到物理地址转换的视图,可以看出在MMU进行地址转换时,会依赖TTBRx_EL1寄存器指向的一个页表基地址.
其中,TTBR1_EL1指向特权模式的页表基地址,用于特权模式下的地址空间转换;TTBR0_EL0指向非特权模式的页表基地址,用于非特权模式下的地址空间转换.
4K页时的虚拟地址
48bit的地址线大小结合4级页表
2.1 TTBR0_ELx
在ARMV8-aarch64架构下,页表基地址寄存器有:
TTBR0_EL1 – banked
TTBR1_EL1 – banked
TTBR1_EL2
TTBR1_EL3
在EL0/EL1的系统中,MMU地址转换时,如果虚拟地址在0x00000000_ffffffff - 0x0000ffff_ffffffff范围,MMU会自动使用TTBR0_EL1指向的页表,进行地址转换;如果虚拟地址在0xffff0000_ffffffff - 0xffffffff_ffffffff范围,MMU会自动使用TTBR1_EL1指向的页表,进行地址转换
在EL2系统中,MMU地址转换时,会自动使用TTBR2_EL1指向的页表
在EL3系统中,MMU地址转换时,会自动使用TTBR3_EL1指向的页表
边栏推荐
- 自监督论文阅读笔记 Self-Supervised Visual Representation Learning with Semantic Grouping
- 寄存器常见指令
- 自监督论文阅读笔记 DetCo: Unsupervised Contrastive Learning for Object Detection
- 深度学习理论课程第八、九、十章总结
- 该描述怎么写成SQL语句
- c#,.net 下载文件 设置断点
- 用iPhone前摄3D人像建模,Meta:我看行
- Leetcode刷题——一些用层次遍历解决的问题(111. 二叉树的最小深度、104. 二叉树的最大深度、226. 翻转二叉树、剑指 Offer 27. 二叉树的镜像)
- [Rebound shell and privilege escalation]
- 中国柔性制造系统(FMS)市场发展动态及未来趋势预测报告2022~2028年
猜你喜欢
【DC-2 Range Penetration】
Qlik Sense 赋值详解(Set、Let)
神经网络基础
代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐
自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn
Apache2-XXE漏洞渗透
Router-view
滚动条 scrollbar 和scrollbar-thumb 样式
EIP-5058 能否防止NFT项目方提桶跑路?
自监督论文阅读笔记 Self-supervised Learning in Remote Sensing: A Review
随机推荐
Apache2-XXE漏洞渗透
【DC-2靶场渗透】
MySQL 下载和安装详解
Sentinel初次使用Demo测试
Mysql 存储过程详解(procedure)
【HQL】(二) 查询使用正则表达式做列选择
【DC-2 Range Penetration】
详解背包问题(DP分支)
HANA 常用数据类型详解
自监督论文阅读笔记Efficient Self-supervised Vision Pretraining with Local Masked Reconstruction
php连接数据库脚本
东南亚跨境电商
new / malloc / delete / free之间的区别
【HQL】(一)json字符串处理json_tuple和get_json_object
中国生活服务O2O行业发展现状与市场规模预测报告2022~2028年
Delightful Nuxt3 Tutorial (1): Application Creation and Configuration
Mysql 预准备语句详解(prepare、execute、deallocate)
【解读合约审计】Harmony的跨链桥是如何被盗一亿美金的?
嵌入式实验三(代码几乎都要改才能运行)
Kettle Spoon 安装配置详解