2016-05-29 38 views
2

ARM720T用户手册提到了小页面和大页面。由于ARM 720T需要在页表中将64KB页表条目复制16次,为什么不放置16个小页(4KB)条目来模仿64KB页条目,而不是首先使用大页面?为什么ARM有64KB大页面?

+0

Stackoverflow有很多这个主题的标签。例如,对于这个问题的读者来说,[tag:tlb],[tag:cpu-cache]和[tag:paging]也可能是有趣的。 –

回答

3

从ARM720 TRM,

大页面 包括存储器64KB块。大页面支持 以允许映射 内存的大区域,同时仅使用 TLB中的单个条目。 其他访问控制机制扩展为 到16KB子页面。

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

有很多缺点。例如,一个可移植的操作系统(和它的API)可能需要较小的页面。如果所有条目都是64k碎片可能会导致。该部分条目甚至更好,每个代表在TLB中具有64MB配件的1MB块。通常该部分将更好地用于虚拟==物理映射的

如果您知道您的系统只有4MB的可用内存,那么64k页的条目可以带来更可靠的性能。即使内存容量较大,中断代码和数据也可以使用带有TLB锁定的64k条目note来避免页表格散步。这可能会导致更好的IRQ延迟。 TLB是有限的资源,因此使用4k条目作为中断处理程序可能会导致浪费TLB。使用部分条目可能会浪费内存,因为大多数中断代码是1MB的<。

即使没有锁定,很可能经常使用的64k条目仍将保留在TLB中。具有每个任务/进程内存的操作系统可能需要更改可能导致TLB和缓存刷新和无效的MMU表。为了简化上下文切换,一切都可能失效并刷新。所以一个表中的中断可能比你想象的更普遍。这是使用MMU“PID”功能的动机,并且只会刷新/无效较小的内存区域,并允许内核代码/数据保留在系统缓存中。像调度程序这样的其他代码也将受益于被64k条目映射。

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

相关问题