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