领域架构意味着什么

时间:2016-04-14 02:49:59

标签: arm mmu cortex-a

当我在Cortex-A9 MPCore中调试MMU时,我总是看到域访问控制寄存器,但是,域意味着什么?最多16个域名? 任何人都可以给我一个解释这个的链接?

1 个答案:

答案 0 :(得分:3)

TL; DR DACR 不仅会减少上下文切换代码路径,还可以在上下文切换发生后加快执行速度。

有几个链接可以解释域访问控制寄存器 DACR 的细节。例如ARM's Memory access permissions and domains。但是,此页面和许多其他页面都没有解释为什么您可能需要此功能;特别适合人们使用嵌入式应用程序。

先前的ARM功能(ARM体系结构V5)是 PID 。此功能的原因与 DACR 和域相同。什么是MMU用于?

  • 权限分离 - 或者给某些实体(任务,线程等)访问内存和其他有限(只读)或不访问。
  • 内存重映射 - 虚拟到物理转换允许稀疏/分离的内存变得连续。
  • 分页 - 故障处理程序可以通过权限较低的代码交换进出内存。
  • 访问行为 - MMU可以指定内存是否可缓存,读/写,是否应缓冲等。

DACR (和 PID )仅关注第一个(权限分离)。在上下文切换中,OS必须管理此分离。对于大多数MMU(历史上在ARM上),只有两个权限是用户和超级。为了适应多个任务,超级MMU代码必须alter the MMU table。这很复杂,因为ARM有一个 TLB 缓存,它们都有虚拟地址并依赖于MMU表。

DACR (和 PID )允许MMU映射通过单个寄存器写入进行更改。此外, TLB 缓存还具有信息(以及用于PID的修改地址)。这意味着不需要在上下文切换上刷新(和重新填充)这些条目。 对PID有利,因为可以存在多个访问配置文件。例如,当主要任务/线程二进制文件被切换时,共享库代码可以在上下文切换中保持可访问。

将工作与 DACR 进行比较,而不是更新MMU表。

  1. 至少更改 L1 页面表以映射正确的配置文件。
  2. 清除/使页面表更新中的 L1 表和其他表无效(见下文)。
  3. 使TLB条目无效(为简单起见,很可能是整个事情)。
  4. 使MMU表中的缓存条目无效;可能是整个事情。
  5. 这与更改单个寄存器相对。此外,您可能会使整个缓存和TLB无效。使用 DACR 和简短的上下文切换,代码/数据可以保留在TLB中的缓存和MMU页表条目中。例如,具有检查电子邮件任务和电影播放器​​的系统。

    音频/视频的解码是高度CPU和内存密集型的。有时,电子邮件客户端将轮询网络服务器以获取信息。通常什么都没有。在此短暂过渡期间,可能只需要一小部分(1-4k)的检查电子邮件代码;单个TLB条目。缓存通常为32k +,因此大部分音频/视频缓存和TLB条目都可以保持有效。

    因此 DACR 不仅会减少上下文切换代码路径,还可以在上下文切换发生后加快执行速度。