新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM存储器之:存储管理单元MMU

ARM存储器之:存储管理单元MMU

作者: 时间:2013-09-30 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/257009.htm

注意

v6体系结构不包含微页,如果打算创建一个很容易移植到以后体系结构的系统,则建议在该系统中避免使用1KB微页。

15.5.6域(domain)和存储器访问权限

域指的是一些段、大页或者小页的集合。编程的中,设计者最多可以使用16个域,每个域的访问控制特征由CP15中的c3中的两位控制。

CP15中的寄存器c3的格式如图15.34。

图15.34CP15寄存器c3编码格式

其中,每两个位控制一个域的访问控制特性,其编码及对应的含义如表15.29所示。

表15.29 域访问控制字段编码及含义

控制位编码

访问类型

含义

0b00

无访问权限

这时访问该域将产生访问失效

0b01

客户类型(client)

根据页表中地址变换页表项的域访问权限控制位决定是否允许特定的存储访问

0b10

保留

使用该值会产生不可预知的结果

0b11

管理者权限(Manager)

不考虑页表中页表项内的访问控制权限位,所以这种情况下不产生访问失效

综上所述,有两种不同的控制来管理一个任务的存储器访问权限。

·管理者(manager)用于主控(primarycontrol),不考虑每个段、大页和小页的访问权限。

·客户(client)使用页表中的访问权限用于次控(secondarycontrol)。

当多个段或者页从属于一个域时,这些段或者页的访问权限可以很容易的由域来统一控制。存储器采用这种管理策略将不同的存储单元“打包”。

注意

即使不使用提供的虚拟存储功能,仍然可以把这些内核用作简单的存储保护单元。首先将虚拟存储空间直接映射到物理存储空间,然后为每个任务分配一个不同的域,最后使用这些域来保护睡眠任务(通过将它们的域访问设置成不可访问)。

15.5.7与TLB相关的操作

(1)清除TLB

如果操作系统改变了页表中的数据,那么缓存在TLB中的转换数据可能就不再有效了。存储器核有一些CP15命令用于清除TLB,从而使TLB中的数据作废。表15.30是一些可用的命令:清除所有TLB数据,清除指令TLB,清除数据TLB,也可以一次只清除一行TLB数据。

表15.30 清除TLB的CP15命令

命令

MCR指令

Rd的值

支持的内核

使所有TLB无效

MCRp15,0,Rd,c8,c7,0

0

720T、920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

按行使TLB无效

MCRp15,0,Rd,c8,c7,1

要使之无效的虚拟地址

ARM720T

使指令TLB无效

MCRp15,0,Rd,c8,c5,0

要使之无效的虚拟地址

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

按行使指令TLB无效

MCRp15,0,Rd,c8,c5,1

要使之无效的虚拟地址

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

使数据TLB无效

MCRp15,0,Rd,c8,c6,0

要使之无效的虚拟地址

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

按行使数据TLB无效

MCRp15,0,Rd,c8,c6,1

要使之无效的虚拟地址

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

存储器相关文章:存储器原理




关键词: ARM 存储管理单元 MMU

评论


相关推荐

技术专区

关闭