当我在Cortex-A9 MPCore中调试MMU时,总是看到域访问控制寄存器,但是域的含义是什么?最多16个域?有人可以给我一个链接来解释吗?
TL;DR DACR不仅减少了上下文切换代码路径,而且还可以加快上下文切换发生后的执行速度。
有几个链接解释了域访问控制寄存器或DACR的细节。例如ARM的内存访问权限和域。但是,此页面和许多其他页面没有解释为什么您可能需要此功能;特别是对于使用嵌入式应用程序的人来说。
之前的 ARM 功能(ARM 架构 V5)是PID。此功能的原因与DACR和域相同。MMU 有何用途?
DACR (和PID)只关心第一个(权限分离)。在上下文切换中,操作系统必须管理这种分离。对于大多数 MMU(历史上在 ARM 上),只有两种权限:用户和超级。为了适应多个任务,超级MMU代码必须改变MMU表。这很复杂,因为 ARM 有TLB和缓存,两者都有虚拟地址并依赖于 MMU 表。
DACR (和PID)允许通过单个寄存器写入来更改 MMU 映射。此外,TLB和缓存还具有域 信息(以及PID的修改地址)。这意味着这些条目不需要在上下文切换时刷新(和重新填充)。这些域对于 PID 来说是有利的,因为可以存在多个访问配置文件。例如,当主任务/线程二进制文件被切换出时,共享库代码可以在上下文切换时保持可访问。
比较使用DACR和更新 MMU 表的工作。
这与更改单个寄存器相对。此外,您可能会使整个缓存和 TLB 失效。通过DACR和简短的上下文切换,代码/数据可以保留在 TLB 中的高速缓存和 MMU 页表条目中。例如,具有检查电子邮件任务和电影播放器的系统。
音频/视频的解码需要大量 CPU 和内存。有时,电子邮件客户端会轮询网络服务器以获取信息。通常什么也没有。在这个短暂的过渡期间,可能只需要一小部分(1-4k)检查电子邮件代码;单个 TLB 条目。缓存通常为 32k+,因此大部分音频/视频缓存和 TLB 条目可以保持有效。
因此DACR不仅减少了上下文切换代码路径,而且还可以加快上下文切换发生后的执行速度。
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |