ARM720T用户手册中提到了小页面和大页面。既然ARM 720T要求64KB页面表条目在页面表中重复16次,为什么不放置16个小页面(4KB)条目来模拟64KB页面条目,而不是首先使用大页面呢?
来自ARM720 TRM,
大页面由64KB的内存块组成。大页面是支持映射在TLB)。扩展了额外的访问控制机制到16KB的子页。
主要好处是64k条目将只消耗一个TLB(MMU页面条目缓存)。TLB是64个条目,因此64*4k = 256kB
相对于64*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系列。