我们已经简单了解了一下查页表的过程,实际上ARM920T支持多种尺寸规格的页表,下图示意了所有可能的情况(本节的图表均摘自[S3C2410用户手册])。
图 1. 查页表的过程
回顾一下查表的过程,首先从CP15的TTB寄存器找到一级页表的基地址,再把VA[31:20]作为索引从表中找出一项,这个表项称为一级页描述符(Level 1 Descriptor),一个这样的表项占4个字节,可以是以下四种格式之一:
图 2. 一级页描述符
如果描述符的最低两位是00,属于Fault格式,表示该范围的VA没有映射到PA。如果描述符的最低两位是10,属于Section格式,这种格式没有二级页表而是直接映射到物理页面,一个Section是1M的大页面,描述符中[31:20]位就是这个页面的基地址,基地址的[19:0]低位全为0,对齐到1M地址边界,描述符中的Domain和AP位控制访问权限,C、B两位控制缓存,后面再详细解释每个位的含义。如果描述符的最低两位是01或11,则分别对应两种不同规格的二级页表。根据地址对齐的规律想一下,这两种页表分别是多大?从一级描述符中取出二级页表的基地址,再把VA的一部分作为索引去查二级描述符(Level
2 Descriptor)(如果是Coarse Page Table则VA[19:12]是索引,如果是Fine Page Table则VA[19:10]是索引),二级描述符可以是以下四种格式之一:
图 3. 二级页描述符
描述符最低两位是00属于Fault格式,其它三种情况分别对应三种不同规格的物理页面。Large Page和Small Page有四组AP权限位,每组两个bit,这样可以为每1/4个物理页面分别设置不同的权限,也就是说,Large Page可以为每16K设置不同的权限,Small Page可以为每1K设置不同的权限。
ARM920T提供了多种页表和页面规格,但操作系统只采用其中一种,一级描述符是Coarse Page Table格式,二级描述符是Small Page格式,每个物理页面4K。我们以此为例,结合前面的的解释和页描述符的格式,再看一下Translation Table Walk的详细过程:
图 4. Translation Table Walk的详细过程
从上到下依次解释如下:
1 VA被划分为三段用于地址映射过程,各段的长度取决于页描述符的格式。
2 TTB寄存器中只有[31:14]位有效,低14位全为0,因此一级页表的基地址对齐到16K地址边界,而一级页表的大小也是16K。
3一级页表的基地址加上VA[31:20]左移两位组装成一个物理地址。想一想为什么VA[31:20]要左移两位占据[13:2]的位置,而空出[1:0]两位呢?
4 用这个组装的物理地址从物理内存中读取一级页描述符,这是一个Coarse Page Table格式的描述符。
5 通过Domain权限检查后,Coarse Page Table的基地址再加上VA[19:12]左移两位组装成一个物理地址。
6 用这个组装的物理地址从物理内存中读取二级页描述符,这是一个Small Page格式的描述符。
7 通过AP权限检查后,Small Page的基地址再加上VA[11:0]就是最终的物理地址。想一想为什么这次不左移两位了呢?
下面解释一下Domain和AP位。CP15的Domain访问控制寄存器表示了16个Domain,每两位表示一个Domain的访问权限,以下是该寄存器的格式:
图 5. Domain Access Control Register
每个Domain的两个位可以取值为00、01、10或11,如果取值为00或10则表示该Domain不可访问,如果取值为01则表示访问该Domain需要进一步检查AP位,如果取值为11则表示可以直接访问该Domain而无需检查AP位。回想一下,一级页描述符中的Domain字段由4个位组成,可以有16个不同的取值,就表示该描述符所描述的二级页表或Section属于这16个Domain中的哪一个。快速上下文切换、Domain和多种规格的页表是ARM特有的机制,是针对嵌入式系统软件的特点而设计的,其它处理器不一定有类似的机制,例如也许没有Domain和快速上下文切换的概念,也许只有一种规格的页表。为了能够在多种不同的平台上移植,Linux内核代码不会利用ARM特有的这些机制。除了这些特例之外,我们在这里介绍的其它机制都具有普遍性,读者应重点把握具有普遍意义的基本原理和基本概念。
CP15的控制寄存器中的S和R位与页描述符的AP位合在一起决定访问权限,如下所示:
图 6. AP权限检查
可见,同样的AP、S、R位对用户模式和特权模式来说具有不同的意义,特权模式的权限都不低于用户模式的权限。最后将各种由内存访问产生的异常总结如下:
Alignment Fault——以Word为单位的数据访问指令地址未对齐到4字节边界,或者以Half Word为单位的数据访问指令地址未对齐到2字节边界。
Translation Fault——页描述符的[1:0]为00,属于Fault格式,无效表项。
Domain Fault——一级页描述符或Section所属Domain的权限位为00或10。
Permission Fault——根据AP位和CP15寄存器1的S、R位检查访问权限,若所属Domain的权限位为11则跳过这一步检查。
External Abort——总线异常,例如此物理地址上没有挂RAM芯片,或者其它硬件故障。
分享到:
相关推荐
华清远见论坛上的关于mmu和cache的详细介绍,感觉确实很好。
ARM920T Technical Reference Manual 了解MMU cache以及ARM9架构的好资料,有些说明很详细。
ARM MMU的C++描述,在C++下面对ARM920t MMU进行了详细的仿真
ARM-MMU 英文说明 详细说明mmu的简介与应用 并且 可以打印 复制
本文详细介绍了ARM920T虚拟地址原理分析及实现,并引出了内存管理单元MMU的概念及其应用。比较适合那些对MMU不太了解的同学进行入门学习
实现了对ARM920T中MMU的启用 地址转换过程 1. 从CP15寄存器C2得到一级页表的基地址 2. 将虚拟地址[31:20]作为页表的索引,得到页表中该虚拟地址的描述符。 3. 判断该描述符是否为段描述符,如为段描述符,将该描述...
Cache是高性能CPU解决总线访问速度瓶颈的方法,然而它的使用却是需要权衡的,因为缓存本身的动作,如块拷贝和替换等,也是很消耗CPU时间的。
详细讲解了ARM920T的MMU与Cache的
GPRS arm920t 2410 mmu初始化
学习 ARM 系列 -- FS2410 开发板上启用 MMU 实现...ARM920T = ARM9 core + MMU + Cache,也就是说 ARM920T 为实现虚拟内存管理提供了硬件条件,这个硬件条件就是 MMU -- 内存管理单元。前面的实验我们程序里的地址都
This user’s manual describes SAMSUNG's S3C... The ARM920T implements MMU, AMBA BUS, and Harvard cache architecture with separate 16KB instruction and 16KB data caches, each with an 8-word line length.
本文采用ARM920T 内核微处理器,工作频率200M,足以满足高速接入网用户要求,它具有先进的MMU 体系结构,支持WinCE、EPOC32、Linux 操作系统。
ARM9采用哈佛体系结构,指令和数据分属不同的总线,可以并行处理。在流水线上,ARM7是三级流水线,ARM9...而ARM公司对这种架构进行了扩展,所以有了ARM710T、ARM720T、ARM920T、ARM922T等带有MMU和cache的处理器内核。
ARM920T核由ARM9TDMI,存储管理单元(MMU)和高速缓存三部分组成。其中MMU可以管理 拟内存,高速缓存由独立的16KB地址和 16KB数据高速Cache组成。 920T有两个协处理器:CP14和CP15。CP14用于调试控制,CP15 用于...
源码包括ARM920t的S3C2440的lib_arm源码包,其中有中断 复位 CACHE等等
18.16/32 位RISC 体系结构,使用ARM920T CPU 核的强大指令集; 19.ARM 带MMU 的先进的体系结构支持WINCE、EPOC32、LINUX; 20.指令缓存(cache)、数据缓存、写缓冲和物理地址TAG RAM,减小了对主存储器带宽 和...
The ARM920T implements MMU, AMBA BUS, and Harvard cache architecture with separate 16KB instruction and 16KB data caches, each with an 8-word line length. By providing a complete set of common system...
The ARM920T implements MMU, AMBA BUS, and Harvard cache architecture with separate 16KB instruction and 16KB data caches, each with an 8-word line length. By providing a complete set of common system...
12.4 The ARM920T and ARM940T 12.5 The ARM946E-S and ARM966E-S 12.6 The ARM1020E 12.7 Discussion 12.8 Example and exercises Embedded ARM Applications…… 318 323 327 335 339 341 344 346 347 13.1 The ...