`
he91_com
  • 浏览: 376747 次
文章分类
社区版块
存档分类
最新评论

ARM920T的MMU

 
阅读更多

我们已经简单了解了一下查页表的过程,实际上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芯片,或者其它硬件故障。

分享到:
评论

相关推荐

    arm920t mmu和cache介绍

    华清远见论坛上的关于mmu和cache的详细介绍,感觉确实很好。

    ARM920T Technical Reference Manual

    ARM920T Technical Reference Manual 了解MMU cache以及ARM9架构的好资料,有些说明很详细。

    ARM MMU的C++描述

    ARM MMU的C++描述,在C++下面对ARM920t MMU进行了详细的仿真

    ARM920T-MMU

    ARM-MMU 英文说明 详细说明mmu的简介与应用 并且 可以打印 复制

    ARM920T虚拟地址原理分析及实现

    本文详细介绍了ARM920T虚拟地址原理分析及实现,并引出了内存管理单元MMU的概念及其应用。比较适合那些对MMU不太了解的同学进行入门学习

    ARM启用MMU分析及源程序代码

    实现了对ARM920T中MMU的启用 地址转换过程 1. 从CP15寄存器C2得到一级页表的基地址 2. 将虚拟地址[31:20]作为页表的索引,得到页表中该虚拟地址的描述符。 3. 判断该描述符是否为段描述符,如为段描述符,将该描述...

    ARM920T的MMU与Cache

    Cache是高性能CPU解决总线访问速度瓶颈的方法,然而它的使用却是需要权衡的,因为缓存本身的动作,如块拷贝和替换等,也是很消耗CPU时间的。

    MMU与CACHE详解.pdf

    详细讲解了ARM920T的MMU与Cache的

    mmu.rar_2410 mmu_linux mmu初始化_mmu

    GPRS arm920t 2410 mmu初始化

    学习 ARM 系列 -- FS2410 开发板上启用 MMU 实现虚拟内存管理

    学习 ARM 系列 -- FS2410 开发板上启用 MMU 实现...ARM920T = ARM9 core + MMU + Cache,也就是说 ARM920T 为实现虚拟内存管理提供了硬件条件,这个硬件条件就是 MMU -- 内存管理单元。前面的实验我们程序里的地址都

    三星S3C2440芯片手册

    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和Linux的SOHO路由器设计

    本文采用ARM920T 内核微处理器,工作频率200M,足以满足高速接入网用户要求,它具有先进的MMU 体系结构,支持WinCE、EPOC32、Linux 操作系统。

    arm9_compatiable_code_high.v

    ARM9采用哈佛体系结构,指令和数据分属不同的总线,可以并行处理。在流水线上,ARM7是三级流水线,ARM9...而ARM公司对这种架构进行了扩展,所以有了ARM710T、ARM720T、ARM920T、ARM922T等带有MMU和cache的处理器内核。

    FS2410使用手册v2006

    ARM920T核由ARM9TDMI,存储管理单元(MMU)和高速缓存三部分组成。其中MMU可以管理 拟内存,高速缓存由独立的16KB地址和 16KB数据高速Cache组成。 920T有两个协处理器:CP14和CP15。CP14用于调试控制,CP15 用于...

    lib_arm.rar_S3C2440 Cac_arm cache_s3c2440_s3c2440 mmu

    源码包括ARM920t的S3C2440的lib_arm源码包,其中有中断 复位 CACHE等等

    2410-S实验指导书@2006.11.pdf

    18.16/32 位RISC 体系结构,使用ARM920T CPU 核的强大指令集; 19.ARM 带MMU 的先进的体系结构支持WINCE、EPOC32、LINUX; 20.指令缓存(cache)、数据缓存、写缓冲和物理地址TAG RAM,减小了对主存储器带宽 和...

    SCS2440 用户手册

    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...

    s3c2440英文手册

    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...

    ARM system-on-chip architecture

    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 ...

Global site tag (gtag.js) - Google Analytics