ARM920T虚拟地址原理分析及实现
这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码
第五章 虚拟内存及缓冲区管理
在刚开始接触TQ2440并测试TEST程序时,当时就产生了一个疑惑,把程序下载到NAND和SDRAM中,其中断均能正确执行,当时以为,程序有可能采用了动态添加中断向量技术,即在SDRAM中运行时在向量0x18处添加跳转指令的二进制编码。虽然能够实现,但在实际编程时会非常麻烦。
ARM采用了虚拟内存映射技术即MMU,负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查,通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统的差别,从而提高系统的整体性能。
在系统加电时,将ROM/FLASH映射为地址0,进行一些初始化工作并将程序加载到SDRAM中去,然后启用MMU,将虚拟地址0映射到SDRAM地址(0x30000000),这样当中断产生时读取0x18处的指令时实际读取的是0x30000018处的指令,这样中断就就可以正确执行。
S3c2440内存管理单元有如下特征:
4种映射长度,段1M、大页64k、小页4k,极小页1k
指令TLB(含64个条目)、数据TLB(含64个条目)
硬件访问页表地址映射、权限检查由硬件自动完成
第一节CP15寄存器的功能及读写
ARM的虚拟地址管理主要通过CP15相关寄存器来实现的,CP15包括了16个32位寄存器,编号为0~15,实际上对于某些编号的寄存器可能对应有多个物理寄存器,在指令编码时指定标志位来区分。
CP15寄存器功能
编号 MMU功能
C0 ID编码(只读)
C1 开启/禁止MMU/CACHE/WRITE等功能
C2 地址转换表基地址
C3 域访问控制
C4 保留
C5 内存失效状态
C6 内存失效状态
C7 CACHE及WRITE控制
C8 TLB控制
C9 CACHE锁定
C10 TLB锁定
C11 保留
C12 保留
C13 进程PID
C14 保留
C15
CP15寄存器的读写
MCR ARM寄存器到协处理器寄存器数据传送
MRC 协处理器寄存器到ARM寄存器数据传送
这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码
格式:
MCR/MRC P15,0,<RD>,<CRN>,<CRM>,{,<OPCODE_2>}
其中RD为ARM寄存器
CRN为协处理器寄存器
CRM附加的目标寄存器或源操作数寄存器,用于区分一个编号的不同物理寄存器,当指令不需要提供附加信息时,将CRMC0指定为,OPCODE_2指定为0
MCR P15,0,R4,C1,C0,0 R4->C1
MRC P15,0,R4,C1,C0,0 R4<-C1
C1寄存器位相关功能
M[0]:0禁止|1启用MMU
A[1]:0禁止地址对齐检查|1使能地址对齐检查
C[2]:0禁止数据CACHE|1使能数据CACHE
W[3]:0禁止写缓冲|1使能写缓冲
I[12]:0禁止代码CACHE|1使能代码CACHE
第二节 地址转换过程
MMU地址转换过程及描述符定义
虚拟地址空间到物理地址空间映射是以内存块为单位进行的,即虚拟存储空间中一块连续的存储空间被映射成物理存储空间中同样大小的一块连续存储空间,每一个描述符实际记录了一个虚拟地址与物理地址之间的对应关系,ARM支持多种地址变换。
通常,以段为单位的地址变换过程只需要一级页表,而以页为单位的地址变换过程还需要二级页表。
地址转换过程
1. 从CP15寄存器C2得到一级页表的基地址
2. 将虚拟地址[31:20]作为页表的索引,得到页表中该虚拟地址的描述符。
3. 判断该描述符是否为段描述符,如为段描述符,将该描述符[31:20]和虚拟地址[19:
0]作为偏移量组成一个32位的物理地址进行访问。
这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码
4. 如为粗页表描述符,则将该粗页表描述符[31:10]作为二级页表的基地址,并将虚
拟地址[19:12]位作为索引得到在二级页表中该虚拟地址的描述符。
判断二级页表符的类型
① 为极大页描述符表将该描述符[31:16]作为基地和虚拟地址[15:0]作为偏移
量得到该虚拟地址的32位物理地址进行访问。
② 为小页描述符表将描述符[31:12]作为基地和虚拟地址[11:0]作为偏移量得
到该虚拟地址的32位物理地址进行访问。
5. 如为细页表描述符,将该组页表描述符[31:12]作为二级页表的基地址,并将虚拟
地址[19:10]位作为索引得到在二级页表中该虚拟地址的描述符。
判断二级页表符的类型
① 为大页描述符表将该描述符[31:16]作为基地和虚拟地址[15:0]作为偏移量
得到该虚拟地址的32位物理地址进行访问。
②为小页描述符表将该描述符[31:12]作为基地和虚拟地址[11:0]作为偏移量得
到该虚拟地址的32位物理地址进行访问。
③为小极页描述符表将描述符[31:10]作为基地和虚拟地址[9:0]作为偏移量得到
该虚拟地址的32位物理地址进行访问。
其转换过程如下图如示:
当采用段描述符时,虚地址[19:0]共20位作为偏移量可寻址空间为1M
当采用二级描述符时:
第一级为粗页时,虚地址[19:12]共8位作为第二级的索引量,可寻址256个第二级页表。
这是我学习ARM过程中,对其虚拟地址映射原理的分析及实现代码
1.当第二级为小页描述符时,虚地址[11:0]作为偏移量,可寻址空间2^12=4k,一个粗页表总可寻址4k*256=1M。
2.当第二级为大页描述符时,虚地址[15:0]作为偏移量,可寻址空间2^16=64k 但
是,虚地址[19:15:12]是作为第二级大页描述符的索引,虚地址[15:0]作为偏
移量,也就是说虚地址[15:12]被重复使用。我们考虑一下从0x0~0xffff(64K)
空间地址的转换问题,显然虚地址[15:12]将从0~f,也就是说二级页表开始的16
个描述符都将被访问,如果每个描述符定义的页物理基地址不一致,如第二级第
一个页表定义物理基地址为0x300000000;第2个页表为0x30001000,第16个页
表定义的物理基地址为0x300f000时,0~ffff(64K)空间将被映射到0~fffff(1M)
地址空间,显然这是不正确的。为了得到正确的结果,我们可以将这粗页表中16
个连续的大页描述符定义为同一大页描述符,其物理基地址一致。
结论:当采用二级页表时,索引第二级页表虚地址和作为偏移量的虚地址有重复时,
其重复为n位,则第二级页表中连续的2^n个页表描述符必须定义为一致。如上
所示[15:12]位重复,n=4,则连续16个描述符必须相同。
第一级为细页表时,其情况类似,不再分析。
地址映射具体实例:
我们将以下图所示的过程对虚拟地址0x00000018和0x30605600的转换过程进行详细的说明:
TLB寄存器值0x33ffc000是整个页表的基地址
0x00000018地址转换:将虚地址[31:20]位0x0作为索引*4(每个描述符占4个字节)再与页表基地址相加得0x33ffc000,即页表中第一个描述符,因为该描述符为段描述符,将其[31:20]位0x300左移20位充0为0x30000000作为该段物理基地址,并将虚地址[19:0]位0x18作为偏移地址与该段物理基地相加得0x30000018。该地址就为虚地址0x18对应的物理地址。
0x30605600地址转换:将虚地址[31:20]位0x306作为索引*4(每个描述符占4个字节)再与页表基地址相加得0x33ffcc18,即页表中第775 …… 此处隐藏:9405字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [外语考试]管理学 第13章 沟通
- [外语考试]07、中高端客户销售流程--分类、筛选讲
- [外语考试]2015-2020年中国高筋饺子粉市场发展现
- [外语考试]“十三五”重点项目-汽车燃油表生产建
- [外语考试]雅培奶粉培乐系列适用年龄及特点
- [外语考试]九三学社入社申请人调查问卷
- [外语考试]等级薪酬体系职等职级表
- [外语考试]货物买卖合同纠纷起诉状(范本一)
- [外语考试]青海省实施消防法办法
- [外语考试]公交车语音自动报站系统的设计第3稿11
- [外语考试]logistic回归模型在ROC分析中的应用
- [外语考试]2017-2021年中国隔膜泵行业发展研究与
- [外语考试]神经内科下半年专科考试及答案
- [外语考试]园林景观设计规范标准
- [外语考试]2018八年级语文下册第一单元4合欢树习
- [外语考试]分布式发电及微网运行控制技术应用
- [外语考试]三人行历史学笔记:中世纪人文主义思想
- [外语考试]2010届高考复习5年高考3年联考精品历史
- [外语考试]挖掘机驾驶员安全生产责任书
- [外语考试]某211高校MBA硕士毕业论文开题报告(范
- 用三层交换机实现大中型企业VLAN方案
- 斯格配套系种猪饲养管理
- 涂层测厚仪厂家直销
- 研究生学校排行榜
- 鄱阳湖湿地景观格局变化及其驱动力分析
- 医学基础知识试题库
- 2010山西省高考历年语文试卷精选考试技
- 脉冲宽度法测量电容
- 谈高职院校ESP教师的角色调整问题
- 低压配电网电力线载波通信相关技术研究
- 余额宝和城市商业银行的转型研究
- 篮球行进间运球教案
- 气候突变的定义和检测方法
- 财经大学基坑开挖应急预案
- 高大支模架培训演示
- 一种改进的稳健自适应波束形成算法
- 2-3-鼎视通核心人员薪酬股权激励管理手
- 我国电阻焊设备和工艺的应用现状与发展
- MTK手机基本功能覆盖测试案例
- 七年级地理教学课件上册第四章第一节




