gpt4 book ai didi

linux - arm linux中MMU页表中的缓存属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:13 25 4
gpt4 key购买 nike

我想知道操作系统如何在 Arm v7 和 armv8 的 MMU 页表中的页面的属性回写和写入之间做出决定。谢谢

最佳答案

首先,您可能想了解每个是什么。 Ref1 Ref2

  • 直写 - 立即将数据写入 RAM。
  • 写回 - 在驱逐时写入的数据。

制作直写缓存(在硬件中)比回写更容易。出于这个原因,一些较旧的 ARM CPU 可能有 a hard coded write through only cache . ARMv4/5 有 this as an option .到 ARMv7/8 时,write back 的逻辑与其他逻辑相比非常小,因此 CPU/MMU 都支持。

mmu.c中还有一些内核命令行选项,如cachepolicynocachenowb。 ;这些仅适用于 early boot并且主要用于较旧的 ARM CPU,但您仍然可以将它们用于 ARMv7/8。

一般来说,WRITEBACK 非常有值(value),因为大多数系统都有 SDRAM,这为一次写入多个条目提供了奖励。通常代码会执行读取-修改-写入 循环;也许在同一个内存或结构上多次。典型的高速缓存行与 SDRAM 突发长度相对应(并非巧合)。

在某些情况下,例如带有 DMA 的 LCD,您可能希望使用 WRITETHROUGH,因此通常这些选项由内核分配器选择。它将为非架构 API 选择正确的属性。

用户空间总是想要并获得WRITEBACK 内存。某些 mmap LCD 帧缓冲区可能是WRITETHROUGH,但更有可能是未缓存。

I am wondering how the os [linux] decides between write back and write through attributes for a page in the MMU page table in Arm v7 and armv8.

决定取决于内存的使用。大多数情况下,WRITEBACK 模式将在用户空间中使用,除了一些可能暴露驱动程序内存的罕见情况。即,对于系统中仅由 CPU 使用的内存,WRITEBACK 始终是最佳选择。只有当有其他东西在查看内存(如 LCD DMA)时,WRITETHROUGH 才会更好。对于 LCD DMA,您希望写入内存的内容立即显示在屏幕上。

关于linux - arm linux中MMU页表中的缓存属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com