当我在Cortex-A9 MPCore中调试MMU时,总是看到域访问控制寄存器,但是域是什么意思?最多16个域?
任何人都可以给我一个链接来解释这个吗?
最佳答案
TL; DR DACR 不仅减少了上下文切换代码路径,而且还可以在上下文切换发生后加快执行速度。
有几个链接说明了域访问控制寄存器或 DACR 的详细信息。例如ARM's Memory access permissions and domains。但是,此页面和许多其他页面并未解释为什么您可能需要此功能;特别是供嵌入式应用程序使用的人们使用。
先前的ARM功能(ARM体系结构V5)是PID。使用此功能的原因与 DACR 和域相同。 MMU的作用是什么?
DACR (和PID)仅与第一个(特权分离)有关。在上下文切换中,操作系统必须管理这种分离。对于大多数MMU(历史上在ARM上),只有两个特权:用户特权和 super 特权。为了容纳多个任务, super 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 不仅减少了上下文切换代码路径,而且还可以在上下文切换发生后加快执行速度。
关于arm - ARM 架构领域意味着什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36613000/