MMU段式映射(VA -> PA)过程分析
来源:互联网 发布:软件开发安全职责 编辑:程序博客网 时间:2024/06/05 10:22
MMU:内存管理单元。
CPU寻址的方式:
未使用MMU:CPU发出地址(PA) 直接内存寻址(SDRAM or DDRx)。
使用MMU :CPU发出地址(VA) MMU接收CPU发来的地址 经过某种转换
变成实际的物理地址去寻址。
那么是MMU是如何实现VA到PA的转化的呢?
建立VA与PA的对应关系:
MMU有段描述符(1M)(还有页描述符大页(64KB)小页(4KB)和极小页(1KB))
我们这里说段页表的建立。
比如32位CPU,4G的寻址空间可分为4094个段(4G/1MB)
所以可以建立4096个对应的关系而实际的内存肯定没到4G(VA-PA 可多对一)
所以首先要在内存中指定存放该对应表的其实位置(可通过CP15协处理器指定)
映射表的大概示意图如下
VA(0-4095) PA(高12位)
0 ---- 有效PA高12bit + AP + DOMAIN + cacheable + bufferable + 描述符
1 ---- 有效PA高12bit + AP + DOMAIN + cacheable + bufferable + 描述符
2 ---- 有效PA高12bit + AP + DOMAIN + cacheable + bufferable + 描述符
···
···
4094 ---- 有效PA高12bit + AP + DOMAIN + cacheable + bufferable + 描述符
4095 ---- 有效PA高12bit + AP + DOMAIN + cacheable + bufferable + 描述符
AP:AP权限为所有用户可读写 在多进程时使用 用来保护进程
DOMAIN:配合AP使用 权限管理
cacheable :C位 使能MMU缓存
bufferable :B位 使能MMU缓冲区
描述符:MMU使用段描述符(还有页描述符大页(64KB)小页(4KB)和极小页(1KB))
以下是建立1MB映射的C语言描述:
phyaddr = 0x30000000;
viraddr = 0xa0000000;
*(mmu_ttb_base + (viraddr >> 20)) = ((phyaddr & 0xfff00000) | 低20位的属性描述);
VA到PA转化过程:
CPU发出VA:比如0xa0000123,转化过程如下图:
OK,到此,便得到了实际的物理地址!
- MMU段式映射(VA -> PA)过程分析
- MMU段式映射(VA -> PA)过程分析
- MMU地址映射过程
- VA、MVA、PA
- mmu 二级页映射分析
- u-boot_smdkv210 分析八:MMU地址映射
- u-boot_smdkv210 分析八:MMU地址映射
- linux va 2 pa walk through
- MMU_段式映射
- ElasticSearch(六)-映射和分析过程
- MMU分析
- MMU分析
- MMU分析
- MMU分析
- 分析PA日志程序
- MMU 段映射
- mmu地址映射
- MMU代码分析(作者:wogoyixikexie@gliet)
- POJ-2117 Electricity (割点[Tarjan])
- 高光谱遥感图像处理(10)----ENVI使用教程之密度分割
- git 命令记录
- jQuery 标签切换
- GCC/G++/Clang基本用法
- MMU段式映射(VA -> PA)过程分析
- 第一次作业(数据结构)
- Android导入开源库及jar等文件到基于Android Studio构建的项目中
- Java Thread join() 的用法
- Linux下运行java项目(带jar包)
- 不完全node实践教程-第四发
- jpcap(使用方法)
- qt中的OpenGL代码框架
- android studio导入jar包