3

The ARM720T user manual mentions small and large pages. Since the ARM 720T requires a 64KB page table entry to be duplicated 16 times in the page table, why not place 16 small page (4KB) entries to mimic a 64KB page entry instead of using a large page in the first place?

4

1 回答 1

4

从 ARM720 TRM,

大页面由 64KB 的内存块组成。支持大页面以允许映射大内存区域,同时仅使用 TLB 中的单个条目)。额外的访问控制机制扩展到 16KB 的子页面。

主要好处是一个 64k 条目将只消耗一个 TLB(MMU 页面条目缓存)。TLB 是 64 个条目,因此64*4k = 256kB64*64k = 4MB; 不需要页表查找来解决的内存量显着增加。

有很多缺点。例如,便携式操作系统(及其 API)可能需要较小的页面。如果所有条目都是 64k,则可能会产生碎片。部分条目甚至更好,每个条目代表一个 1MB 块,64MB 适合 TLB。通常,该部分对于虚拟==物理映射会更好。

如果您知道您的系统只有 4MB 可用内存,那么 64k 页面条目可以带来更可靠的性能。即使使用更大的内存大小,中断代码和数据也可以使用 64k 条目和 TLB 锁定注释来避免页表遍历。这可以导致更好的 IRQ 延迟。TLB 是一种有限的资源,因此为中断处理程序使用 4k 条目可能会导致浪费 TLB。使用节条目可能会浪费内存,因为大多数中断代码小于 1MB。

即使没有锁定,经常使用的 64k 条目也更有可能保留在 TLB 中。具有每个任务/进程内存的操作系统可能需要更改 MMU 表,这可能导致 TLB 和缓存刷新和无效。为了简化上下文切换,所有内容都可能无效并刷新。因此,中断时的餐桌走动可能比您想象的更常见。这是使用 MMU 'PID' 功能并仅刷新/使较小的内存区域无效并允许内核代码/数据保留在系统缓存中的动机。调度程序之类的附加代码也将受益于被 64k 条目映射。

注意: ARM720T 可能/可能没有锁定,但一些 ARM CPU 有,并且 CPU 系列之间的 MMU 条目非常相似。这个答案适用于许多不同的 ARM CPU 系列。

于 2016-05-29T15:10:30.673 回答