硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1415|回复: 1
收起左侧

ZYNQ双核A9的MMU内存管理学习之页表条目Page Table Entry Fields,含类似M7内核的MPU内存管理(2021-12-24)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106840
QQ
发表于 2021-12-24 00:27:36 | 显示全部楼层 |阅读模式
Memory Access Permissions (AP and APx)

页表条目中的访问权限(AP 和 APX)位给出了一个访问权限页。 没有必要许可(或哪些故障)的访问被中止。 在一个数据上访问,这会导致精确的数据中止异常。 在取指令时,访问被标记为中止,并且如果指令在执行之前没有随后被刷新,则预取中止例外。 故障位置地址及故障原因信息存储CP15(故障地址和故障状态寄存器)中。 然后中止处理程序可以采取适当的行动。

1111.png

Memory Attributes (TEX, C and B bits)

1111.png

2222.png

Domains

域是内存区域的集合。 域仅对 L1 页表条目有效。 L1页表条目格式支持 16 个域,并且需要定义转换的软件表将每个内存区域分配给一个域。 domain 字段指定了 16 个域中的哪一个条目在,域访问控制寄存器 (DACR) 中的一个两位字段定义了每个域的允许访问。 每个域的可能设置是:

(1)No access  任何使用转换表描述符的访问都会产生域错误。

(2)Clients – 在使用转换表描述符的访问中,访问权限属性被检查。 因此,访问可能会产生权限错误。

(3)Managers – 在使用转换表描述符的访问中,访问权限属性不检查。 因此,访问不会产生权限错误。

Shareable bit (S)

该位确定转换是否用于可共享内存。 S = 0,内存位置为不可共享,而 S = 1,它是可共享的。

Non-Global Region Bit (nG)

转换表条目中的 nG 位允许将虚拟内存映射划分为全局和非全局域。每个非全局区域 (nG = 1) 都有一个关联的地址空间标识符(ASID),这是操作系统分配给每个单独任务的编号。如果 nG 位设置为特定页面,该页面与特定应用程序相关联,而不是全局的。这意味着当 MMU 执行转换时,它同时使用虚拟地址和 ASID 值。当一个页表遍历发生,TLB 更新,条目被标记为非全局,ASID 值除了正常的转换信息外,还存储在 TLB 条目中。后续的 TLB 查找如果当前 ASID 与存储在条目中的 ASID 匹配,则仅匹配该条目。这意味着您可以为特定页面(标记为非全局)有多个有效的 TLB 条目,但是不同的 ASID 值。这显着减少了上下文切换的软件开销,因为它避免需要刷新片上 TLB

Execute Never bit (xN)

当一个内存位置在客户端域中被标记为从不执行(其 XN 属性设置为 1)时,指令不允许读取/预取。 任何读取敏感的内存区域都必须是标记为从不执行,以此来避免推测性预取访问内存的可能性地区。 例如,对应于读敏感外设的任何内存区域必须是标记为从不执行。

TLB Organization

Cortex-A9 MMU 包括两个级别的 TLB,其中包括一个统一的 TLB用于指令和每个数据以及单独的Micro TLB。Micro TLB 作为第一级 TLB,每个 TLB 有 32 个完全关联的条目。 如果指令提取或加载/存储地址在相应的micro TLB,访问统一或主TLB。 统一的主 TLB 提供了 2 路关联2x64 条目表(128 个条目)并支持使用逐条目锁定模型的四个可锁定条目。

TLB 使用伪循环替换策略来确定 TLB 中的哪个条目应该是在未命中的情况下更换。与其他一些需要软件来管理 TLB 更新的 RISC 处理器不同驻留在内存中的页表,Cortex-A9 中的主 TLB 支持硬件页表在 L1 数据缓存中执行查找。这允许缓存页表。MMU 可以配置为在可缓存区域中执行硬件转换表,遍历转换表基址寄存器中的 IRGN 位。如果 IRGN 位的编码是回写,然后执行 L1 数据缓存查找并从数据缓存中读取数据。如果IRGN 位的编码是直写的或不可缓存的,那么对外部存储器的访问是执行。TLB 条目可以是全局的,也可以使用 ASID 分配给特定的进程或应用程序与这些过程相关联。 ASID 使 TLB 条目在上下文切换期间保持驻留,避免随后重新加载它们的要求。

注:Arm Linux 内核在所有 CPU 上全局管理 8 位 TLB ASID 空间,而不是在每个 CPU  basis。 每个新进程的 ASID 都会增加。 当 ASID 翻转时 (ASID = 0)TLB 刷新请求被发送到两个 CPU。 但是,只有处于上下文中间的 CPUswitch 立即更新其当前的 ASID 上下文。 另一个 CPU 继续使用它的当前预翻转 ASID,直到发生调度间隔,然后上下文切换到新的过程。TLB 维护和配置操作通过专用协处理器控制,CP15集成在内核中。 这个协处理器提供了一个标准的配置机制。

Micro TLB

页表信息的第一级缓存是一个包含 32 个条目的Mircro TLB,在每个指令和数据端。 这些块提供了一个时钟周期内可完成的虚拟完全关联查找地址。micro TLB 将物理地址返回给缓存地址比较,同时也会检查表示预取中止或数据中止的保护属性。所有与 TLB 相关的主要操作都会影响指令和数据微 TLB,导致崩溃。 同样,上下文 ID 寄存器的任何更改都会导致Micro TLB 被刷新。下一节中解释的主要或统一 TLB 应在 CPU 复位后失效,并且在 MMU 启用之前。

Main TLB

主 TLB 是 TLB 结构中的第二层,用于捕获来自Micro TLB 的未命中。 它还提供可锁定转换条目的集中来源。指令和数据Mirco TLB 的缺失由统一的主 TLB 处理。 访问主 TLB 采取可变数量的周期,根据来自每个Micro的竞争请求TLB 和其他依赖于实现的因素。

主 TLB 的可锁定区域中的条目可以以单个条目的粒度进行锁定。 只要由于可锁定区域不包含任何锁定条目,因此可以分配非锁定区域用于增加总体主 TLB 存储大小的条目


Translation Table Base Register 0 and 1

当使用各自的页表管理多个应用程序时,需要有L1 页表的多个副本,每个应用程序一个。其中每个大小为 16 KB。最多每个表中的条目是相同的,因为通常只有一个内存区域是特定于任务,内核空间在每种情况下都保持不变。此外,如果有需要修改一个全局页表条目,需要在每个表中进行更改。为了帮助减少这些问题的影响,可以使用第二个页表基址寄存器。 CP15包含两个页表基址寄存器,TTBR0 和 TTBR1。一个控制寄存器(TTB Control寄存器)用于编程 0 到 7 范围内的值。该值(由 N 表示)告诉 MMU 它应该如何检查虚拟地址的许多高位以确定两个 TTB 寄存器中的哪一个利用。当 N 为 0(默认值)时,所有虚拟地址都使用 TTBR0 进行映射。当 N 在 1-7 的范围内时,硬件查看虚拟地址的最高有效位。如果 N 个最高有效位都为零,则使用 TTBR0,否则使用 TTBR1。

TTBR0 通常用于特定于进程的地址。在上下文切换时,TTBR0 更新为指向新上下文的第一级转换表,如果此更改,则更新 TTBCR改变翻译表的大小。该表的大小范围从 128 字节到 16 KB。TTBR1 用于在上下文切换时不会更改的操作系统和 I/O 地址。这此表的大小始终为 16 KB。

TLB Match Process

每个 TLB 条目包含一个虚拟地址、一个页面大小、一个物理地址和一组内存特性。 每个都被标记为与特定的应用程序空间相关联,或对所有应用程序空间都标记为全局应用空间。 如果修改后的虚拟地址 (MVA) 的位 [31: N] 匹配,则 TLB 条目匹配,其中 N 是 TLB 条目页面大小的 log2。 它要么被标记为全局,要么匹配的 ASID当前的 ASID。当这些条件为真时,TLB 条目匹配:

• 其虚拟地址与所请求地址的虚拟地址相匹配。
• 其非安全TLB ID (NSTID) 与MMU 请求的安全或非安全状态相匹配。
• 其ASID 与当前ASID 匹配或者是全局的。

操作系统必须确保在任何时候最多匹配一个 TLB 条目。 TLB 可以存储基于以下块大小的条目:

Supersections: 16 MB blocks of memory
Sections: 1 MB blocks of memory
Large pages: 64 KB blocks of memory
Small pages: 4 KB blocks of memory

支持 Supersections、sections 和 large pages 以允许映射大的区域内存,而只使用 TLB 中的一个条目。 如果在TLB,然后由硬件自动读取转换表并在TLB中放置一个映射。(转换表条目在转换表基址寄存器 0 和 1 中详细讨论,



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106840
QQ
 楼主| 发表于 2021-12-24 01:01:03 | 显示全部楼层
内容有点多,整理完毕
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 02:55 , Processed in 0.185678 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表